A2A: The Definitive Introduction to Agent-to-Agent Communication
Welcome to the AgentDevPro Handbook’s A2A section. This article is your entry point into the world of Agent‑to‑Agent communication and collaboration.
In today’s AI landscape, no single agent can do everything. Complex tasks require multiple agents working together — and that demands a common language. This is what the Agent‑to‑Agent (A2A) protocol provides: a standardised, open way for AI agents to discover each other, exchange information, coordinate work, and collaborate on tasks, regardless of which framework or vendor built them.
In this article, you’ll learn:
- What A2A is (and what it isn’t)
- Why agent‑to‑agent communication matters for production systems
- How A2A works under the hood
- Where to go next to start implementing it
What Is A2A
A2A (Agent‑to‑Agent) is a communication protocol that allows autonomous AI agents to exchange information, discover each other’s capabilities, and collaborate on tasks — securely and independently of their underlying implementation.
The Agent2Agent (A2A) protocol was initially launched by Google in April 2025 and is now an open‑source project hosted by the Linux Foundation under the Apache 2.0 license. More than 150 organisations, including AWS, Microsoft, Cisco, Salesforce, SAP, and ServiceNow, support the protocol, making it an industry‑wide foundation for multi‑agent ecosystems.
At its core, A2A solves a fundamental problem: today’s AI agents are often built with different frameworks (LangChain, CrewAI, Semantic Kernel, ADK, etc.), different programming languages, and different API assumptions. Without a standardised protocol, every pair of agents requires custom “glue code” — and as the number of agents grows, integration complexity grows at O(N²).
A2A changes this. It provides a common language that agents speak, allowing them to:
- Discover each other — agents advertise their capabilities and find others that can help
- Collaborate securely — with built‑in authentication and authorisation
- Share multi‑modal content — text, files, images, streaming data
- Handle long‑running processes — with asynchronous task tracking
- Work across platforms — no matter which framework or vendor built them
Think of A2A as the universal translator for agent ecosystems — breaking down the silos that currently limit the potential of artificial intelligence.
Why A2A Matters
Agents rarely work alone. The most valuable AI applications today involve multiple specialised agents collaborating — yet most agent frameworks only support collaboration within their own ecosystem. A2A changes that.
Complex tasks require collaboration
A single agent cannot feasibly generate a weekly sales dashboard. That task requires:
- A Data Agent to pull raw sales data
- A Clean Agent to normalise and deduplicate
- An Analytics Agent to compute KPIs
- A Chart Agent to render visualisations
- A Report Agent to assemble the final document
Without A2A, each of these agents would need custom, brittle integrations with every other agent it communicates with. This is impractical at scale.
Specialised agents can share responsibilities
The industry is moving from monolithic “one‑agent‑does‑everything” systems to decomposed multi‑agent systems where each agent is purpose‑built for a specific function — SQL querying, sentiment analysis, image generation, code review. A2A enables these specialised agents to work together as a cohesive team.
Coordination improves efficiency
With standardised communication, you can:
- Run multiple agents in parallel — reducing total execution time
- Reuse agents across different workflows — a Data Agent can serve a Research Agent, a Reporting Agent, and a Dashboard Agent simultaneously
- Replace or upgrade individual agents without disrupting the entire system
Real‑world impact
Organisations are already building powerful A2A systems. Tyson Foods and Gordon Food Service are pioneering collaborative A2A systems to drive sales and reduce supply chain friction, creating real‑time channels for their agents to share product data and leads that enhance the food supply chain.
How A2A Works
A2A is built on standard web technologies — it uses JSON‑RPC 2.0 over HTTPS for requests and Server‑Sent Events (SSE) for streaming responses. This means it works seamlessly with your existing infrastructure: firewalls, load balancers, authentication systems, and monitoring tools.
The basic flow of an A2A interaction looks like this:
The five steps in detail:
1. Discovery with an Agent Card — Every A2A‑compliant agent publishes an Agent Card, a tiny JSON metadata file (typically at /.well-known/agent.json) that lists the agent’s name, service endpoint, authentication requirements, and the specific skills it offers.
2. Authentication — The Agent Card also tells the caller which OAuth 2.0 or API key method to use. The client obtains a short‑lived token, eliminating hardcoded secrets and enabling fine‑grained access control.
3. Task exchange — With a token in hand, the client sends a request via JSON‑RPC 2.0 over HTTPS. The protocol supports both immediate synchronous responses and long‑running tasks via streaming.
4. Built‑in observability — Each request carries trace IDs, and agents emit structured logs and metrics in OpenTelemetry Protocol (OTLP), making it easy to monitor and debug A2A interactions.
5. Streaming support — For long‑running tasks, A2A uses Server‑Sent Events (SSE) to push real‑time status updates and partial results back to the client — no polling required.
Transport flexibility
The protocol is transport‑agnostic: the same agent can be served over JSON‑RPC, HTTP+JSON (REST), or gRPC. Clients select the appropriate binding from the published Agent Card.
Core Concepts in A2A
To build or work with A2A systems, you need to understand these five core concepts. They form the foundation of every A2A interaction.
Agent Card
The Agent Card is a machine‑readable JSON document that acts as an agent’s digital “business card”. It advertises:
- Identity — the agent’s name, version, and description
- Service endpoint — the URL where the A2A server can be reached
- Authentication requirements — OAuth 2.0, API keys, or other schemes
- Capabilities — whether the agent supports streaming, push notifications, etc.
- Skills — the specific tasks the agent can perform (e.g., “data_query”, “sentiment_analysis”)
Clients fetch the Agent Card (typically at /.well-known/agent.json) to discover what an agent can do and how to connect to it.
Message
A Message is the basic unit of information exchange in A2A. It contains a role (user or agent), parts (text, files, images, or structured data), and a message_id. Messages are perfect for simple, quick interactions — like discovery queries, chit‑chat, or single‑turn questions.
Task
A Task brings structure to complex, goal‑oriented collaborations. A Task has a unique ID, a state (submitted, working, completed, failed, cancelled), and can contain multiple messages and artifacts. Tasks are designed for:
- Goal‑oriented actions — when a user (or another agent) has a clear intent to accomplish something
- Long‑running operations — that may take seconds, minutes, or even hours
- Disambiguation — when multiple goals are being pursued in parallel within the same conversation
Each Task provides a dedicated space to track progress, exchange context, and collaborate without confusion. Unlike simple messages, a Task persists and can be resumed or polled later.
Artifact
An Artifact is an immutable chunk of output generated by an agent as part of a Task. Artifacts can contain text, files, images, JSON data, or any other content type. They are added incrementally as a Task progresses, and each Artifact has a unique ID and optional metadata (e.g., MIME type, filename, description). Artifacts enable agents to send partial results as they work, improving responsiveness and user experience.
Context
Context is the shared state that flows between agents during a collaboration. It includes conversation IDs, task IDs, session data, and any other information necessary for agents to understand the broader picture and avoid misinterpretation. In A2A implementations, context is typically passed via metadata fields in requests and responses, ensuring that all participating agents have a consistent view of the ongoing work.
Typical A2A Workflow
A typical A2A interaction — from request to result — follows this lifecycle:
Step‑by‑step explanation:
- Task Created — An agent (or user) creates a new Task with a unique ID and a goal. This could be something like “fetch customer data” or “generate a sentiment report”.
- Agent Selected — The client agent fetches the Agent Card of a potential worker to discover its capabilities and endpoint.
- Message Sent (Task Assignment) — The client sends a JSON‑RPC request (typically
tasks/sendortasks/sendSubscribefor streaming) to the worker’s endpoint, delegating the Task. - Task Executed — The worker processes the Task. For short tasks (< 5 seconds), it may return a synchronous result. For long tasks, it streams progress updates via SSE and sends partial Artifacts as they become available.
- Result Returned — The worker returns the final result (Artifact) and marks the Task state as
completed. - Task Completion — The client receives the result. If streaming was used, it receives updates in real time.
The entire workflow is asynchronous by design. A client can submit a Task, disconnect, and later reconnect to check its status using tasks/get. This makes A2A suitable for long‑running, background operations.
A2A Communication Components
Every A2A interaction involves these core components:
| Component | Responsibility | Example |
|---|---|---|
| Sender Agent | Initiates a Task, sends messages, receives responses | Research Agent requesting customer data |
| Receiver Agent | Publishes an Agent Card, accepts Tasks, executes work, returns results | Data Agent with capability data_query |
| Agent Card | Declares identity, skills, endpoint, auth requirements | /.well-known/agent.json |
| Task | A persistent unit of work with a state machine | {"id": "task-123", "status": "working"} |
| Message | A single exchange (question or answer) within a Task | {"parts": [{"text": "Who are top customers?"}]} |
| Artifact | Immutable output generated during a Task | {"uri": "s3://results/top-customers.json"} |
| Context | Shared state across interactions | {"conversationId": "conv-456", "taskId": "task-123"} |
A2A vs MCP: Two Protocols, One Ecosystem
One of the most common points of confusion for developers new to A2A is how it relates to the Model Context Protocol (MCP) introduced by Anthropic. The short answer is: they are not competitors — they are complementary.
| Aspect | A2A (Agent‑to‑Agent) | MCP (Model Context Protocol) |
|---|---|---|
| Primary purpose | Agent‑to‑agent communication and collaboration | Agent‑to‑tool / agent‑to‑resource communication |
| What it connects | Multiple AI agents (peer‑to‑peer) | An AI agent to external tools, APIs, databases, file systems |
| Direction of interaction | Horizontal (agents collaborating with each other) | Vertical (agent accessing resources) |
| Key operations | Discover agents, send Tasks, share Artifacts, stream progress | List tools, call tools, read resources, get context |
| Example | A Research Agent asks a Data Agent to query a database | A Data Agent uses MCP to connect to the actual database |
| Core concept | Task (persistent, stateful collaboration) | Tool (function call) or Resource (data source) |
Think of it this way: If MCP is the USB port that lets a single agent plug into tools and data, A2A is the network protocol that lets those agents talk to each other and coordinate.
The synergy: A2A ❤️ MCP
A2A and MCP are explicitly designed to work together. Google’s framing is simple: “A2A ❤️ MCP” — they are partners, not rivals.
In practice, many A2A agents will also use MCP internally to interact with the tools, APIs, and data sources they need to perform their tasks.
A concrete example: a retail inventory system
- An Inventory Agent uses MCP to connect to a PostgreSQL database storing product quantities
- When stock runs low, the Inventory Agent uses A2A to send a Task to a Purchasing Agent:“Reorder 100 units of product XYZ”
- The Purchasing Agent may use MCP again to call an external supplier API to place the order
┌─────────────────┐ A2A ┌──────────────────┐
│ Inventory │ ──────────────────► │ Purchasing │
│ Agent │ │ Agent │
└────────┬────────┘ └────────┬─────────┘
│ MCP │ MCP
▼ ▼
┌───────────┐ ┌────────────┐
│ Database │ │ Supplier │
│ (stock) │ │ API │
└───────────┘ └────────────┘
What you need to know as a developer:
- You don’t have to choose between them — most production agents will use both
- A2A handles who does what (agent collaboration)
- MCP handles how agents interact with the outside world (tools and data)
- Together, they provide a complete interoperability layer for AI agents
Common A2A Use Cases
A2A is already being deployed across multiple industries. Here are the most common patterns.
Research and data analysis workflows
A Research Agent needs to gather information from multiple sources. It uses A2A to delegate Tasks to specialised agents: a Web Search Agent, a Database Agent, a Document Parser Agent — then synthesises their results into a final answer. This parallel delegation dramatically reduces overall completion time compared to a single agent doing everything.
Customer support systems
A customer query arrives. A Routing Agent classifies the issue (billing, technical, returns). It then uses A2A to assign the query to the appropriate specialist agent — a Billing Agent, a Technical Support Agent, or a Returns Agent — and aggregates their responses into a coherent answer. The result: faster resolution times and higher accuracy because each agent is focused on its domain.
Workflow automation
An order comes in. An A2A workflow automatically triggers three agents: an Inventory Agent checks stock, a Shipping Agent calculates delivery options, and a Payment Agent processes the transaction — all in parallel. As each agent completes, it notifies others via A2A events. The entire order‑to‑fulfilment pipeline runs without human intervention.
Content generation pipelines
A user requests “Write a blog post about AI.” A Content Workflow assigns Tasks across multiple agents:
- Outline Agent generates a bullet‑point structure
- Research Agent finds supporting facts and citations
- Writer Agent produces a first draft
- Editor Agent proofreads and revises
- Formatter Agent converts the final text to HTML/Markdown
Each agent receives the previous agent’s output as input via A2A messages. The result: consistent, high‑quality content produced faster than any single agent could manage.
Challenges in A2A Systems
Like any distributed system, A2A comes with engineering challenges. Understanding them upfront helps you design resilient implementations.
Communication failures
Agents may be temporarily unavailable, networks may partition, messages may be delayed or lost. Production A2A systems must implement retries, timeouts, and dead‑letter queues. The protocol itself provides building blocks (Task state machine, message IDs, streaming), but you must implement the reliability logic.
Context synchronisation
When multiple agents work on related Tasks, they need a consistent view of shared context (e.g., conversation history, customer profile). Without careful design, agents may operate on stale or inconsistent data. The solution: propagate context via metadata in every A2A message, use shared state stores (Redis, etc.) for larger context, and implement versioning to detect stale updates.
Message validation
A2A is designed for agents built by different teams — potentially using different languages and frameworks. You cannot trust that every incoming message is well‑formed. Always validate messages against the protocol schema on both the sending side (fail fast) and receiving side (defence in depth). Use JSON Schema or Protobuf for type safety.
Reliability
Tasks can be long‑running — minutes, hours, even days. If an agent crashes mid‑Task, you need mechanisms to resume work, recover state, and avoid duplicate execution. Best practices: persist Task state to durable storage, make Task handlers idempotent, and implement checkpointing at meaningful milestones.
Security
Agents may operate across trust boundaries (different teams, different clouds, different organisations). A2A supports enterprise‑grade security, but you must implement it correctly:
- Authentication — who is sending this request? (mTLS, JWT, API keys)
- Authorisation — is this sender allowed to invoke this capability?
- Integrity — has the message been tampered with? (TLS + optional signatures)
- Confidentiality — are sensitive payload fields protected? (field‑level encryption)
A2A Implementation Tools and SDKs
Getting started with A2A has never been easier. The ecosystem offers mature SDKs in multiple languages and integrations with popular agent frameworks.
Official SDKs and frameworks
| Language / Framework | SDK / Tool | Provider |
|---|---|---|
| Python | python-a2a (comprehensive), a2a-server (lightweight), a2a-json-rpc (minimal) | Google / Community |
| .NET | A2A .NET SDK | Microsoft |
| Java | A2A Java SDK for Jakarta | WildFly / Community |
| Rust | a2a-rs (core protocol + gRPC) | Community (Linux Foundation) |
| Ruby | a2a-ruby (JSON‑RPC, gRPC, HTTP+JSON) | Community |
| Elixir | A2A protocol implementation for Elixir | Community |
Framework integrations
- Google ADK (Agent Development Kit) — Native A2A support, making it easy to build and expose ADK agents as A2A servers
- AG2 (formerly AutoGen) — The
autogen.beta.a2amodule exposes any AG2 agent over A2A - Semantic Kernel — Built‑in A2A support for agent orchestration
- LangChain — Can be integrated via
python-a2a’s LangChain bridge - AGNTCY — Cisco’s open source interoperability framework integrating A2A
Getting started (Python example)
The quickest way to experiment is with the a2a-server package:
pip install a2a-server
Create a simple configuration file:
server:
host: 0.0.0.0
port: 8000
handlers:
echo_agent:
type: a2a_server.tasks.handlers.echo_handler.EchoHandler
Start the server:
a2a-server --config agent.yaml
Your A2A server is now running, complete with Agent Card discovery and JSON‑RPC endpoints. The python-a2a library provides a more comprehensive feature set, including MCP integration, agent discovery, streaming, and workflow composition.
A2A Learning Path
This article is your entry point. The AgentDevPro Handbook includes a complete series of implementation guides, each building on the previous one.
🗺️ Your recommended learning path:
1. A2A Overview (this article)
↓
2. Agent Communication
Concepts: request/response patterns, conversation flows, communication protocols
↓
3. Agent Messaging
Implementation: payload design, serialization (JSON/Protobuf), validation, delivery
↓
4. Agent Collaboration
Implementation: task ownership, context sharing, result aggregation, failure recovery
↓
5. A2A Workflows
Implementation: sequential/parallel/iterative workflows, state management, monitoring
↓
6. A2A Best Practices
Production: reliability, security, observability, testing, deployment
📚 What each article covers
| Article | URL | What You’ll Learn |
|---|---|---|
| Agent Communication | /guides/a2a/agent-communication/ | Information exchange patterns, request‑response semantics, conversation management |
| Agent Messaging | /guides/a2a/agent-messaging/ | Message formats, payload design, schema validation, serialization (JSON/Protobuf/gRPC), reliable delivery |
| Agent Collaboration | /guides/a2a/agent-collaboration/ | Task decomposition, owner‑worker patterns, context propagation, result aggregation, failure handling |
| A2A Workflows | /guides/a2a/a2a-workflows/ | Sequential, parallel, and iterative workflows, workflow state management, orchestration |
| A2A Best Practices | /guides/a2a/best-practices/ | Production hardening: security, monitoring, testing, idempotency, deployment, anti‑patterns |
Related handbook topics
- Agent Workflows —
/guides/agent-workflows/— higher‑level workflow orchestration beyond A2A - Agent Memory —
/guides/agent-memory/— long‑term shared memory across agents and sessions - Agent Tools —
/guides/agent-tools/— exposing and discovering tools via A2A - MCP Client —
/guides/mcp/client/— connecting agents to external tools (MCP)
Recommendation: If you are new to A2A, read the articles in the order shown above. Each introduces concepts that the next one builds upon. If you are an experienced practitioner, the Best Practices article is a good place to validate your approach.
Best Practices Overview
While detailed best practices are covered in the dedicated article, here is a high‑level summary of what makes a production‑ready A2A implementation.
| Practice Area | Key Principle | Why It Matters |
|---|---|---|
| Structured messages | Use a consistent envelope (ID, sender, receiver, type, payload, metadata) | Agents from different teams can understand each other without custom parsers |
| Validate communication | Validate every incoming message (schema + business rules) | Prevents crashes, data corruption, and security issues from malformed inputs |
| Track context | Carry conversation IDs, task IDs, and session data in every message | Enables multi‑turn interactions and disambiguation between parallel goals |
| Monitor collaboration | Export metrics for message volume, latency, errors, workflow completion | You cannot debug what you cannot observe — metrics are essential for operations |
| Handle failures gracefully | Retry with exponential backoff, use circuit breakers, implement idempotency | Temporary failures (network, overload) should not cause permanent system failures |
| Secure by design | Authenticate every request, authorise every capability, protect sensitive data | Prevents unauthorised access and data leaks in multi‑agent environments |
These principles are explored in depth with code examples in the A2A Best Practices article.
Frequently Asked Questions
1. What is A2A?
A2A (Agent‑to‑Agent) is an open protocol that enables AI agents to communicate, collaborate, and coordinate tasks securely — regardless of which framework or vendor built them.
2. Why do AI agents need A2A?
Without A2A, agents built on different frameworks cannot talk to each other. Every pair of agents requires custom integration — which doesn’t scale. A2A provides a common language that all agents understand.
3. Is A2A the same as MCP?
No. A2A is for agent‑to‑agent communication. MCP is for agent‑to‑tool communication. They are complementary and designed to work together.
4. Who created A2A?
Google launched A2A in April 2025. In June 2025, Google donated the protocol to the Linux Foundation, which now hosts it as a neutral, open‑source project.
5. Is A2A open source?
Yes. A2A is open‑sourced under the Apache 2.0 license and is governed by the Linux Foundation as the Agent2Agent project.
6. What languages and frameworks support A2A?
A2A has SDKs for Python, .NET, Java, Rust, Ruby, Elixir, and more. Framework integrations include Google ADK, AG2 (AutoGen), Semantic Kernel, and LangChain.
7. How do agents discover each other in A2A?
Each agent publishes an Agent Card (JSON metadata) at a well‑known URI (typically /.well-known/agent.json). Clients fetch this card to discover capabilities and endpoints.
8. What’s the difference between a Message and a Task?
A Message is a single exchange — good for simple questions. A Task is a persistent, stateful unit of work with a unique ID and status — essential for goal‑oriented, long‑running, or parallel collaborations.
9. Does A2A support streaming responses?
Yes. For long‑running tasks, A2A uses Server‑Sent Events (SSE) over HTTP to push real‑time progress updates and partial results.
10. What transport protocols does A2A use?
A2A is transport‑agnostic: it supports JSON‑RPC over HTTPS, HTTP+JSON (REST), gRPC, and WebSockets. Clients pick the transport from the Agent Card.
11. How does A2A handle security?
A2A supports enterprise‑grade authentication (OAuth 2.0, API keys, mTLS) and authorisation, with security requirements declared in the Agent Card. Full audit logging and message integrity are also supported.
12. Can A2A agents work across different clouds?
Yes. Because A2A is built on standard web technologies (HTTPS, JSON‑RPC), it works seamlessly across cloud providers, on‑premises data centres, and hybrid environments.
13. What are the most common use cases for A2A?
Research and data analysis workflows, customer support systems, workflow automation, and content generation pipelines. Enterprises are also using it for supply chain coordination and sales automation.
14. Do I need to choose between A2A and MCP?
No. Most production agents will use both — MCP to connect to tools and data, and A2A to collaborate with other agents. They are designed as complementary standards.
15. How do I get started building A2A agents?
Install one of the A2A SDKs (e.g., pip install a2a-server for Python, or the A2A .NET SDK for C#), implement an agent handler, and run the server. The Agent Development Kit (ADK) also offers native A2A support.
16. Does A2A work with existing enterprise infrastructure (proxies, firewalls)?
Yes. A2A uses standard HTTPS on port 443, so it works seamlessly with existing load balancers, API gateways, firewalls, and authentication systems.
17. What is the current version of the A2A protocol?
Version 0.3 is the latest stable release. It includes gRPC support, signed security cards, and extended client‑side capabilities. The ecosystem is moving toward a production‑ready 1.0 specification.
18. How big is the A2A ecosystem?
More than 150 organisations support A2A, including every major hyperscaler (AWS, Google, Microsoft), leading technology providers (Cisco, SAP, Salesforce, ServiceNow), and many others.
19. Can I expose an existing agent (LangChain, CrewAI, etc.) as an A2A server?
Yes. The python-a2a library includes integrations with LangChain, and the A2A Server framework allows you to wrap any custom Python agent with minimal code.
20. Where can I find the official A2A specification?
The official specification is available at a2a-protocol.org. The source code and SDKs are on GitHub under the a2aproject organisation.
Conclusion
A2A is transforming how AI agents work together. By providing an open, standardised protocol for agent‑to‑agent communication, it breaks down the silos that have limited multi‑agent systems to single‑vendor, single‑framework deployments.
- What A2A is — an open protocol for secure, standardised agent communication and collaboration, now hosted by the Linux Foundation
- Why it matters — no agent can do everything alone. A2A enables complex workflows, parallel execution, and specialised agents that work together
- How it works — JSON‑RPC 2.0 over HTTPS, Agent Card discovery, Task state machines, and streaming (SSE) for real‑time updates
- Where to go next — work through the learning path: Agent Communication → Agent Messaging → Agent Collaboration → A2A Workflows → A2A Best Practices
The ecosystem is growing rapidly, with more than 150 organisations contributing to the standard. SDKs exist for most major languages, and frameworks like ADK, AG2, and Semantic Kernel now have native A2A support.
Your next step
Now that you understand what A2A is and why it matters, continue your journey with the next article in the series:
👉 Agent Communication — request/response patterns, conversation flows, and protocol fundamentals →
This will teach you how agents exchange information, manage conversations, and implement the core interaction patterns that every A2A system relies on.
This article is part of the AgentDevPro Handbook — practical, engineering‑focused guides for building production AI agent systems.