A2A exists so an orchestrator can delegate to a worker it did not write. The worker publishes what it can do; the orchestrator matches a sub-task to a declared skill and hands it over with an identifier it controls.
Discovery through the agent card
A worker serves an agent card describing its name, version, capabilities (streaming, push notifications) and skills, each with declared input and output modes. The orchestrator fetches it and negotiates: use streaming if both support it, fall back if not.
Task state is the contract
Generating the task id on the orchestrator side matters more than it looks. It means a worker restart does not lose the task, and a duplicate send is idempotent rather than a second unit of work.
The limits that keep delegation safe
- —Cap delegations per run — a fixed budget, not an emergent one.
- —A worker must never be able to start another orchestrator; that is how depth becomes unbounded.
- —Every delegation inherits the parent run's deadline rather than getting a fresh one.




