Agent2Agent (A2A)
Google's open protocol for agent-to-agent communication and interoperability across different frameworks and organizations. A2A enables agents built with different frameworks to discover each other's capabilities, negotiate interaction modes, and collaborate on tasks. It complements MCP (which connects agents to tools) by focusing on agent-to-agent coordination.
Architecture Overview
A2A uses an HTTP-based protocol where each agent exposes an Agent Card (a JSON metadata document at /.well-known/agent.json) describing its capabilities, supported modes, and authentication requirements. Agents communicate through Tasks, which go through states (submitted, working, input-required, completed, failed). Communication happens via JSON-RPC over HTTP, with support for streaming via Server-Sent Events. The protocol supports opaque parts (multimodal content exchange) and push notifications for long-running tasks.
When to Use Agent2Agent (A2A)
- Cross-framework agent communication and collaboration
- Agent discovery and capability advertisement
- Enterprise agent networks with heterogeneous frameworks
- Multi-organization AI agent coordination
- Building agent marketplaces and ecosystems
Strengths & Weaknesses
Strengths
- Google-backed with broad industry support (50+ launch partners)
- Framework-agnostic design works with any agent implementation
- Complements MCP for a complete interoperability stack
- Supports streaming, push notifications, and multimodal content
- Enterprise-focused with authentication and authorization support
Weaknesses
- Early stage protocol still under active development
- Limited real-world production deployments so far
- Competing mindshare with MCP in the standardization space
Quick Start
# A2A Agent Card (/.well-known/agent.json)
# This is the discovery mechanism for A2A agents
agent_card = {
"name": "Weather Agent",
"description": "Provides weather information for any city worldwide.",
"url": "https://weather-agent.example.com",
"version": "1.0.0",
"capabilities": {
"streaming": True,
"pushNotifications": False,
},
"skills": [
{
"id": "get-weather",
"name": "Get Weather",
"description": "Get current weather for a location",
"inputModes": ["text/plain"],
"outputModes": ["text/plain", "application/json"],
}
],
}
# A2A client sending a task to another agent
import httpx
async def send_task_to_agent(agent_url: str, message: str):
async with httpx.AsyncClient() as client:
response = await client.post(
f"{agent_url}/tasks/send",
json={
"jsonrpc": "2.0",
"method": "tasks/send",
"params": {
"id": "task-001",
"message": {
"role": "user",
"parts": [{"type": "text", "text": message}],
},
},
"id": "req-001",
},
)
return response.json()Features at a Glance
| Developer | |
| Language | Python, TypeScript |
| License | Apache-2.0 |
| GitHub Stars | 5k+ |
| MCP Support | No |
| Multi-Agent | Yes |
Notable Users
Resources
Explore Related Content
Multi-Agent Systems
Coordinating multiple AI agents to collaborate, delegate, and solve complex problems together.
GuideMulti-Agent Architecture
Design and build systems with multiple collaborating agents using supervisor and peer patterns.
PatternPeer Collaboration
Agents communicate directly without a central orchestrator for exploratory and creative tasks.