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

Viewing files at commit 2c749578ec22Commit detailsView latest

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