Agents are becoming the unit teams ship, and they need to talk to each other across boundaries - a procurement agent delegating a credit check to a finance agent run by another department or another company. A2A standardises that conversation. An agent publishes a card describing what it does, how to reach it and how to authenticate; a client agent sends it a task; the two exchange messages and artefacts until the task is complete, failed or needs input; progress streams back as it happens.
A2A and MCP solve different halves of the problem. MCP connects a model to tools and data - the model calls a function and gets a result. A2A connects agents to agents - a peer that reasons, may take many steps and may ask a question back. An agent usually speaks both: MCP downwards to its tools, A2A sideways to its peers. Neither decides which agent or tool should get a given request; that is the router's job.
A router imports an A2A agent from its card. The card's skills, description and endpoints become a target in the catalogue with the agent kind, its domains and the actions it serves, so a request that matches is routed to it with the same scoring, policy and trace as a model - and a hard constraint can keep regulated requests away from an external agent entirely. Resource limits bound the delegated task's steps, time and cost; the trace records what was delegated and what came back.
Interoperability also means exposure. An agent reachable over A2A can be sent a poisoned task, and an agent that delegates must trust the result it gets. The guard that scores requests for injection applies to inbound tasks, tool-parameter provenance applies to values an external agent returns, and the open capability manifest lets a team state exactly what an agent may be asked to do before it appears in anyone's catalogue.