AAE Extension for A2A, Version 1
An A2A server agent that declares this extension verifies an AAE (Agent Authorization Envelope) with the AAE -02 Section 5 verification algorithm before it performs a skill, and reports the outcome through A2A task states and errors. An agent can also publish its own AAE in its Agent Card.
https://moltrust.ch/extensions/aae/v1
| Extension URI | https://moltrust.ch/extensions/aae/v1 |
|---|---|
| Status | Draft v1 |
| A2A baseline | A2A Protocol v1.0.1 (tag v1.0.1, commit 3303592) |
| AAE baseline | draft-kroehl-agentic-trust-aae-02 (AAE -02) |
| Editor | Lars Kroehl, CryptoKRI GmbH (MolTrust) |
| License | Apache License 2.0 |
Documents
| Specification | spec/aae-a2a-extension-v1.md |
|---|---|
| Repository | MoltyCel/aae-a2a-extension: specification and reference implementation (a2a-sdk 1.2.2, JSON-RPC binding) |
| AAE -02 | draft-kroehl-agentic-trust-aae-02, IETF Datatracker |
| A2A v1.0.1 | a2aproject/A2A, tag v1.0.1 |
The URI
The URI is an identifier. Clients and servers compare it as an exact string, and HTTP access to it is not required for interoperability. It is the only URI for this version.
Version 1 is bound to AAE -02. A change that an existing implementation would not accept requires a new URI. A server does not accept a params.draft value it does not implement and does not fall back to another version.
How a request runs
- The server lists the URI in
AgentCard.capabilities.extensions. Itsparamscarrydraft(draft-kroehl-agentic-trust-aae-02),audience, andskills, which maps each gated skill to the AAE mandate action it requires.accepted_issuers,did_methods,max_ancestorsandown_aaeare optional. - The client activates the extension with the
A2A-Extensionsheader and lists the URI inMessage.extensions. - The presentation message carries the AAE as a compact JWS in
Message.metadata[URI].aaeand one data part{"skill", "transaction"}. The server takes the action, amount and every other parameter of the invocation from that part only. - After -02 §5 steps 1–3 the server returns a task in
TASK_STATE_AUTH_REQUIREDwith a challenge: nonce, audience and the id of the presented AAE (-02 §5 step 4). - The client checks the audience and the AAE id, signs the challenge with a key of the DID the AAE was issued to, and sends the response on the same task. The server runs -02 §5 steps 1–9.
- On acceptance the task proceeds and may carry a receipt; this version does not sign it. A failed verification moves the task to
TASK_STATE_REJECTEDwith the failing step and a reason code, and the skill does not run.
Protocol violations are A2A errors and create no task: ExtensionSupportRequiredError (-32008) when a required extension is not activated, InvalidParamsError (-32602) when the extension data is missing or malformed.
Conformance
A server conforms if it implements Sections 4 to 8 of the specification and runs -02 §5 as specified there. Its -02 §5 implementation should pass the test vectors in MoltyCel/aae-conformance-vectors, release v1.4.0. The reference implementation runs both vector sets in CI. A client conforms if it implements Sections 5 and 6 and the client checks of Section 6.3.