A2A Protocol
Google's Agent-to-Agent (A2A) protocol — now at v1.2 with 150+ organizations in production — standardizes how agents discover, authenticate, and communicate across service boundaries using JSON-RPC over HTTP. Covers the Protocol Triangle (A2A, MCP, AG-UI), the message-based API, signed Agent Cards, LangGraph integration, and production failure modes.
Quick Reference
- →A2A v1.2 is a JSON-RPC-over-HTTP protocol by Google, now governed by the Linux Foundation's AAIF with 150+ orgs in production
- →Communication is message-based: SendMessage (blocking) and SendStreamingMessage (SSE) are the two core RPC methods
- →Task states use SCREAMING_SNAKE_CASE: TASK_STATE_SUBMITTED, TASK_STATE_WORKING, TASK_STATE_COMPLETED, TASK_STATE_FAILED, etc.
- →Agent Cards at /.well-known/agent.json describe capabilities; v1.2 adds JWS cryptographic signing to prevent Agent Card forgery
- →LangGraph Agent Server exposes graphs at /a2a/{assistant_id} — requires langgraph-api>=0.4.21
- →The Protocol Triangle: A2A (agent↔agent), MCP (agent↔tools), AG-UI (agent↔user) — use all three together in production
- →Use A2A at service boundaries only; direct subgraph composition or supervisor patterns are cheaper within a single deployment
When (Not) to Use A2A
If your agents live in the same LangGraph deployment, A2A adds network overhead, auth complexity, and an extra failure surface with zero benefit. Use direct subgraph composition, supervisor routing, or swarm handoffs instead. A2A earns its overhead only when agents cross organizational, service, or framework boundaries.
Use A2A when at least one of these is true: the remote agent is owned by a different team or organization; the remote agent is built on a different framework (CrewAI, AutoGen, ADK) and you can't or won't standardize; you need capability discovery at runtime rather than compile-time wiring; or the agents will be deployed independently and versioned separately. If none of these apply, A2A is over-engineering.
| Scenario | Use A2A? | Use instead |
|---|---|---|
| Two LangGraph graphs in the same service | No | Subgraph composition or Command handoffs |
| Supervisor routing to specialist workers in one deployment | No | Supervisor pattern with direct tool calls |
| Your LangGraph agent calling a partner's CrewAI agent | Yes | — |
| Internal microservice exposes an agent API | Maybe | Direct HTTP if you control both sides; A2A if external teams will also call it |
| Third-party agent marketplace / registry | Yes | — |