Protocols & standards

Agent-to-agent (A2A) integration for the enterprise

A2A lets agents built on different platforms delegate work to each other without exposing their internals. Integration teams already know this problem: it is B2B, with agents instead of trading partners.

MCP gives an agent tools. It does not help when the thing on the other side is another agent with its own model, memory and permissions, run by another team, another vendor or another company. That is the gap the Agent2Agent (A2A) protocol fills. Google announced it in April 2025, donated it to the Linux Foundation that June, and the community shipped v1.0 in March 2026. In August 2026 it joined MCP under the Agentic AI Foundation.

For integration architects the mental model is familiar. A2A is to agents what AS2 and EDI were to trading partners: a contract for discovering a counterparty, exchanging messages and tracking a long-running business transaction, while each side keeps its internals private.

Four concepts you need

ConceptWhat it isB2B analogy
Agent CardJSON metadata describing an agent: name, skills, endpoints, supported bindings, security schemes, optional signaturesPartner profile / trading partner agreement
MessageA turn from a user or agent, made of parts (text, raw bytes, URL or structured data)A business document
TaskThe unit of work, with an ID, state, history and artifactsA purchase order and its lifecycle
ArtifactAn output the remote agent produces, such as a report or structured resultThe response document (order confirmation, invoice)

The Agent Card

Discovery starts with the Agent Card, usually published at a well-known URL. In v1.0 the card lists supportedInterfaces, each with its own URL, binding and protocol version, so one agent can offer JSON-RPC, gRPC and HTTP+JSON side by side. An abridged example:

{
  "name": "Supplier Availability Agent",
  "description": "Confirms stock and earliest ship date for catalogue items.",
  "version": "2.1.0",
  "provider": { "organization": "Example Supplier GmbH", "url": "https://supplier.example.com" },
  "supportedInterfaces": [
    { "url": "https://agents.supplier.example.com/a2a", "protocolBinding": "JSONRPC", "protocolVersion": "1.0" },
    { "url": "https://agents.supplier.example.com", "protocolBinding": "HTTP+JSON", "protocolVersion": "1.0" }
  ],
  "capabilities": { "streaming": true, "pushNotifications": true, "extendedAgentCard": true },
  "securitySchemes": { "oauth": { "...": "OAuth 2.0 authorization code with PKCE" } },
  "defaultInputModes": ["application/json", "text/plain"],
  "defaultOutputModes": ["application/json"],
  "skills": [
    { "id": "check-availability", "name": "Check availability",
      "description": "Stock and ship date for up to 50 SKUs.", "tags": ["inventory", "b2b"] }
  ],
  "signatures": [ { "...": "detached JWS over the canonicalized card" } ]
}

Abridged for readability. Validate real cards against the official A2A schema; the Agent Card builder on this site produces a starting draft.

Two v1.0 features matter most for enterprises. Signed cards use JWS over a JSON-canonicalized (RFC 8785) form of the card, so you can verify a card was issued by the organization it claims to come from. And the extended Agent Card lets an agent show a fuller set of skills only to authenticated callers, which is how you avoid advertising internal capabilities to the internet.

Tasks and their lifecycle

Everything in A2A revolves around a task state machine. The v1.0 states are SUBMITTED, WORKING, INPUT_REQUIRED, AUTH_REQUIRED, COMPLETED, FAILED, CANCELED and REJECTED (prefixed TASK_STATE_ on the wire).

A2A task lifecycle A task moves from submitted to working. From working it can pause in input-required or auth-required and return to working, or end in completed, failed, canceled or rejected. SUBMITTED WORKING INPUT_REQUIRED AUTH_REQUIRED COMPLETED FAILED CANCELED REJECTED terminal states: no further updates
Input-required and auth-required pause a task without losing it, which is where human approval and step-up authentication fit.

Results reach the caller in one of three ways: polling (GetTask), streaming over server-sent events (SendStreamingMessage, SubscribeToTask), or push notifications to a webhook the caller registers. A returnImmediately flag lets the caller choose between waiting and getting a task handle straight away.

Security model

A2A deliberately reuses existing standards rather than inventing an auth scheme. An Agent Card declares its security schemes; v1.0 supports OAuth 2.0 authorization code (with a pkce_required flag), client credentials, the device code flow (RFC 8628), OpenID Connect, API keys and mutual TLS, and it removed the implicit and password flows. The caller authenticates with ordinary HTTP mechanisms, and the remote agent decides what that identity may do.

Three practical rules:

Running A2A inside an enterprise

ConcernPattern
Ingress and egressPut an agent gateway in front of A2A endpoints, as you would with APIs. agentgateway, Kong AI Gateway and IBM ContextForge proxy A2A natively; AgentCore Gateway fronts A2A targets.
DiscoveryRun an internal registry of approved Agent Cards. Do not let agents discover and call arbitrary agents on the internet.
Multi-tenancyUse the v1.0 tenant field to separate business units or customers served by one agent deployment.
Push notificationsTerminate webhooks on your gateway, authenticate them, and hand them to your event broker (for example SAP Event Mesh or Advanced Event Mesh) rather than exposing agents directly.
Long-running tasksPersist task IDs against the business object (sales order, case) so operations staff can trace and cancel them.
VersioningClients send an A2A-Version header; servers reject unsupported versions explicitly. Record supported versions in the registry.
ObservabilityLog task ID, caller identity, skill, state transitions and duration. Correlate with MCP tool calls the remote agent makes.

Where A2A already lives

According to the Linux Foundation's April 2026 update, A2A is integrated into Azure AI Foundry and Copilot Studio, supported through Amazon Bedrock AgentCore Runtime, and native to Google's agent platforms. Its technical steering committee includes AWS, Cisco, Google, IBM Research, Microsoft, Salesforce, SAP and ServiceNow. In SAP's 2026 positioning, A2A is how Joule discovers and delegates to other agents, while MCP is how agents reach governed tools.

The practical consequence: in most enterprises A2A will not be something you implement from scratch. It will be a capability of the agent platforms you already license. The integration team's job is the same as with any new protocol: govern the traffic, inventory the endpoints, and connect the long-running work to the systems of record.

Onboarding an external agent: a checklist

Frequently asked questions

What is the difference between A2A and MCP?

MCP connects an agent to tools and data it controls; A2A connects an agent to another agent whose internals stay private. A2A tasks can run for a long time and pause for input or authorization.

Which transports does A2A v1.0 support?

Three equivalent bindings: JSON-RPC, gRPC and HTTP+JSON. Results can be polled, streamed over server-sent events, or pushed to a registered webhook.

Are A2A Agent Cards signed?

They can be. A2A v1.0 adds a signatures field holding a detached JWS over a canonicalized form of the card, so callers can verify who issued it.

Is A2A governed by Google?

No. Google donated A2A to the Linux Foundation in June 2025, and in August 2026 it joined the Agentic AI Foundation alongside MCP. A multi-vendor technical steering committee maintains it.

Sources and further reading

Related guides

Rameshkumar Varanganti

Enterprise Integration Lead and Architect with 20+ years in SAP integration (BTP Integration Suite, CPI, PI/PO, API Management, Event Mesh). Writes about agentic integration, MCP, A2A and AI governance.

← Back to knowledge library