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

Viewing files at commit ce192002f08aCommit detailsView latest

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