Agent-to-Agent Protocol (A2A)#
NVIDIA NeMo Agent toolkit Agent-to-Agent Protocol (A2A) integration includes:
An A2A client to connect to and interact with remote A2A agents.
An A2A server to publish workflows as A2A agents that can be discovered and invoked by other A2A clients.
Note: A2A functionality requires the nvidia-nat-a2a package. Install it with uv pip install "nvidia-nat[a2a]".
What is A2A?#
The Agent-to-Agent (A2A) Protocol is an open standard from the Linux Foundation that enables agent-to-agent communication and collaboration. A2A standardizes how agents:
Discover capabilities through Agent Cards
Delegate tasks to other agents
Exchange information using a common protocol
Why Use A2A?#
Multiple agents are useful when you want to:
Group logic by domain or function and keep responsibilities clear.
Reuse specialized agents without duplicating logic.
Scale or replace parts of the system independently.
A2A makes multi-agent systems easier to manage by:
Discovering remote capabilities through Agent Cards.
Providing a consistent protocol for communication.
Delegating tasks to specialized agents across different stacks.
Enabling secure access through A2A authentication when your agents require it.
If you already have a multi-agent use case, A2A provides a standard interface that keeps integrations predictable and easier to maintain. If you are exploring options, A2A is a good fit when you expect to add or swap agents over time.
Key Concepts#
A2A Agent#
A service that exposes capabilities (skills) via the A2A protocol. Agents publish an Agent Card describing their capabilities and accept task requests from clients.
Agent Card#
JSON metadata describing an A2A agent’s capabilities, including:
Agent name, version, and description
Available skills with descriptions and examples
Supported capabilities (streaming, push notifications)
Content types (input/output modes)
A2A Client#
A component that connects to remote A2A agents and invokes their skills. The a2a_client function group provides a function interface for interacting with remote agents.
A2A Server#
A service that exposes workflows as A2A agents. The nat a2a serve command publishes workflows so they can be discovered and called by other A2A clients.
Examples#
The following examples demonstrate A2A integration:
Math Assistant A2A (
examples/A2A/math_assistant_a2a/) - A2A communication with hybrid tool composition (A2A calculator + MCP time + local logic)Currency Agent A2A (
examples/A2A/currency_agent_a2a/) - Connecting to external third-party A2A services (LangGraph-based currency agent)
Documentation#
Protocol Compliance#
The A2A integration is built on the official A2A Python SDK to ensure protocol compliance. For detailed protocol specifications, refer to the A2A Protocol Documentation.
A2A vs MCP#
Both A2A and MCP enable integration with external capabilities, but they serve different purposes:
Aspect |
A2A |
MCP |
|---|---|---|
Purpose |
Agent-to-agent communication |
Tool and context integration |
Granularity |
Agent level (high-level tasks) |
Tool level (specific functions) |
Discovery |
Agent Card with skills |
Tool list with schemas |
Use Case |
Delegating to other agents |
Accessing tools and context |
Best For |
Multi-agent systems |
Tool integration |
You typically use A2A to delegate complex tasks to other agents and MCP to access tools and context. You can use both protocols together for maximum flexibility.