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

Viewing files at commit d2f1913e8c83Commit detailsView latest

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