Master the Agent-to-Agent Protocol — the open standard by Google and the Linux Foundation for seamless AI agent communication across any framework.
Select your agent frameworks, count, and communication pattern to generate an A2A integration blueprint.
A2A uses HTTP and JSON-RPC to enable four core capabilities for multi-agent systems.
Agents publish Agent Cards — JSON metadata describing capabilities, skills, and endpoints. Other agents discover them via well-known URLs or registries.
Built-in authentication and authorization using OAuth 2.0, API keys, or mutual TLS. Agents negotiate trust before exchanging data.
Structured JSON-RPC messages with support for text, files, structured data, and streaming. Conversation context is maintained across turns.
Agents can create, assign, and track tasks with status updates (submitted, working, completed, failed). Long-running tasks support async callbacks.
Understanding when to use each protocol. A2A and MCP are complementary, not competing.
| Feature | A2A Protocol | MCP (Model Context Protocol) | Custom / Proprietary |
|---|---|---|---|
| Purpose | Agent-to-Agent communication | Model-to-Tool connectivity | Varies per implementation |
| Scope | Autonomous agent collaboration | Tool invocation & data access | Single vendor ecosystem |
| Transport | HTTP + JSON-RPC | stdio / HTTP + SSE | Varies (gRPC, REST, WebSocket) |
| Discovery | Agent Cards (JSON metadata) | Server capabilities negotiation | Manual configuration |
| Cross-framework | Yes — framework agnostic | Yes — via standard interface | No — vendor lock-in |
| Task Management | Built-in task lifecycle | Not applicable | Custom implementation |
| Streaming | SSE-based streaming | SSE support | Implementation-dependent |
| Auth & Trust | OAuth 2.0, API keys, mTLS | Basic auth support | Custom auth |
| Governance | Linux Foundation (open) | Anthropic (open spec) | Vendor-controlled |
| Adoption | 150+ organizations | Growing ecosystem | Single vendor |
| Best For | Multi-agent orchestration | Connecting models to tools/data | Internal, tightly-coupled systems |
Key insight: Use MCP to give your agents capabilities (tools, data), and A2A to let your agents collaborate with each other.
From Google announcement to Linux Foundation governance and the stable v1.0 release.
Google unveils the Agent-to-Agent Protocol with 50+ launch partners. The first draft specification is published targeting interoperability between AI agent frameworks like LangChain, CrewAI, and AutoGen.
Google donates A2A to the Linux Foundation for vendor-neutral governance. A Technical Steering Committee is formed with AWS, Cisco, Google, IBM, Microsoft, Salesforce, SAP, and ServiceNow.
The specification undergoes rapid iteration based on community feedback. Early adopters deploy A2A in beta environments. SDK support expands to Python, TypeScript, Java, Go, and .NET.
The first production-ready version of A2A is released. Over 150 organizations have adopted the protocol. The specification is stabilized with backward compatibility guarantees.
Get started with A2A in minutes. Define your agent, expose an endpoint, and start communicating.
# Step 1: Install the A2A Python SDK # pip install a2a-sdk from a2a import AgentServer, AgentCard, Task, Message # Step 2: Define your Agent Card card = AgentCard( name="ResearchAgent", description="An agent that researches topics and returns summaries", url="https://my-agent.example.com", skills=[{ "id": "research", "name": "Topic Research", "description": "Research any topic and provide a summary", }], auth_schemes=[{"type": "bearer"}] ) # Step 3: Handle incoming tasks async def handle_task(task: Task) -> Task: query = task.messages[-1].content.text result = await do_research(query) # Your logic task.add_message(Message( role="agent", content={"text": result} )) task.status = "completed" return task # Step 4: Start the A2A server server = AgentServer(card=card, handler=handle_task) server.run(port=8080)
// Step 1: Install the A2A TypeScript SDK // npm install @a2a/sdk import { AgentServer, AgentCard, Task } from '@a2a/sdk'; // Step 2: Define your Agent Card const card: AgentCard = { name: "CodeReviewAgent", description: "Reviews code and suggests improvements", url: "https://code-agent.example.com", skills: [{ id: "review", name: "Code Review", description: "Review code for bugs, style, and performance", }], authSchemes: [{ type: "apiKey" }], }; // Step 3: Handle incoming tasks async function handleTask(task: Task): Promise<Task> { const code = task.messages.at(-1)!.content.text; const review = await analyzeCode(code); task.addMessage({ role: "agent", content: { text: review }, }); task.status = "completed"; return task; } // Step 4: Start the A2A server const server = new AgentServer({ card, handler: handleTask }); server.listen(8080);
// .well-known/agent.json // This file is served at your agent's root URL // Other agents discover your capabilities via this card { "name": "ResearchAgent", "description": "An agent that researches topics and returns summaries", "url": "https://my-agent.example.com", "version": "1.0.0", "protocol": "a2a/1.0", "skills": [ { "id": "research", "name": "Topic Research", "description": "Research any topic and provide a structured summary", "inputSchema": { "type": "object", "properties": { "topic": { "type": "string" }, "depth": { "type": "string", "enum": ["brief", "detailed"] } } } } ], "authSchemes": [ { "type": "bearer", "in": "header" } ], "endpoints": { "tasks": "/a2a/tasks", "messages": "/a2a/messages" } }
From the Technical Steering Committee to enterprise adopters, A2A has broad industry support.
And 120+ more organizations across enterprise, startup, and open-source ecosystems.
Common questions about the A2A Protocol, its capabilities, and how to get started.
/.well-known/agent.json. Then set up a JSON-RPC endpoint to handle incoming tasks and messages. Install the official SDK (pip install a2a-sdk or npm install @a2a/sdk) and implement the core handler. Use the Architecture Planner at the top of this page to design your multi-agent topology.