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

Viewing files at commit 1efaca5a5f5eCommit detailsView latest

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