Skip to main content

Agent-to-Agent Protocol (A2A)

How do AI agents find each other and coordinate work?

A2A is the TCP of agents — the transport layer that lets any agent discover, message, and delegate tasks to any other agent, regardless of who built them. Launched by Google with 50+ partners, now governed by the Linux Foundation.

Agent Cards

Every A2A-capable agent publishes a JSON metadata document at /.well-known/agent.json. This is the agent's business card — what it does, how to talk to it, what auth it requires.

FieldPurposeExample
nameHuman-readable identity"Sales Research Agent"
descriptionWhat the agent does"Researches companies and qualifies leads"
urlAgent's A2A endpointhttps://agent.example.com/a2a
capabilitiesWhat the agent supportsStreaming, push notifications, state transitions
authenticationRequired auth methodOAuth2, API key, mTLS
skillsSpecific tasks the agent performsEach skill has its own input/output schema
defaultInputModesAccepted input typestext/plain, application/json, image/*
defaultOutputModesResponse typestext/plain, application/json

Discovery works like DNS for agents. Any client hits /.well-known/agent.json on a domain and learns what that agent can do.

Tasks

Tasks are the unit of work. A client creates a task, the agent processes it, both sides track lifecycle.

StateMeaningTransitions To
SUBMITTEDTask received, not yet startedWORKING, REJECTED
WORKINGAgent is processingCOMPLETED, FAILED, CANCELED, INPUT_REQUIRED, AUTH_REQUIRED
INPUT_REQUIREDAgent needs more informationWORKING (after input provided)
AUTH_REQUIREDAgent needs authorizationWORKING (after auth provided)
COMPLETEDTask finished successfullyTerminal
FAILEDTask failedTerminal
CANCELEDTask canceled by clientTerminal
REJECTEDAgent refused the taskTerminal

Tasks persist. Clients can poll status, resume after disconnection, or subscribe to updates via streaming.

Messages and Parts

Communication happens through Messages. Each Message contains Parts — typed content blocks.

Part TypeContentUse Case
TextPartPlain text or structured textInstructions, responses, reasoning
FilePartBinary data with MIME typeDocuments, images, audio
DataPartStructured JSONAPI responses, form data, schemas

Messages have roles (user or agent) and can contain multiple Parts. This mirrors how humans communicate — mixing text, files, and structured data in a single exchange.

Artifacts

Artifacts are the outputs — what the agent produces. Unlike messages (conversational), artifacts are the deliverables.

PropertyPurpose
nameWhat this artifact is
partsContent (same Part types as messages)
appendWhether this extends a previous artifact
lastChunkWhether this is the final piece

Artifacts can stream incrementally. A research agent might produce findings as they're discovered, not just as a final report.

Streaming

Two transport options for real-time updates:

MethodProtocolBest For
SSEHTTP Server-Sent EventsWeb clients, simple streaming
gRPCHTTP/2 bidirectionalHigh-throughput, low-latency agent networks

Streaming lets clients watch task progress, receive partial artifacts, and respond to INPUT_REQUIRED states in real time.

Push Notifications

For long-running tasks, agents push updates to clients via webhooks.

Client creates task → disconnects → agent works for hours
Agent completes → pushes notification to client's webhook URL
Client reconnects → retrieves artifacts

The client registers a pushNotificationConfig with the task. The agent sends updates when state changes. This decouples task submission from result retrieval.

Authentication

Four auth methods, negotiated via Agent Card:

MethodUse CaseSecurity
API KeySimple integrations, internal agentsBasic
OAuth 2.0Third-party agents, user-delegated accessStandard
mTLSEnterprise agent-to-agentHigh
OIDCIdentity federation, SSOStandard

Auth requirements are declared in the Agent Card. Clients inspect before connecting — no trial-and-error.

Protocol Bindings

A2A is transport-agnostic. Three official bindings:

BindingTransportWhen to Use
JSON-RPC 2.0HTTP/HTTPSDefault — most compatible
gRPCHTTP/2High-throughput agent networks
HTTP RESTHTTP/HTTPSSimple integrations

All bindings support the same operations: create task, get task, cancel task, send message, set push config.

Governance

A2A moved from Google to the Linux Foundation — same governance model as Kubernetes, Node.js, and Linux itself.

  • No single company controls the spec
  • Changes go through open RFC process
  • Multiple implementations can compete on quality
  • The protocol outlives any company's strategic pivot

SDKs

LanguageStatus
PythonStable
JavaScript/TypeScriptStable
JavaStable
C#Stable
GoStable

Where A2A Sits

LayerProtocolFunction
Discovery + CommunicationA2AHow agents find and talk to each other
Tool AccessMCPHow agents access external tools and data
CommerceUCPHow agents buy and sell
PaymentAP2How agents authorize and settle payments
AttributionPCPHow agents attribute creative IP

A2A and MCP are complementary. MCP connects an agent to tools. A2A connects an agent to other agents. An agent might use MCP to access a database, then use A2A to delegate analysis to a specialist agent.

Context

  • Agent Protocols — The protocol landscape
  • UCP — Commerce layer: how agents buy and sell on A2A rails
  • AP2 — Payment layer: how agents authorize payments
  • MCP — Model Context Protocol for tool access
  • Agent Commerce — The standards war for agent transactions
  • Payment Rails — Intent-based payment infrastructure

Questions

When every agent publishes a card and every task has a lifecycle, what's left that requires a human coordinator?

  • If A2A becomes the TCP of agents, does the value accrue to the protocol or to the agents that speak it best?
  • What breaks when two agents disagree on task state — and who arbitrates?
  • At what agent density does discovery become the bottleneck, not communication?