MAXIA.AI CodexIdentitySpecsIssuer DID

⤓ raw markdown (machine contract)

AI Codex — A2A Adapter v1 (FROZEN)

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).

1. Transport & envelope

2. Binding to the canonical DID (frozen)

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.

3. Agent Card (frozen structure)

3.1 Form

{
  "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"
  }
}

3.2 Standard A2A fields

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.

3.3 Extension 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.

4. Consumption flow (frozen)

An A2A consumer obtains trust as follows, without AI Codex being in the A2A data path:

  1. Read the Agent Card (/.well-known/agent.json or service[#a2a]).
  2. Extract 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.
  3. Fetch the Reputation VC at x-aicodex.reputationCredentialUrl (equivalent to the get_reputation MCP: VC always present for a known DID, floor values §3.3 if no activity).
  4. Verify the VC off-platform: 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.

5. Error codes (frozen)

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).

6. Adapter conformance

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.

7. Quotas & sizes (frozen)

8. Neutrality

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).

9. Next

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.