Agent-to-Agent Protocol (A2A)#

NVIDIA NeMo Agent toolkit Agent-to-Agent Protocol (A2A) integration includes:

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.