Flow · p2p
Agent-to-agent tasks (A2A)
Discovery and task delegation between opaque agents. Authentication is declared, not invented: OAuth, OIDC, mTLS, or API keys.
Use the hop list beside the stage, or the phase labels, to jump. Every hop has Now, Why, the RFC, and chips — none are skipped.
Actors
Client agent · Server agent · Enterprise AS (optional)
Sequence
Animated sequence · p2p
A2A — Is the Agent Card a login?
Agent-to-agent tasks (A2A)
Discovery and task delegation between opaque agents. Authentication is declared, not invented: OAuth, OIDC, mTLS, or API keys.
Now · 1/4· Discover· A2A v1.0You are here
Client agent→Server agent·GET /.well-known/agent-card.json — do not skip the card
The client fetches the Agent Card. This GET is discovery, not login. A JWS, if present, is tamper evidence — not a request credential.
Why The card is how you learn the advertised URL, skills, and securitySchemes. Calling a guessed endpoint without reading the card is not A2A.
Take the catalog off the door before you try to order.
- Agent Card from the spec
- /.well-known/agent-card.json from the spec
- JWS from the spec
Solid = from the spec
This is p2p communication, not p2p AAuth. Inside a mesh you may additionally pass WIMSE proofs or transaction tokens. Implicit and password OAuth flows on Agent Cards are deprecated.
Transcript
- 1
DiscoverClient agent→Server agentA2A v1.0
GET /.well-known/agent-card.json — do not skip the card
The client fetches the Agent Card. This GET is discovery, not login. A JWS, if present, is tamper evidence — not a request credential.
Why The card is how you learn the advertised URL, skills, and securitySchemes. Calling a guessed endpoint without reading the card is not A2A.
Take the catalog off the door before you try to order.
- Agent Card
- /.well-known/agent-card.json
- JWS
- 2
DiscoverClient agent→Client agentA2A v1.0
Reads securitySchemes, skills, and the advertised endpoint URL
Parse the card: skills, securitySchemes, url. Nothing has authenticated yet. This is not AAuth Signature-Key.
Why Do not skip this read. securitySchemes declare OAuth, OIDC, mTLS, or API keys — obtained out of band.
Read the menu: hours, dishes, and which pass the kitchen wants.
- securitySchemes
- skills
- url
- 3
GrantClient agent→Enterprise AS (optional)OAuth 2.1
If the card says OAuth/OIDC, obtain a token out of band
Talk to an enterprise AS if the card said OAuth. Client credentials here have no user — that is still not AAuth identity-based access.
Why Optional if securitySchemes named mTLS or an API key instead. A2A does not invent a credential format. Implicit and password flows on Agent Cards are deprecated. Full code+PKCE is the OAuth 2.1 sequence.
Go to the ordinary desk for the pass the catalog asked for.
- securitySchemes
- out of band
- OAuth / OIDC / mTLS
- 4
CallClient agent→Server agentA2A v1.0
HTTP to the advertised endpoint: authenticated A2A operation + A2A-Version
JSON-RPC / gRPC / HTTP+JSON plus A2A-Version. If the card said authorization code, this hop became user-delegated while still being A2A communication.
Why The request goes to the url the card advertised. Do not forward caller credentials in-band down a chain (A2A §7.6.3).
Place the order at the kitchen the menu named, with the pass the menu asked for.
- A2A-Version
- url
- task
- not AAuth p2p
Caveats
This is p2p communication, not p2p AAuth. Inside a mesh you may additionally pass WIMSE proofs or transaction tokens. Implicit and password OAuth flows on Agent Cards are deprecated.
Why this hop looks this way
A2A v1.0 is how agents talk: Agent Cards, skills, tasks, JSON-RPC/gRPC/HTTP+JSON. Authentication is declared, not invented. A signed card is tamper evidence.
If the card says OAuth client credentials, the hop has no user — that is peer access using OAuth as a credential format, not AAuth identity-based access. If the card says authorization code, the hop became user-delegated while still being A2A communication.
In-band credential exchange across a chain of A2A agents exposes secrets to every hop (A2A §7.6.3). Prefer out-of-band.