⤓ raw markdown (machine contract)
Adapter V2 = agent interop. Projection of the canonical DID (SPEC-identity-v0.1 §2) into an A2A Agent Card. Normative contract, not modifiable in place: any change =
a2a-v2. Reputation is linked, never copied (always fresh, verifiable at the source).
https://maxiaworld.app/.well-known/agent.json (standard A2A discovery, root of the agent domain).service[#a2a] of the DID Document: https://maxiaworld.app/a2a/<did>.json (DID resolution).Content-Type: application/json. UTF-8.x-aicodex. The core remains W3C-pure (DID/VC); A2A is a disposable projection.The Agent Card projects one canonical Ed25519-derived DID (SPEC-identity §2, did:key multicodec 0xED01 or did:web). No A2A identity exists without a DID previously registered via the MCP V1 adapter (register). The Agent Card is a derivative of the registry, never an identity source.
{
"name": "<nom agent>",
"description": "<description courte>",
"url": "https://<endpoint A2A de l'agent>",
"version": "<version agent>",
"provider": { "organization": "<org|null>", "url": "<url|null>" },
"capabilities": { "streaming": false, "pushNotifications": false },
"skills": [],
"x-aicodex": {
"did": "did:key:z6Mk...",
"reputationCredentialUrl": "https://maxiaworld.app/reputation/did:key:z6Mk...",
"spec": "https://maxiaworld.app/spec/SPEC-adapter-a2a-v1.md",
"profile": "aicodex-norm-v1"
}
}
name, description, url, version, provider, capabilities, skills: projected from agent metadata (SPEC-identity §2.2) and agent configuration. Outside the AI Codex normative scope (governed by A2A). AI Codex does not validate or sign them.
x-aicodex (normative, octet-stable)Mandatory block for a card to be AI Codex-compliant. Frozen fields:
| Field | Type | Rule |
|---|---|---|
did |
string | Exact canonical DID (SPEC-identity §2), resolvable via resolve MCP. No prefix or suffix. |
reputationCredentialUrl |
string | Absolute HTTPS URL of the live Reputation VC for the did. Link, never inline value. |
spec |
string | Absolute URL of this document (adapter version anchor). |
profile |
string | "aicodex-norm-v1" exact (normalization profile, SPEC-identity §3.3). |
No other field in x-aicodex in v1. No score, components field, nor VC copy: forbidden in the card (otherwise non-conformant, §6). A reputation frozen in a card would be stale and unverifiable: only the link is permitted.
An A2A consumer obtains trust as follows, without AI Codex being in the A2A data path:
/.well-known/agent.json or service[#a2a]).x-aicodex.did. Resolve it via the resolve MCP adapter → W3C DID Document (SPEC-identity §2.1). Verify that the DID Document contains a service[#a2a] consistent with the card URL.x-aicodex.reputationCredentialUrl (equivalent to the get_reputation MCP: VC always present for a known DID, floor values §3.3 if no activity).eddsa-jcs-2022 signature from issuer did:web:maxiaworld.app, credentialSubject.id == x-aicodex.did, validUntil not expired, credentialStatus not revoked (StatusList2021, SPEC-identity §3.2). AI Codex is not required for this verification.The card never acts as authority on reputation. It only indicates where to verify it at the source.
Served over HTTP (card = static resource). JSON body { "code": "...", "message": "..." }, generic message (no internal state leak; detail logged server-side).
| Code | HTTP | Meaning |
|---|---|---|
E_CARD_NOT_FOUND |
404 | No Agent Card for this location / this DID |
E_DID_MALFORMED |
400 | Requested DID non-conformant with did:key/did:web Ed25519 |
E_DID_NOT_FOUND |
404 | DID unknown to the registry (no card derivable) |
E_CARD_NONCONFORMANT |
422 | Card present but x-aicodex missing/invalid (server state, never served as-is in prod) |
E_RATE_LIMITED |
429 | Quota exceeded (§7) |
E_INTERNAL |
500 | Server error, no detail disclosed |
No other code in v1. No code disclosing reputation via the error channel (reputation passes only through the linked VC).
An A2A Card is AI Codex-compliant if and only if: (a) served at both locations in §1 with identical content, (b) x-aicodex present and conformant per §3.3 (4 exact fields, nothing more), (c) reputationCredentialUrl is a resolvable link to the live VC, no inline VC or score, (d) x-aicodex.did resolves to a DID Document §2.1 whose service[#a2a] is consistent. All four are necessary and sufficient.
E_RATE_LIMITED (never a silent error).skills ≤ 64 entries (standard A2A field, bounded for DoS, not interpreted by AI Codex).The Agent Card exposes no payment rails, no crypto addresses, no network preferences. It carries only identity (DID) and the reputation pointer. Rails remain outside the core and outside this adapter (neutrality condition, SPEC-identity §1).
Adapter V3 AP2: the Reputation VC linked here becomes an attestation attachable to an AP2 mandate, with no reverse dependency. See SPEC-adapter-ap2-v1.md.
Frozen specification. The raw .md at the same path is the canonical machine artifact referenced by DID documents and A2A cards — rendered here for humans only.