A2A Protocol: Google's Agent-to-Agent Standard Explained
A2A Protocol is Google's open standard for agent-to-agent communication — the missing layer that lets agents from different frameworks, vendors, and runtimes collaborate. Here is how A2A works, how it differs from MCP, and the enterprise adoption pattern we recommend.
TL;DR — A2A (Agent2Agent) Protocol is an open standard, originally introduced by Google in April 2025 and donated to the Linux Foundation later that year, that lets autonomous agents discover each other, exchange structured tasks, stream intermediate updates, and return artifacts — across vendor boundaries, frameworks, and runtimes. A2A is to multi-agent systems what HTTP is to web services: a transport-level agreement that turns proprietary agents into composable building blocks. It is not a replacement for the Model Context Protocol (MCP) — the two are complementary. MCP standardises how a single agent talks to its tools; A2A standardises how agents talk to each other. Enterprises that ignored MCP for two years and ended up with sprawling, ungoverned tool integrations are about to make the same mistake with agent-to-agent traffic. The window to adopt A2A intentionally is now.
What the A2A Protocol Actually Is
A2A Protocol — short for Agent2Agent Protocol — is an open specification for inter-agent communication. It was unveiled by Google Cloud at Google Cloud Next in April 2025 with more than fifty launch partners including Atlassian, Box, Cohere, Intuit, LangChain, MongoDB, PayPal, Salesforce, SAP, ServiceNow, and Workday. In mid-2025 Google donated the specification and reference implementations to the Linux Foundation, where it now sits alongside other neutral-governance standards.
The protocol is intentionally narrow. It defines five things and stops. First, an Agent Card — a JSON document, typically served at `/.well-known/agent.json`, that describes an agent's identity, capabilities, supported skills, authentication requirements, and endpoint URLs. Second, a Task object — the unit of work an agent accepts, with a unique ID, an input message, optional metadata, and a state machine that progresses through `submitted → working → input-required → completed | failed | canceled`. Third, Messages — the conversational turns exchanged within a task, each containing one or more Parts (text, file references, structured data). Fourth, Artifacts — the typed outputs an agent produces during a task (a generated report, a data file, a structured payload). Fifth, a small set of JSON-RPC 2.0 methods over HTTP — `tasks/send`, `tasks/sendSubscribe`, `tasks/get`, `tasks/cancel`, `tasks/pushNotification/set` — that move tasks through their lifecycle.
Everything else — the model behind the agent, the framework it uses internally, the language it is written in, the cloud it runs on — is opaque to the protocol. An A2A-compliant agent built on LangGraph can hand a task to an A2A-compliant agent built on CrewAI, which can in turn delegate to an agent built on Vertex AI's Agent Development Kit, and none of them need to know anything about the others' internals. That opacity is the entire point.
Why Agent-to-Agent Communication Needs a Protocol At All
By 2026, most large enterprises run more than one agent framework in production. Marketing might be on a no-code platform like Microsoft Copilot Studio. Engineering ships internal tools on LangGraph. The data team has standardised on Vertex AI Agent Builder. Customer support is using a vendor SaaS whose agents are a black box. Each of these populations has been deployed independently, by different teams, on different timelines, with different governance.
The second-order question — how do these agents collaborate when a workflow crosses team boundaries — has historically been answered with point-to-point integrations. Team A exposes a REST API, Team B writes a custom client, both teams pin to a schema, and any change requires coordinated releases. This works for two or three integrations. It collapses at twenty. The combinatorial cost of N agents needing to talk to N other agents is the same problem that drove the adoption of HTTP, GraphQL, and gRPC in earlier eras of distributed systems.
A2A is the engineering answer. A single, well-specified protocol that any agent can implement, any client can speak, and any gateway can mediate. The economic case is identical to the case for MCP at the tool layer: the cost of N×M custom integrations is replaced with the cost of N+M standard adapters. The governance case is stronger: a single A2A gateway becomes the place where authentication, audit logging, rate limiting, content filtering, and policy enforcement happen for inter-agent traffic — the same way an API gateway became the chokepoint for external API traffic a decade ago.
A2A's Five Core Concepts in Engineering Detail
Agent Card — The Discovery Document
An Agent Card is a public JSON descriptor — usually at `https://your-agent.example.com/.well-known/agent.json` — that announces what an agent is and how to talk to it. It includes the agent's name, description, version, supported authentication schemes (bearer tokens, API keys, OAuth2, mTLS), the URL of its A2A JSON-RPC endpoint, the capabilities it exposes (streaming, push notifications, multi-modal input), and an array of AgentSkills — named, machine-readable descriptions of the things this agent knows how to do. The Agent Card is what makes agents discoverable across organisational boundaries: a calling agent fetches the Card, parses the skills, decides whether the target agent is the right delegate, and proceeds. In enterprise deployments, an internal Agent Registry typically aggregates Cards from all approved agents the way a service mesh's control plane aggregates service definitions.
Task — The Unit of Work With a Lifecycle
A Task is the fundamental object the protocol moves around. When agent A wants agent B to do something, it creates a Task containing an initial Message and posts it to B's endpoint. The Task carries an ID, a session ID for grouping related work, a state, and an accumulating history of messages and artifacts. The state machine is small but expressive: `submitted` (received but not started), `working` (in progress), `input-required` (paused waiting for human or upstream input), `completed`, `failed`, and `canceled`. Crucially, the Task is durable from the protocol's perspective — long-running operations that take minutes, hours, or days are first-class. The calling agent can poll, subscribe via Server-Sent Events, or register a webhook for push notifications; the protocol does not assume the caller is connected continuously. This is where A2A diverges sharply from naive HTTP request-response designs.
Message and Part — Multi-Modal Conversation
Messages are the conversational atoms inside a Task. Each Message has a role (`user` or `agent`) and one or more Parts. A Part is a typed payload: a TextPart (plain or markdown), a FilePart (a reference to or inline binary), or a DataPart (structured JSON). This three-part design is deliberate — it lets agents exchange not just text but tabular data, generated files, screenshots, audio, or any structured output without inventing a side-channel. For multi-modal agents, this means an A2A request can include a PDF as input and receive an HTML report and a CSV as output, with all of it tracked inside the same Task history.
Artifact — Typed, Addressable Output
Where Messages capture conversation, Artifacts capture deliverables. An Artifact is a named, indexed output an agent produces during a Task — for example, `customer_report.pdf`, `risk_score.json`, or `revised_contract.docx`. Artifacts have an explicit lifecycle and can be streamed in chunks for long generations. Treating outputs as first-class objects (rather than embedded in a final message) is what makes A2A genuinely useful in enterprise pipelines: the upstream system can hand an Artifact to a downstream system without parsing free text, and the audit trail makes it explicit what each agent contributed.
Streaming and Push Notifications
Real enterprise agents do not return instantly. A research agent might run for ninety seconds; a procurement agent might wait three days for a supplier response. A2A handles both with two transport modes: Server-Sent Events for synchronous streaming (the caller stays connected and receives intermediate Messages and Artifacts as the Task progresses) and push notifications for asynchronous resumption (the caller registers a webhook URL and disconnects; the agent posts updates back when state changes). Together these let agents collaborate over the full latency spectrum without forcing a one-size-fits-all execution model — a property that becomes essential the moment your agent population includes anything more complex than synchronous chatbots.
A2A vs MCP: When To Use Which
| Dimension | MCP (Model Context Protocol) | A2A (Agent-to-Agent Protocol) |
|---|---|---|
| Primary purpose | Connect a single agent to tools, resources, and prompts | Connect agents to each other for delegated work |
| Communication direction | Vertical: agent → tool | Horizontal: agent ↔ agent |
| Origin | Anthropic, November 2024 | Google, April 2025; donated to Linux Foundation in 2025 |
| Core abstractions | Tools, Resources, Prompts | Agent Card, Task, Message, Artifact, AgentSkill |
| Task lifecycle | Synchronous tool calls (stateless per call) | Stateful tasks with submitted → working → completed lifecycle |
| Long-running operations | Not the focus; tool calls are typically short | First-class via SSE streaming and webhook push notifications |
| Discovery | Client connects to known servers; capabilities negotiated at handshake | Public Agent Card at /.well-known/agent.json; central registries common in enterprise |
| Typical caller | An agent's runtime | Another agent (often itself an MCP client to its own tools) |
| Replaces | Bespoke per-framework tool adapters | Bespoke point-to-point agent integrations |
| Use both when | An agent needs tools (almost always) | Multiple specialised agents must collaborate across teams or vendors |
The Most Common Misconception: A2A Does Not Replace MCP
The single most common question we field about A2A is whether it makes MCP obsolete. It does not. The two protocols solve different problems and are designed to compose.
A single agent's runtime almost always needs both. Internally, the agent uses MCP to discover and invoke its tools — query a database, post to Slack, read a Drive folder, call an internal API. Externally, the same agent exposes an A2A endpoint so that other agents can delegate work to it. From the outside, the agent is an A2A service. From the inside, it is an MCP client. The two protocols meet at the agent's process boundary and never overlap.
A useful mental model: MCP is the agent's nervous system — sensors and effectors that let it perceive and act on its immediate environment. A2A is the agent's social protocol — how it negotiates work with other agents in its network. An enterprise that has invested heavily in MCP servers has built up a strong tool layer; layering A2A on top lets those same tool-equipped agents collaborate. An enterprise that only has A2A endpoints but no MCP integration ends up with agents that can talk to each other but cannot actually do anything. Both layers are required for a complete agentic stack.
A Minimal A2A Server and Client in Python
# ─── A MINIMAL A2A AGENT SERVER ──────────────────────────────────────
# Exposes an Agent Card at /.well-known/agent.json and a JSON-RPC
# endpoint at /a2a. Real implementations use the official SDK
# (python-a2a or @a2a-protocol/sdk for TypeScript) — this hand-rolled
# version is illustrative.
from fastapi import FastAPI, Request
from uuid import uuid4
from datetime import datetime, timezone
app = FastAPI()
TASKS: dict[str, dict] = {}
AGENT_CARD = {
"name": "Risk Scoring Agent",
"description": "Scores enterprise customer accounts on credit and churn risk.",
"version": "1.2.0",
"url": "https://risk-agent.example.com/a2a",
"authentication": {"schemes": ["bearer"]},
"capabilities": {"streaming": True, "pushNotifications": True},
"skills": [
{
"id": "score_account",
"name": "Score a customer account",
"description": "Returns a 0–100 risk score plus rationale.",
"inputModes": ["text", "data"],
"outputModes": ["data"],
}
],
}
@app.get("/.well-known/agent.json")
def agent_card():
return AGENT_CARD
@app.post("/a2a")
async def a2a_endpoint(request: Request):
body = await request.json()
method = body["method"]
params = body.get("params", {})
if method == "tasks/send":
task_id = params.get("id") or str(uuid4())
message = params["message"]
# Real agent would invoke its scoring model here.
score = run_risk_model(message)
TASKS[task_id] = {
"id": task_id,
"status": {"state": "completed",
"timestamp": datetime.now(timezone.utc).isoformat()},
"artifacts": [{
"name": "risk_score.json",
"parts": [{"type": "data", "data": score}],
}],
"history": [message],
}
return {"jsonrpc": "2.0", "id": body.get("id"), "result": TASKS[task_id]}
if method == "tasks/get":
return {"jsonrpc": "2.0", "id": body.get("id"),
"result": TASKS[params["id"]]}
return {"jsonrpc": "2.0", "id": body.get("id"),
"error": {"code": -32601, "message": "Method not found"}}
# ─── A MINIMAL A2A CLIENT ────────────────────────────────────────────
# A different agent — say, a customer-onboarding orchestrator — calls
# the risk agent to delegate scoring as part of a longer workflow.
import httpx
async def delegate_risk_scoring(customer_id: str) -> dict:
async with httpx.AsyncClient(timeout=30) as client:
# Discover capabilities (in production: cached or via registry)
card = (await client.get(
"https://risk-agent.example.com/.well-known/agent.json"
)).json()
# Send the task
resp = await client.post(
card["url"],
headers={"Authorization": f"Bearer {RISK_AGENT_TOKEN}"},
json={
"jsonrpc": "2.0",
"id": "req-1",
"method": "tasks/send",
"params": {
"message": {
"role": "user",
"parts": [{"type": "data",
"data": {"customer_id": customer_id}}],
}
},
},
)
task = resp.json()["result"]
# Pull the typed artifact, not free-text parsing
return task["artifacts"][0]["parts"][0]["data"]The orchestrator calls the risk agent without knowing what model, framework, or runtime is behind it. The Agent Card is the only contract.
Where A2A Genuinely Earns Its Place in the Enterprise Stack
Cross-Vendor Agent Collaboration
The most cited use case at A2A's launch was agent collaboration across vendor boundaries. A Workday HR agent surfaces a hiring requisition. A Salesforce account agent identifies the candidate's prior interactions. A custom internal compliance agent verifies background-check status. In a pre-A2A world, this workflow would require three custom integrations, three sets of credentials, and three brittle schema contracts. With A2A, it is three Agent Cards, one orchestrator, and a shared task graph. The win is not just lower integration cost — it is that the orchestrator can be swapped, the vendors can be swapped, and the workflow keeps running.
Specialist Agent Marketplaces
A2A unlocks the same composability that REST and OpenAPI unlocked for SaaS APIs a decade ago. Vertical-specialist agents — clinical-coding agents in healthcare, KYC agents in financial services, freight-customs agents in logistics — can be published as A2A endpoints and consumed by any compliant orchestrator. We expect this to be the dominant commercialisation pattern for specialist agentic capability over 2026–2027, in the same way that Stripe, Twilio, and Plaid became consumable building blocks via standard APIs.
Long-Running Workflow Coordination
Most enterprise workflows are not synchronous. Procurement cycles last days. Insurance claims process over weeks. A2A's first-class support for long-running tasks — via push notifications and the `input-required` state — makes it well-suited to coordinating these workflows in a way that REST APIs never were. The coordinating agent submits a task, registers a webhook, and resumes when the downstream agent has progress. This is a much better fit for real business processes than fire-and-poll request-response.
Human-in-the-Loop at Protocol Level
The `input-required` state is a small but consequential design choice. It gives the protocol an explicit way to pause for human input mid-task — an approval, a clarification, a missing document — without requiring the caller to invent its own out-of-band signalling. For regulated workflows where every irreversible action needs sign-off, this hooks neatly into existing approval systems and keeps the audit trail inside the Task history.
Centralised Governance Through an A2A Gateway
The same architectural pattern that turned API gateways into the de-facto chokepoint for service-to-service traffic applies here. An internal A2A gateway sits in front of every enterprise agent, validates the calling agent's identity, applies rate limits and quotas, redacts sensitive data from messages, and writes structured audit logs to the security data lake. Every cross-agent call passes through the gateway. This is the only realistic way to keep agentic sprawl under control once an enterprise has more than a handful of agents in production — and it is much harder to retrofit than to design in from the start.
The biggest A2A pitfall in enterprise adoption is treating the protocol as a substitute for governance. A2A standardises the wire format, not the policy. Authentication, authorisation, content filtering, PII redaction, rate limiting, and audit logging are all your responsibility. If you publish an A2A endpoint on the open internet without any of these, you have built a remote-code-execution machine that can be invoked over JSON-RPC. Treat A2A endpoints with the same operational rigour as any other internet-facing API — and prefer to expose them via an A2A gateway rather than directly.
How to Adopt A2A Without Breaking What You Already Have
The right A2A adoption pattern in 2026 is incremental. There is no value in rewriting your existing agent integrations on day one — and there is significant risk in doing so before your team has internalised the protocol's idioms.
The approach we use across Inductivee's enterprise engagements is a four-phase rollout. Phase one is wrapping — pick the two agents that already need to talk to each other most painfully and put thin A2A facades in front of both. Both agents continue to do exactly what they did; the facade just translates their existing inputs and outputs into Tasks, Messages, and Artifacts. Phase two is one new integration — the next time a workflow requires a third agent, build it A2A-native rather than as a custom point-to-point integration. Phase three is the gateway — introduce a central A2A gateway as soon as you have three or more agents talking, before the topology becomes a mesh. Phase four is the registry — publish all internal Agent Cards to a discoverable registry so new agents and new workflows can find existing capabilities without tribal knowledge.
The key discipline across all four phases is to keep MCP and A2A separate in your team's vocabulary. Tool integration is MCP. Agent integration is A2A. Conflating them — or building one when you needed the other — is how teams end up with the worst of both protocols and the benefits of neither.
Five Decisions Every Enterprise A2A Adopter Has to Make Early
These are the design decisions that have the longest blast radius if you get them wrong. Make them deliberately, not by default:
- **Agent identity model.** How do agents authenticate to each other? Bearer tokens scoped per skill, mTLS with a private CA, or OAuth2 with a workforce identity provider? Each has tradeoffs around rotation, revocation, and observability. We default to mTLS for internal traffic and OAuth2 for partner-facing endpoints.
- **Gateway-first or peer-to-peer.** Will all A2A traffic flow through a central gateway, or will agents call each other directly? Gateway-first is more governable but adds latency and a single point of failure. Peer-to-peer is faster and simpler but harder to audit. For most enterprises, gateway-first wins by a wide margin once the agent population exceeds three.
- **Task durability.** Where do Tasks live? In the agent's memory? A shared Postgres? A durable workflow engine like Temporal? The choice determines whether your agents survive restarts, scale horizontally, and resume long-running work after outages. We treat durable Task storage as non-negotiable for production deployments — see our note on agent memory architecture for why.
- **Schema discipline for Artifacts.** Free-text Artifacts are a trap. They look easy on day one and become impossible to evolve on day ninety. Define typed schemas (JSON Schema, Pydantic, or protobuf) for every Artifact your agents produce, version them explicitly, and reject Artifacts that fail validation at the gateway. This is the single highest-leverage decision in the whole adoption.
- **Cross-agent observability.** Standard logs are not enough. You need distributed tracing across agent boundaries — every Task carries a correlation ID that propagates into the called agent's traces, so a failure in step seven of a twelve-step delegation chain is debuggable. OpenTelemetry semantic conventions for A2A are emerging; adopt them now rather than rebuilding later.
Where A2A Fits in Inductivee's 2026 Engineering Practice
Across our agentic engagements, the pattern over the past nine months has been consistent: enterprises that started multi-agent work in 2024–2025 hit the integration wall around the time their agent count crossed five. A2A is the protocol layer that lets them break through that wall without throwing away the agents they already shipped.
For new engagements we now propose A2A from the first design conversation. The cost of designing agents to be A2A-native from day one is marginal — the SDKs are mature enough that exposing an Agent Card and JSON-RPC endpoint is a matter of hours, not weeks. The cost of retrofitting A2A onto an existing population of point-to-point integrations is much higher, both in engineering time and in the political cost of touching production systems that work.
We expect 2026 to be the year A2A crosses from "interesting standard" to "default assumption" in enterprise agent architecture, in roughly the same way MCP crossed that line in 2025. Teams that adopt early will accumulate optionality — the freedom to swap frameworks, add specialist agents, and integrate vendor capabilities with a configuration change rather than a sprint. Teams that wait will spend 2027 doing the same migration work, under more pressure, with more legacy to unwind.
If this matches a problem you are working on now, our team can help scope it — we have shipped A2A and MCP-based architectures across financial services, healthcare, and logistics engagements over the past year and the playbook is well-tested.
Frequently Asked Questions
What is the A2A protocol?
What is the difference between A2A and MCP?
Who created the A2A protocol and is it really open?
Do I need A2A if I am already using LangGraph or CrewAI?
How does A2A handle long-running tasks?
What are the security risks of exposing an A2A endpoint?
Should I adopt A2A now or wait for it to mature?
Written By
Inductivee Team
AuthorAgentic AI Engineering Team
The Inductivee engineering team — a remote-first group of multi-agent orchestration specialists, RAG pipeline architects, and data liquidity engineers who have shipped 40+ agentic deployments across 25+ enterprises since 2012. Our writing is grounded in what we actually build, break, and operate in production.
Inductivee is a remote-first agentic AI engineering firm with 40+ production deployments across 25+ enterprises since 2012. Our engineering content is written by active practitioners and technically reviewed before publication. Compliance: SOC2 Type II, HIPAA, GDPR, ISO 27001.
Engineer This With Inductivee
The engineering patterns in this article are what our team builds into production every day. Explore the related service to see how we deliver this capability at enterprise scale.
Agentic Custom Software Engineering
We engineer autonomous agentic systems that orchestrate enterprise workflows and unlock the hidden liquidity of your proprietary data.
ServiceAutonomous Agentic SaaS
Agentic SaaS development and autonomous platform engineering — we build SaaS products whose core loop is powered by LangGraph and CrewAI agents that execute workflows, not just manage them.
Related Articles
Model Context Protocol (MCP) Enterprise Guide
Multi-Agent Orchestration: LangChain vs CrewAI vs AutoGen for Enterprise Deployments
Five Multi-Agent Coordination Patterns That Actually Work in Enterprise
Ready to Build This Into Your Enterprise?
Inductivee engineers agentic systems, RAG pipelines, and enterprise data liquidity solutions. Let's scope your project.
Start a Project