A2A
Agent2Agent (A2A) is an open protocol enabling communication and interoperability between opaque agentic applications.
Last verified:
What is A2A?
The Agent2Agent (A2A) Protocol is an open standard initiated by Google and now donated to the Linux Foundation, designed to enable seamless communication and interoperability between disparate AI agent systems. The protocol provides a common language for agents built on different frameworks (such as LangGraph, CrewAI, Semantic Kernel) or by different vendors to discover each other's capabilities, negotiate interaction modes, and collaborate on tasks.
Key features include Agent Discovery through Agent Cards (JSON metadata documents describing an agent's identity, capabilities, and endpoints), standardized task management with a clear lifecycle and states, support for multiple content types (text, files, structured data), and real-time streaming updates for long-running tasks. The protocol also supports push notifications for asynchronous task updates, secure opaque execution where agents don't need to share internal memory or tools, and multiple protocol bindings including JSON-RPC, gRPC, and HTTP/REST.
The A2A Protocol is designed for AI developers, enterprise teams building agentic systems, and organizations seeking to create interconnected AI ecosystems. It enables clients to build A2A-compliant agents that can communicate with remote agents, local agents, and humans. Official SDKs are available for Python, JavaScript, Java, C#/.NET, and Golang, with code samples and tutorials provided through the official documentation.
The protocol works complementarily with Model Context Protocol (MCP): while MCP handles agent-to-tool communication, A2A handles agent-to-agent communication. IBM's Agent Communication Protocol was incorporated into A2A, and Cisco's agntcy framework leverages A2A for agent communication and discovery.
A2A pricing
Pricing model: Freemium
The A2A Protocol is completely free and open source, licensed under Apache License 2.0. The specification, reference implementations, Python SDK, and all official SDKs (Python, JavaScript, Java, C#/.NET, Golang) are available at no cost through the official website at a2a-protocol.org and the GitHub repository at a2aproject/A2A. No account or payment is required to access, implement, or contribute to the protocol. The protocol itself has no paid tiers or subscription fees - it is a community-driven open standard.
A2A pros
- Open source under Apache License 2.0 with no cost to use or implement
- Enables interoperability between agents built on different frameworks like LangGraph, CrewAI, and Semantic Kernel
- Agent Cards provide standardized discovery of agent capabilities and endpoints
- Supports streaming for real-time updates during long-running tasks
- Push notifications enable asynchronous task updates via webhooks
- Opaque execution preserves intellectual property by not requiring sharing of internal memory or tools
- Official SDKs available for Python, JavaScript, Java, C#/.NET, and Golang
- Standardized task lifecycle with clear states and transitions
- Multiple content types supported including text, files, and structured data
- Built on well-understood standards like HTTP, JSON-RPC 2.0, and Server-Sent Events
- Enterprise-ready with authentication, authorization, and security best practices
- Async-first design supports long-running tasks and human-in-the-loop scenarios
- Protocol bindings include JSON-RPC, gRPC, and HTTP/REST for flexibility
- Backed by Google and donated to Linux Foundation for long-term sustainability
- IBM's Agent Communication Protocol merged into A2A, expanding adoption
- Mode agnostic supports text, audio/video via file references, and structured data forms
A2A cons
- Relatively new protocol launched in April 2025, limited real-world deployment experience
- Requires implementing A2A compliance which adds development overhead for existing agents
- Learning curve for understanding the three-layer specification architecture
- Limited ecosystem of pre-built A2A-compliant agents compared to mature protocols
- Push notification support is optional and depends on agent implementation
- Streaming support is optional and may not be available in all implementations
- Extended Agent Card feature requires authentication setup which adds complexity
- Protocol specification is complex with multiple layers and protocol bindings to understand
Frequently asked questions about A2A
What is the A2A Protocol?
The Agent2Agent (A2A) Protocol is an open standard initiated by Google and now donated to the Linux Foundation, designed to enable seamless communication and interoperability between disparate AI agent systems. It provides a common language for agents built on different frameworks or by different vendors to discover each other's capabilities, negotiate interaction modes, and collaborate on tasks without needing to share internal state, memory, or tools.
How is A2A different from MCP?
A2A and MCP serve complementary but different purposes. A2A provides agent-to-agent communication, enabling different AI agents to collaborate regardless of their underlying frameworks. MCP (Model Context Protocol) provides agent-to-tool communication, standardizing how an agent connects to its tools, APIs, and resources. A2A acts as the public internet for agents while MCP enhances individual agent capabilities.
What are Agent Cards?
Agent Cards are JSON metadata documents published by an A2A Server that describe an agent's identity, capabilities, skills, service endpoint, and authentication requirements. They enable agent discovery by allowing clients to understand what capabilities a remote agent offers before initiating communication.
What programming languages have official SDKs?
Official SDKs are available for Python, JavaScript, Java, C#/.NET, and Golang. These can be downloaded from the official A2A Protocol website. The protocol is framework-agnostic, so agents built with ADK or any other framework can communicate using A2A.
How does A2A handle security?
A2A is enterprise-ready and addresses security through standard web security practices including authentication and authorization. The protocol supports various authentication schemes declared in Agent Cards, and agents interact without exposing internal memory, tools, or proprietary logic, ensuring security and preserving intellectual property through opaque execution.
What is the task lifecycle in A2A?
Tasks are the fundamental unit of work in A2A, identified by unique IDs and progressing through defined states: WORKING, COMPLETED, FAILED, CANCELED, REJECTED, INPUT_REQUIRED, and AUTH_REQUIRED. The protocol provides standardized operations for sending messages, getting task status, listing tasks, canceling tasks, and subscribing to task updates.
Does A2A support streaming?
Yes, A2A supports real-time streaming through the Send Streaming Message operation and Subscribe to Task operation. Streaming delivers incremental updates including task status changes and artifact chunks via protocol-specific mechanisms. However, streaming support is optional and depends on the agent implementation.
What are push notifications in A2A?
Push notifications enable asynchronous task updates delivered via server-initiated HTTP POST requests to a client-provided webhook URL. This is designed for long-running tasks or disconnected scenarios. Clients create push notification configurations associating a webhook URL with a specific task, and the agent sends StreamResponse payloads when updates occur.
Is A2A open source?
Yes, the A2A Protocol is an open-source project by Google LLC under the Apache License 2.0, and is open to contributions from the community. The specification, reference implementations, and SDKs are freely available at a2a-protocol.org and the GitHub repository at a2aproject/A2A. No account or payment is required to access or implement the protocol.
What protocol bindings does A2A support?
A2A provides three protocol bindings: JSON-RPC 2.0, gRPC, and HTTP/REST. The layered specification architecture ensures core semantics remain consistent across all bindings while allowing developers to choose the binding that best fits their infrastructure. Custom protocol bindings can also be added without changing the fundamental data model.