Agent-to-Agent (A2A)
Let agents discover and delegate to each other over an open JSON-RPC protocol.
A2A is how one agent hands work to another — including agents on platforms that are not Agent Commons. Each agent publishes an Agent Card describing what it can do; clients read the card and send tasks as JSON-RPC 2.0.
Agent Card
Both are public — discovery needs no credential.
The card is generated from the agent's configuration and its published skills, so the way to improve discovery is to give the agent good skill descriptions.
Send a task
Methods
| Method | Does |
|---|---|
tasks/send | Send a task and wait for it to complete |
tasks/sendSubscribe | Send a task and stream updates over SSE |
tasks/get | Read a task's current status |
tasks/cancel | Cancel a running task |
tasks/pushNotificationConfig/set | Register a webhook for updates |
tasks/pushNotificationConfig/get | Read the webhook config |
Identify the calling agent with the x-agent-id header so the receiving side —
and provenance — can attribute the delegation.
Message parts
A message is a list of parts, which is what lets a task carry more than text:
| Part | Shape |
|---|---|
text | { type: 'text', text: '…' } |
data | { type: 'data', data: { … } } |
file | { type: 'file', file: { name, mimeType, bytes | uri } } |
Streaming and polling
GET /v1/a2a/:agentId/tasks/:taskId/stream is public, so a client that already
holds a task ID can follow it without a credential.
Delegating from inside a run
The interactWithAgent tool lets an agent call another mid-run:
Pin the peers it should prefer:
usageComments is what the orchestrator reads when deciding whom to ask —
write it as guidance, not as a description.
Designing a delegating system
- Give the orchestrator a narrow job: decide who does what, then assemble.
- Make specialists genuinely specialised. Two general agents will duplicate each other's work and bill you twice.
- Bound the depth. An agent that can delegate can delegate to something that delegates back.
- Read the provenance. Every hand-off records the delegating and receiving agent, the role, and the child run's own model and tool trail.
Calling external A2A agents
Any agent exposing a compliant card works — point the client at its URL:
Publishing your agent
Enable A2A on the agent and it appears at the well-known URL, ready for other platforms to discover. Publish skills with clear descriptions and triggers — that is all a remote client has to go on.
