Mar 1, 2026 · Lab notes · 5 min

A2A and communication between agents

A2A defines an interface for communication between agent services. MCP addresses tool and data access; A2A addresses messages, tasks and artifacts exchanged with another agent service. They can be complementary. This technical note pins its wire examples to A2A v0.3.0 rather than presenting them as version-independent instructions.

Abstract blue digital network of connected nodes over a city at night

The missing layer

Consider an illustrative refund workflow: a support service asks separate services to verify a purchase, interpret policy, prepare a payment decision and update a record. The architecture below shows possible communication boundaries. It is not evidence of a deployed customer system, and a successful protocol exchange does not authorize a refund.

graph TB
  Customer((Customer)) -->|"Refund request"| Support["Support Agent"]
  Support -->|A2A| Finance["Finance Agent"]
  Support -->|A2A| Legal["Legal Agent"]
  Support -->|A2A| Payments["Payments Agent"]
  Support -->|A2A| Sales["Sales Agent"]

  Finance -->|MCP| DB[(Transaction DB)]
  Legal -->|MCP| Docs["Policy Docs"]
  Payments -->|MCP| Stripe["Stripe API"]
  Sales -->|MCP| CRM[(Salesforce)]

  style Support fill:#e8e8e8,color:#0a0a0a,stroke:#0a0a0a
  style Finance fill:none,stroke:#0a0a0a
  style Legal fill:none,stroke:#0a0a0a
  style Payments fill:none,stroke:#0a0a0a
  style Sales fill:none,stroke:#0a0a0a
          
A2A between agents (horizontal), MCP to tools (vertical)

Google launched the Agent-to-Agent protocol in April 2025 to address exactly this. A2A is not competing with MCP. MCP is vertical: agent to tool. A2A is horizontal: agent to agent. They occupy different layers of the same stack, and they were designed to be complementary from the start.

DimensionMCPA2A
Created byAnthropic (Nov 2024)Google (Apr 2025)
PurposeAgent-to-tool integrationAgent-to-agent collaboration
DirectionVertical (intra-agent)Horizontal (inter-agent)
AnalogyUSB-C port for toolsDiplomatic protocol between agents
CommunicationJSON-RPC 2.0JSON-RPC, gRPC, HTTP+JSON; SSE for streaming
Remote agents are...Servers exposing negotiated capabilitiesAgent services with declared interfaces
FoundationLinux Foundation AAIFLinux Foundation LF AI & Data

Agent Cards: the business card of the agentic web

An Agent Card describes an agent service, its capabilities, skills, interfaces and security requirements. The A2A v0.3.0 specification recommends /.well-known/agent-card.json when using well-known discovery. Registries and direct configuration are also possible.

Agent Card review: verify identity, endpoint, declared protocol version, skills, capabilities and security schemes. Do not put credentials in a public card. The card describes a service; it does not prove that the service can safely perform a task.

Cards can carry signatures. Signature verification requires a trusted key and an appropriate trust policy; the presence of a signature alone is insufficient. A client must separately authenticate to the service and decide what data and authority to delegate.

How agents collaborate

Version 0.3.0 defines JSON-RPC, gRPC and HTTP+JSON bindings. Shared message serialization does not make protocol bridging automatic: task semantics, error handling, authentication and supported capabilities still have to agree. The state diagram below is a simplified task example, not an exhaustive transition mandate.

stateDiagram-v2
  [*] --> submitted
  submitted --> working : Accepted
  submitted --> rejected : Refused
  working --> completed : Success
  working --> failed : Error
  working --> canceled : Canceled
  working --> auth_required
  auth_required --> working
  working --> input_required
  input_required --> working
  completed --> [*]
  failed --> [*]
  canceled --> [*]
  rejected --> [*]
          
Simplified v0.3.0 task example; additional states and paths are omitted

A task can report progress or request additional input or authentication. Terminal tasks cannot simply be restarted. Streaming and push support depend on advertised capabilities. In the JSON-RPC binding used here, message methods are message/send and message/stream.

Interaction PatternMethodUse Case
Request / Responsemessage/sendQuick synchronous answers
Streaming (SSE)message/streamLong-running tasks with incremental updates
Push NotificationsWebhooksDisconnected, hours-long workflows

ACP and A2A consolidation

IBM developed ACP for BeeAI. On August 29, 2025, LF AI & Data announced that ACP was joining A2A. That supports a consolidation of those efforts, not a claim that all agent interoperability had converged on one standard.

graph TB
  ACP["ACP · IBM / BeeAI
Mar 2025"] --> LF["LF AI & Data
ACP / A2A convergence"] A2A1["A2A · Google
Apr 2025"] --> LF LF --> A2A2["A2A effort
ACP joins A2A effort
Aug 2025"] AAIF["Separate AAIF launch
MCP + goose + AGENTS.md
Dec 2025"] style LF fill:#e8e8e8,color:#0a0a0a,stroke:#0a0a0a style AAIF fill:#e8e8e8,color:#0a0a0a,stroke:#0a0a0a style ACP fill:none,stroke:#0a0a0a style A2A1 fill:none,stroke:#0a0a0a style A2A2 fill:none,stroke:#0a0a0a
Two distinct announcements: ACP joins A2A; AAIF launches with MCP, goose and AGENTS.md

The announcement describes combining ACP assets and expertise with A2A. Treat the availability of any particular migrated feature as a version-specific implementation question. A governance announcement is not a compatibility test for an existing BeeAI deployment.

The Agentic AI Foundation

The December 9, 2025 Linux Foundation launch announcement names MCP, goose and AGENTS.md as founding contributions. It does not list A2A, BeeAI or Docling as founding projects. The previous diagram incorrectly put all of these efforts in one founding-project list. The corrected diagram separates the ACP/A2A announcement from the AAIF launch.

AnnouncementSupported scope
August 29, 2025ACP joins A2A effort under LF AI & Data
December 9, 2025AAIF launch names three founding project contributions

Open governance can reduce dependence on one vendor, but it does not guarantee interoperability or economic network effects. Our recommendation is to test a concrete delegation workflow across the actual implementations before treating protocol support as a purchasing criterion.

Complementary interfaces

The table below is a map of possible interface responsibilities, not a mandatory stack or a claim that every layer is needed in every application:

LayerProtocolFunction
Agent → ToolMCPConnect agents to databases, APIs, tools
Agent → AgentA2ADiscovery, delegation, and collaboration between agents
Agent → UserAG-UIReal-time human-in-the-loop interaction
Agent GuidanceAGENTS.mdProject-specific instructions for coding agents

Layering is useful when it separates responsibilities. A remote service can perform a task through A2A while using MCP internally. A user-facing application can use AG-UI events to represent progress and interaction. Each boundary still needs its own authentication, cancellation and failure behavior.

What this means for builders

Builders should add interoperability where a real workflow requires it. A local deterministic pipeline may not need A2A. A remote task service benefits from a clear contract for inputs, progress, artifacts, errors and ownership. The test is whether another implementation can complete the intended task with appropriate authority.

Builder review: pin the protocol version; verify the Agent Card and endpoint; test message, task and streaming behavior; apply least-privilege credentials; and record who authorized consequential actions. In v0.3.0, use /.well-known/agent-card.json for well-known discovery. Do not assume every deployment uses OAuth or exposes one scope per skill.

The opportunity is collaboration between independently operated services. The work is to make delegation observable and bounded. Preserve the task identifier, returned artifact, failure state and authority record so the caller can distinguish a completed task from a plausible explanation.

Factual review: October 26, 2026. Original publication date retained. Primary sources are linked alongside the revised claims. Wire examples are pinned to A2A v0.3.0.

← Articles