Agent Architecture/Multi-Agent Patterns
Advanced14 min

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

A2A is for cross-boundary communication only

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.

ScenarioUse A2A?Use instead
Two LangGraph graphs in the same serviceNoSubgraph composition or Command handoffs
Supervisor routing to specialist workers in one deploymentNoSupervisor pattern with direct tool calls
Your LangGraph agent calling a partner's CrewAI agentYes
Internal microservice exposes an agent APIMaybeDirect HTTP if you control both sides; A2A if external teams will also call it
Third-party agent marketplace / registryYes