Agent2Agent Protocol (A2A) Notes: Architecture, Agent Cards, Tasks, MCP & Examples
Learn Agent2Agent Protocol (A2A) with beginner-friendly notes covering Agent Cards, tasks, messages, artifacts, streaming, security, MCP comparison and examples

Artificial intelligence is moving beyond the era of isolated chatbots and single-purpose assistants. Modern AI systems are increasingly made up of multiple specialized agents. One agent may handle customer support, another may process payments, another may search company knowledge, while another may manage logistics.
The interesting question is no longer only, “What can an AI agent do?”
A much bigger question is:
“How can independent AI agents work together when they were created by different teams, use different frameworks, run on different clouds, and may even use completely different AI models?”
This is the problem the Agent2Agent Protocol, commonly shortened to A2A, is designed to solve.
A2A provides a common communication layer that allows independent AI agents to discover each other, understand available capabilities, exchange tasks, send messages, return results, stream progress, and collaborate without exposing their internal implementation.
The protocol was introduced by Google in April 2025 and was later contributed to the Linux Foundation for open governance. Its central idea is straightforward: one agent should be able to hand work to another and receive a useful result without needing to know how the second agent is built internally.
In this guide, we will understand the Agent2Agent Protocol from the ground up, including its architecture, Agent Cards, tasks, messages, artifacts, streaming, security, multi-agent orchestration, comparison with MCP, and practical implementation concepts.
What Is the Agent2Agent Protocol?
The Agent2Agent Protocol is an open communication specification for AI agents.
Its purpose is not to tell developers how an AI agent should think, which large language model it should use, how memory should be implemented, or which tools the agent should access.
Instead, A2A focuses on the communication boundary between agents.
Imagine that Company A creates an AI travel planning agent using one framework while an airline develops its own booking agent using another technology stack.
The travel agent should not need access to the airline agent's source code or internal prompts.
It simply needs to know:
- What can this airline agent do?
- How do I communicate with it?
- How do I authenticate?
- How do I give it a task?
- What is the status of that task?
- How will the final result be returned?
A2A standardizes these interactions.
The protocol deliberately keeps an agent's internal implementation opaque. It standardizes how agents present themselves and exchange work rather than how they reason internally.
A simple way to think about A2A is:
Agent A has a job → Agent A finds Agent B → Agent A delegates the job → Agent B performs the job → Agent B returns the result.
That sounds simple, but providing a common standard for doing this reliably across organizations and technologies is extremely valuable.
Why Was A2A Needed?
Before protocols such as A2A, connecting independent AI agents often required custom integrations.
Consider a company with three AI agents:
- an IT support agent
- a finance or invoice agent
- an HR agent
Suppose an employee requests a replacement laptop.
The process might require:
- The IT agent to identify the hardware requirement.
- The finance agent to approve or create a purchase order.
- The HR agent to provide the employee's department or cost center.
If these agents were created independently, every agent might expose a completely different API.
Developers could create custom connectors:
IT Agent → Custom Connector → Finance Agent
IT Agent → Custom Connector → HR Agent
Finance Agent → Custom Connector → HR Agent
But this becomes difficult to maintain.
Every additional agent creates more integration relationships. If an internal API changes, multiple connectors may need to be updated.
A2A changes the approach.
Instead of understanding every agent's proprietary interface, agents can communicate through the same protocol:
IT Agent → A2A → Finance Agent
IT Agent → A2A → HR Agent
Finance Agent → A2A → HR Agent
This becomes even more important when agents belong to different organizations. The source notes describe how custom point-to-point integrations become expensive, fragile, and sometimes impossible when companies do not control one another's systems.
Why Not Simply Use a REST API?
This is one of the most important questions for developers learning A2A.
Traditional APIs are excellent for operations such as:
- Create a user
- Fetch an order
- Update a product
- Delete a record
- Retrieve account information
But autonomous agent tasks can behave differently.
An agent may receive a request and then discover that:
- the task requires several minutes
- additional information is missing
- the user must approve something
- progress should be streamed
- multiple outputs need to be generated
- another agent needs to be contacted
For example, imagine asking an AI travel agent:
Plan a seven-day European trip under a fixed budget, including flights, hotels, transport, and activities.
That is not simply a single database operation.
The agent may need to work for some time, ask clarifying questions, communicate with other agents, generate intermediate results, and return multiple deliverables.
A2A was designed around these agent-oriented workflows, including discovery, long-running tasks, mid-task clarification, streaming, and structured status reporting.
Client Agents and Remote Agents
Every A2A interaction can be understood through two fundamental roles.
Client Agent
The client agent starts the interaction.
It has some work that needs to be performed and decides to delegate that work to another agent.
For example:
A personal travel assistant needs current flight options, so it contacts an airline's agent.
In this interaction, the personal travel assistant is the client agent.
Remote Agent
The remote agent, sometimes described as the A2A server, receives the request and performs the work.
In the previous example, the airline's booking agent acts as the remote agent.
These roles are not permanent identities.
The same agent can be a remote agent in one interaction and a client agent in another.
Consider:
User Agent → Trip Planning Agent → Airline Agent
The trip planning agent is a remote agent from the user's perspective.
But when it asks the airline agent for flight information, it becomes a client agent.
This ability to chain agents is what makes sophisticated multi-agent workflows possible.
How the Agent2Agent Protocol Works
A typical A2A interaction can be understood as a sequence of stages.
Step 1: Discover the Agent
Before sending work, a client needs to know what another agent can do.
That information is provided using an Agent Card.
Step 2: Read the Agent's Capabilities
The card can describe capabilities such as:
- supported skills
- input formats
- output formats
- streaming support
- push notification support
- authentication requirements
The client determines whether that agent is suitable for the requested task.
Step 3: Authenticate
If authentication is required, the client provides the appropriate credentials.
Step 4: Send a Message
The client sends an A2A message describing what needs to be done.
Step 5: Create or Continue a Task
The remote agent processes the request as a task.
Step 6: Track Progress
Depending on the task, the client may:
- receive an immediate response
- poll for task status
- stream live progress
- receive a push notification later
Step 7: Handle Clarification
If the remote agent needs more information, the task can pause and request additional input.
Step 8: Receive Artifacts
When the work is complete, deliverable outputs can be returned as artifacts.
This lifecycle makes A2A much better suited to autonomous work than a simple one-request, one-response API model.
Understanding the Agent Card
One of A2A's most important concepts is the Agent Card.
An Agent Card is a machine-readable JSON document describing a remote agent.
Think of it as a combination of:
- a business card
- a capability profile
- a lightweight API description
The document helps another agent determine whether it should communicate with the remote agent.
According to the protocol notes, the Agent Card can describe identity, endpoint URL, version, capabilities, skills, accepted input/output modes, and security schemes.
A simplified conceptual Agent Card could look like this:
{
"name": "Travel Planning Agent",
"description": "Helps create personalized travel plans",
"url": "https://example.com/a2a",
"version": "1.0.0",
"capabilities": {
"streaming": true
},
"skills": [
{
"id": "plan_trip",
"name": "Plan Trip",
"description": "Creates personalized travel itineraries"
}
]
}
The most interesting part is often the skills section.
Skills tell other agents what the remote agent actually knows how to do.
A logistics agent, for example, might advertise skills for:
- route optimization
- shipment tracking
- delivery estimation
A finance agent might advertise:
- invoice processing
- expense analysis
- refund processing
Clear skill descriptions matter because another AI agent may be making the decision about which remote agent to call.
How A2A Communication Happens
A2A builds on technologies backend developers already understand rather than introducing an entirely new networking model.
The notes describe A2A communication as using JSON-RPC 2.0 over HTTP, with Server-Sent Events used where streaming is needed.
A simplified request might resemble:
{
"jsonrpc": "2.0",
"id": "request-101",
"method": "message/send",
"params": {
"message": {
"role": "user",
"parts": [
{
"type": "text",
"text": "Create an optimized delivery route for these locations."
}
]
}
}
}
The remote agent may return a task:
{
"jsonrpc": "2.0",
"id": "request-101",
"result": {
"id": "task-5001",
"status": {
"state": "working"
}
}
}
A key advantage is that developers can use familiar infrastructure:
- HTTP servers
- HTTPS
- JSON
- authentication middleware
- logging systems
- proxies
- monitoring platforms
A2A adds agent-specific semantics on top of technologies the web ecosystem already understands.
Because the protocol is evolving, exact method names and field structures should always be checked against the current official specification before implementing production systems. The study notes explicitly warn that method names have already changed during the protocol's development.
Tasks and the Task Lifecycle
A Task is one of the central objects in A2A.
It represents a unit of work assigned by one agent to another.
A task may contain:
- a unique ID
- status
- message history
- timestamps
- output artifacts
Unlike traditional API calls, an A2A task does not necessarily finish immediately.
A remote agent could complete something in one second, or it could continue for several minutes or hours.
The protocol describes multiple task states, including:
submittedworkinginput-requiredauth-requiredcompletedfailedcanceledrejected
The notes distinguish terminal states such as completed, failed, canceled, and rejected from active states where work may still continue.
A basic successful lifecycle may be:
submitted ↓ working ↓ completed
But agent work becomes more interesting when clarification is required.
Consider:
submitted ↓ working ↓ input-required ↓ working ↓ completed
The remote agent may say:
Which city should I use as the departure location?
The client provides the missing information, and the task continues.
That small capability is extremely important because autonomous work frequently involves ambiguity.
Messages, Parts, and Artifacts
Understanding these concepts prevents a lot of confusion when learning A2A.
Messages
Messages represent conversation turns.
A message may come from:
- the client side with role
user - the remote side with role
agent
Messages might contain instructions, clarification questions, progress information, or additional context.
The ordered message history can therefore represent the conversation that occurred around the task.
Parts
A message can contain different forms of content.
The notes describe three important categories:
Text Parts
Used for ordinary text.
Example:
{
"type": "text",
"text": "Generate a summary of the report."
}
File Parts
Used when agents need to exchange files such as:
- PDFs
- spreadsheets
- images
- documents
- audio files
Files may be represented inline for smaller payloads or referenced through a URI where appropriate.
Data Parts
Structured data can be exchanged directly when machine-readable information is more useful than prose.
This is particularly useful when the receiving agent needs fields it can process programmatically.
The protocol's multi-modal approach matters because real business work rarely consists entirely of plain text.
Artifacts
Artifacts are different from messages.
Messages are primarily how agents communicate.
Artifacts are deliverables produced by the remote agent.
For example, if you ask a data-analysis agent to analyze monthly revenue:
Messages might include:
- "Analyze this spreadsheet."
- "Which currency should I use?"
- "Use INR."
Artifacts might include:
- analysis report
- generated chart
- processed CSV
- JSON results
A useful mental shortcut is:
Messages are the conversation. Artifacts are the work product.
Synchronous Communication, Streaming, and Push Notifications
Not every task needs the same communication strategy.
A2A supports different patterns depending on how long the task takes.
Synchronous Response
For quick operations, a normal request-response interaction may be enough.
You send the task.
The agent performs it.
The result comes back immediately.
This works well for short tasks.
Polling
For medium-length tasks, the client can periodically request the latest task status.
This is straightforward to implement but becomes inefficient if you poll too frequently.
Streaming with Server-Sent Events
For longer tasks where live updates improve the experience, A2A can use Server-Sent Events, or SSE.
Instead of repeatedly asking:
Are you done yet?
the connection remains open and the remote agent can send progress as events occur.
Possible updates include:
- task status changes
- incremental artifact updates
- completion signals
The study notes recommend streaming when users actually benefit from seeing incremental output, such as document generation, research, or other multi-step work, rather than using it unnecessarily for fast requests.
Push Notifications
Some tasks may last much longer.
Keeping an HTTP connection open for hours may not make sense.
In those cases, the client can provide a webhook endpoint.
When something changes, the remote agent calls the webhook.
This approach works particularly well for:
- asynchronous research
- background processing
- complex enterprise workflows
- tasks waiting on external systems
- tasks that may take hours
The client must authenticate webhook requests carefully because the communication direction is reversed and an unprotected endpoint could receive forged updates.
Multi-Agent Orchestration
The real power of A2A appears when more than two agents participate.
Imagine a travel application containing an orchestrator agent.
A user says:
Plan my complete five-day trip.
The orchestrator might delegate work to:
- Flight Agent
- Hotel Agent
- Activity Agent
- Transportation Agent
The orchestrator collects their results and creates the final plan.
The source material describes three especially useful orchestration patterns.
Sequential Delegation
Use sequential execution when later steps depend on earlier results.
For example:
- Find flights.
- Calculate remaining budget.
- Find hotels within that remaining budget.
The hotel request cannot be finalized correctly until the flight cost is known.
Parallel Delegation
If tasks do not depend on one another, they can execute simultaneously.
For example:
- research restaurants
- research museums
- research local transportation
Parallel execution can reduce total completion time.
Fan-Out and Aggregation
Sometimes an orchestrator can ask several agents to solve the same problem.
For example, it might request flight options from multiple travel agents and then compare the results.
This pattern can improve coverage but also introduces challenges such as conflicting information and partial failure.
An orchestrator should therefore validate results and avoid silently presenting incomplete information as a complete success.
Security and Trust in A2A
Agent-to-agent communication introduces serious security considerations.
A2A agents may exchange business data, files, instructions, credentials, and outputs that could lead to real-world actions.
Authentication
Agent Cards can declare supported authentication approaches.
Examples described in the notes include:
- API keys
- bearer tokens
- OAuth 2.0
- OpenID Connect
HTTPS should be used for real deployments so sensitive task content and credentials are not transmitted in plain text. Authentication establishes who the caller is, while authorization determines what that caller is permitted to do.
Least Privilege
Agents should receive only the permissions they genuinely require.
A delivery-planning agent does not need the ability to issue customer refunds.
Limiting permissions reduces damage if an agent is compromised.
Prompt Injection Between Agents
Prompt injection becomes even more complicated when information travels between autonomous systems.
Imagine Agent A sends a document to Agent B.
That document contains hidden malicious instructions attempting to convince Agent B to perform an unauthorized action.
If Agent B blindly treats everything it receives as trusted instructions, it may behave dangerously.
The notes therefore recommend treating inter-agent content as untrusted data and placing consequential actions behind appropriate controls.
Agent Cards Are Claims
An Agent Card describes what an agent says it can do.
That does not automatically prove that the agent is safe, reliable, accurate, or trustworthy.
Organizations may still need:
- access control
- reputation systems
- contractual trust
- output validation
- rate limits
- logging
- monitoring
- approval workflows
Interoperability does not remove the need for security engineering.
A2A vs MCP: What Is the Difference?
The Agent2Agent Protocol and Model Context Protocol are frequently discussed together, which can make them seem like competing technologies.
They solve different problems.
MCP
MCP helps an AI application interact with tools, data, resources, and other capabilities.
Think:
Agent → Tool
Examples include:
- database access
- file retrieval
- search
- internal APIs
- development tools
A2A
A2A allows independent agents to collaborate.
Think:
Agent → Agent
The attached notes describe MCP as a more vertical relationship between an application and its resources, while A2A creates a horizontal relationship between peer agents. A2A also keeps a remote agent's internal implementation opaque and focuses on delegating tasks rather than controlling individual internal tool calls.
A useful architecture could therefore look like:
A2A
Agent A ←────────────→ Agent B
│ │
│ MCP │ MCP
↓ ↓
Tools + Data Tools + Data
Agent A can use MCP internally.
Agent B can also use MCP internally.
A2A connects the two agents.
That is why the protocols can complement one another rather than replace each other.
Building Applications with A2A
From a developer's perspective, implementing A2A generally requires two sides.
Building a Remote Agent
A remote agent needs to:
- Define its capabilities.
- Define useful skills.
- Publish its Agent Card.
- Expose an A2A endpoint.
- Accept incoming messages.
- Create and manage tasks.
- Report task status.
- Request additional input when necessary.
- Produce artifacts.
- Apply authentication and authorization.
SDKs can simplify much of the protocol plumbing. The notes mention Python and JavaScript or TypeScript as commonly used SDK ecosystems while also emphasizing that SDK availability and maturity should be verified against the official project because A2A continues to evolve.
Building an A2A Client
The client side typically needs to:
- Locate the remote agent.
- Fetch its Agent Card.
- Read available skills.
- Determine authentication requirements.
- Send a message.
- Track the resulting task.
- Process status changes.
- Respond to
input-required. - Consume artifacts.
- Handle failure or cancellation.
A robust client must not assume that every task follows the simple:
submitted → working → completed
path.
Real systems need to handle every meaningful state.
Real-World Use Cases of A2A
A2A becomes especially valuable in environments containing many specialized AI agents.
1. Travel Planning
A central travel agent could coordinate:
- flight agents
- hotel agents
- restaurant agents
- local transportation agents
- activity booking agents
Each agent remains independently maintained.
2. Customer Support
A support agent might delegate work to:
- billing agent
- refund agent
- technical troubleshooting agent
- shipment tracking agent
Instead of one enormous AI system containing every capability, specialist agents collaborate.
3. Enterprise Workflow Automation
Large businesses may have independent agents for:
- HR
- IT
- procurement
- finance
- security
- legal operations
A2A provides a shared communication model between them.
4. Software Development
A software engineering workflow could contain:
- requirements agent
- coding agent
- testing agent
- security review agent
- deployment agent
An orchestrator could assign work based on each agent's specialization.
5. Cybersecurity Operations
A security environment might include:
- threat-intelligence agent
- log-analysis agent
- malware-analysis agent
- incident-response agent
- vulnerability-management agent
A suspicious event could trigger collaboration across several specialized systems.
6. Logistics
A logistics platform might combine:
- route planning
- warehouse operations
- shipment tracking
- delivery estimation
- inventory management
Agent-to-agent communication could coordinate workflows without requiring every service to expose its private implementation.
Benefits of the Agent2Agent Protocol
A2A offers several important advantages.
Interoperability
Agents created using different technologies can communicate through a shared protocol.
Reduced Custom Integration
Teams do not need to create unique connectors for every possible agent pair.
Agent Discovery
Agent Cards provide a machine-readable description of capabilities.
Long-Running Task Support
Tasks can continue asynchronously instead of requiring instant responses.
Human-Like Clarification
An agent can pause with input-required rather than guessing when information is missing.
Multi-Modal Communication
Agents can exchange text, files, structured data, and deliverable artifacts.
Streaming
Long-running operations can provide incremental progress.
Separation of Internal Architecture
One organization does not need access to another agent's private prompts, model choices, tools, or reasoning implementation.
Multi-Agent Scalability
Orchestration patterns make it possible to divide complex goals among specialized agents.
Challenges and Limitations of A2A
A2A is promising, but implementing multi-agent systems introduces complexity.
Trust Is Difficult
An Agent Card cannot guarantee an agent's reliability.
Partial Failure Is Normal
In workflows involving many agents, one service may fail while others succeed.
The orchestrator must decide whether to retry, use an alternative agent, continue with partial results, or stop entirely.
Observability Becomes Essential
Debugging a workflow involving six agents is much harder than debugging one API call.
Consistent identifiers, logs, traces, and task histories become extremely valuable.
Security Boundaries Multiply
Every remote agent is another trust boundary.
Versions Can Change
A2A remains an actively evolving specification. The notes explicitly recommend treating the official specification and project repository as the authoritative source because field shapes, method names, and SDK maturity may change.
Best Practices for Using A2A
If you plan to experiment with or build an A2A system, several practices are especially important.
Write clear skills
An agent's skill description should clearly communicate what the agent can and cannot do.
Read Agent Cards dynamically
Clients should not blindly hard-code assumptions about remote agents.
Handle every task state
Do not design only for successful completion.
Handle:
- failure
- cancellation
- rejection
- authentication requirements
- clarification requests
Choose communication patterns based on task duration
Use simple requests for quick tasks.
Use polling when appropriate.
Use streaming when real-time progress matters.
Use push notifications for long-running asynchronous work.
Keep artifacts separate from conversation
Deliverables should remain easy to locate programmatically.
Treat remote output as untrusted
Do not automatically execute instructions contained inside another agent's output.
Use least-privilege access
Give every agent only the credentials and permissions it actually needs.
Plan for partial failures
Multi-agent systems should expect individual agents to occasionally fail.
Preserve context for tracing
For related sub-tasks, a consistent context identifier can make debugging and observability much easier.
These recommendations align with the practical checklist in the A2A study notes, which emphasizes honest task states, deliberate use of input-required, narrow permissions, dynamic Agent Card reading, correct communication-pattern selection, validation of remote content, and planning for multi-agent failures.
The Future of Agent-to-Agent Communication
AI agents are becoming increasingly specialized.
Instead of building one enormous model-driven application responsible for every business operation, organizations can build smaller agents that specialize in clearly defined tasks.
A finance agent does not need to understand warehouse routing.
A logistics agent does not need to know how HR policies work.
A cybersecurity agent does not need access to payroll.
Each agent can specialize while communicating through a shared interoperability layer.
This resembles what happened with other technologies.
Websites became more useful when HTTP standardized communication.
Software ecosystems became easier to integrate through APIs.
Cloud applications became more modular through services and standardized interfaces.
Agent interoperability may become another important layer of software infrastructure.
A2A's significance is therefore not only about allowing two AI bots to send messages to each other.
The larger idea is creating an ecosystem where autonomous software can discover capabilities, delegate responsibility, coordinate work, handle asynchronous tasks, and exchange results across organizational boundaries.
That is a much bigger shift.
Conclusion
The Agent2Agent Protocol represents an important step toward interoperable multi-agent AI systems.
Its value comes from a relatively simple idea: independent agents should be able to collaborate without requiring knowledge of one another's internal architecture.
A2A provides concepts such as:
- Agent Cards for discovery
- client and remote agent roles
- JSON-RPC communication over HTTP
- tasks and task states
- messages
- text, file, and structured data parts
- artifacts
- streaming through Server-Sent Events
- push notifications
- authentication
- multi-agent orchestration
Together, these components create a communication model designed around the realities of autonomous AI work rather than traditional CRUD-style APIs.
Perhaps the easiest way to remember the protocol is through three ideas:
Discover the agent. Delegate the task. Receive the result.
And when A2A is combined with protocols such as MCP, an even richer architecture becomes possible. MCP can give an individual agent access to the tools and information it needs internally, while A2A allows that agent to collaborate with other independent agents externally.
As agentic AI systems grow, the challenge will increasingly shift from building individual intelligent agents to making entire ecosystems of agents work together safely and reliably.
That is exactly the problem A2A is trying to address.
Frequently Asked Questions About Agent2Agent Protocol
1. What is the Agent2Agent Protocol?
The Agent2Agent Protocol, or A2A, is an open protocol designed to allow independent AI agents to communicate and collaborate. It provides standardized mechanisms for agent discovery, task delegation, messages, task status, artifacts, streaming, authentication, and other interactions while keeping each agent's internal implementation private.
2. Is A2A the same as MCP?
No. They solve different problems. MCP primarily connects an AI application or agent with tools, data, and resources, while A2A connects independent agents with one another. A system can use both protocols simultaneously: MCP inside individual agents and A2A between those agents.
3. What is an Agent Card in A2A?
An Agent Card is a machine-readable document that describes a remote agent. It can include the agent's name, description, endpoint, version, capabilities, available skills, supported input and output modes, and authentication requirements. Client agents can examine this information before deciding whether to delegate a task.
4. How does A2A handle long-running AI tasks?
A2A supports several communication patterns. Quick tasks can use normal request-response communication, while longer tasks can use polling, Server-Sent Events for streaming, or push notifications through webhooks. Tasks also maintain states such as working, input-required, completed, and failed, allowing clients to understand what is happening during execution.
5. Why is A2A important for the future of AI agents?
As organizations deploy more specialized autonomous agents, connecting every agent through custom integrations becomes difficult to scale. A2A provides a shared communication model that can allow agents built by different teams, frameworks, or organizations to discover capabilities and delegate work while preserving implementation boundaries. This can make complex multi-agent systems easier to build, integrate, and operate.
