The AI trust layer between agents: identity, agreements, safeguards, and outcome intelligence for A2A.

Viewing files at commit 3f140fdd2001Commit detailsView latest

schemas/v0.1/public_agent_card.schema.json 224 lines · 5.8 KB · json
1
{
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
  "type": "object",
4
  "properties": {
5
    "protocolVersion": {
6
      "type": "string",
7
      "const": "0.1"
8
    },
9
    "agentId": {
10
      "type": "string",
11
      "minLength": 1
12
    },
13
    "name": {
14
      "type": "string",
15
      "minLength": 1
16
    },
17
    "description": {
18
      "type": "string"
19
    },
20
    "framework": {
21
      "type": "string",
22
      "minLength": 1
23
    },
24
    "agentVersion": {
25
      "type": "string",
26
      "minLength": 1
27
    },
28
    "capabilities": {
29
      "type": "array",
30
      "items": {
31
        "type": "string"
32
      }
33
    },
34
    "limitations": {
35
      "type": "array",
36
      "items": {
37
        "type": "string"
38
      }
39
    },
40
    "assurance": {
41
      "type": "string",
42
      "enum": [
43
        "oauth_authenticated",
44
        "cryptographically_verified"
45
      ]
46
    },
47
    "agentMode": {
48
      "default": "persistent_runtime",
49
      "type": "string",
50
      "enum": [
51
        "persistent_runtime",
52
        "temporary_chat"
53
      ]
54
    },
55
    "transports": {
56
      "type": "array",
57
      "items": {
58
        "type": "object",
59
        "properties": {
60
          "protocol": {
61
            "type": "string",
62
            "const": "A2A/1.0"
63
          },
64
          "protocolBinding": {
65
            "default": "JSONRPC",
66
            "type": "string",
67
            "minLength": 1
68
          },
69
          "endpoint": {
70
            "type": "string",
71
            "format": "uri"
72
          },
73
          "managedBy": {
74
            "default": "agent",
75
            "type": "string",
76
            "enum": [
77
              "agent",
78
              "openclasp"
79
            ]
80
          }
81
        },
82
        "required": [
83
          "protocol",
84
          "protocolBinding",
85
          "endpoint",
86
          "managedBy"
87
        ],
88
        "additionalProperties": false
89
      }
90
    },
91
    "slug": {
92
      "type": "string",
93
      "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
94
    },
95
    "profileUrl": {
96
      "type": "string",
97
      "format": "uri"
98
    },
99
    "cardUrl": {
100
      "type": "string",
101
      "format": "uri"
102
    },
103
    "a2aAgentCardUrl": {
104
      "type": "string",
105
      "format": "uri"
106
    },
107
    "extensionUri": {
108
      "type": "string",
109
      "format": "uri"
110
    },
111
    "presence": {
112
      "type": "object",
113
      "properties": {
114
        "status": {
115
          "type": "string",
116
          "enum": [
117
            "online",
118
            "offline"
119
          ]
120
        },
121
        "lastSeenAt": {
122
          "type": "string",
123
          "format": "date-time",
124
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
125
        },
126
        "checkedAt": {
127
          "type": "string",
128
          "format": "date-time",
129
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
130
        }
131
      },
132
      "required": [
133
        "status",
134
        "checkedAt"
135
      ],
136
      "additionalProperties": false
137
    },
138
    "verification": {
139
      "type": "object",
140
      "properties": {
141
        "status": {
142
          "type": "string",
143
          "const": "verified"
144
        },
145
        "method": {
146
          "type": "string",
147
          "const": "openclasp_oauth_account"
148
        },
149
        "verifiedAt": {
150
          "type": "string",
151
          "format": "date-time",
152
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
153
        },
154
        "verificationKeyUrl": {
155
          "type": "string",
156
          "format": "uri"
157
        }
158
      },
159
      "required": [
160
        "status",
161
        "method",
162
        "verifiedAt"
163
      ],
164
      "additionalProperties": false
165
    },
166
    "publishedAt": {
167
      "type": "string",
168
      "format": "date-time",
169
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
170
    },
171
    "updatedAt": {
172
      "type": "string",
173
      "format": "date-time",
174
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
175
    },
176
    "platformAttestation": {
177
      "type": "object",
178
      "properties": {
179
        "algorithm": {
180
          "type": "string",
181
          "const": "Ed25519"
182
        },
183
        "keyId": {
184
          "type": "string",
185
          "minLength": 1
186
        },
187
        "value": {
188
          "type": "string",
189
          "minLength": 1
190
        },
191
        "digest": {
192
          "type": "string",
193
          "pattern": "^[a-zA-Z0-9_-]{43}$"
194
        }
195
      },
196
      "required": [
197
        "algorithm",
198
        "keyId",
199
        "value",
200
        "digest"
201
      ],
202
      "additionalProperties": false
203
    }
204
  },
205
  "required": [
206
    "protocolVersion",
207
    "agentId",
208
    "name",
209
    "description",
210
    "framework",
211
    "agentVersion",
212
    "capabilities",
213
    "limitations",
214
    "assurance",
215
    "agentMode",
216
    "transports",
217
    "cardUrl",
218
    "a2aAgentCardUrl",
219
    "extensionUri",
220
    "publishedAt",
221
    "updatedAt"
222
  ],
223
  "additionalProperties": false
224
}