Skip to main content

Agent2Agent (A2A) Protocol Explained: How AI Agents Talk to Each Other and How to Use A2A in Gemini Enterprise

  • Mohit
  • 25 Oct, 2026
  • Updated 27 Oct, 2026
Agent2Agent (A2A) Protocol Explained: How AI Agents Talk to Each Other and How to Use A2A in Gemini Enterprise

As organizations build more agents, a new problem appears: the HR agent, the IT agent, the finance agent, and the vendor’s procurement agent all work, but they can’t work together. Each speaks its own framework’s language. The Agent2Agent (A2A) protocol fixes that by giving agents a common way to find each other, hand off tasks, and return results.

A2A started at Google, is now an open standard under the Linux Foundation, and is built into Gemini Enterprise and Gemini Enterprise Agent Platform. This guide explains how A2A works, how it differs from MCP, how to register A2A agents in Gemini Enterprise, and the security points architects need to get right.

For organizations on Google Workspace, A2A is also how partner and custom agents reach employees inside Gemini Enterprise.

Table of contents

Open Table of contents

What the A2A Protocol Is

The A2A project describes itself as “an open standard for seamless communication and collaboration between AI agents.” Key facts:

OriginDeveloped by Google, donated to the Linux Foundation
GovernanceTechnical Steering Committee with nine seats, held by AWS, Bloomberg, Cisco, Google, IBM, Microsoft, Salesforce, SAP, and ServiceNow
LicenseApache 2.0
SDKsPython, JavaScript, Java, C#/.NET, Go, Rust, plus an A2A CLI
InteroperabilityWorks across frameworks such as LangGraph, CrewAI, Semantic Kernel, and Google’s ADK

The design idea: opaque agents

A2A agents are opaque. They don’t have to share their memory, tools, or proprietary logic. A client agent asks a remote agent to do something and gets back status updates and results, the way you’d email a colleague in another department without needing access to their systems. That makes A2A suitable for collaboration across teams and across companies.

What A2A is not

The project is explicit that A2A is not an agent development kit, not a tool-calling protocol, not a replacement for MCP, and not a messaging app.


A2A vs. MCP

MCP (Model Context Protocol)A2A (Agent2Agent)
ConnectsAgent → tools and dataAgent → agent
The other side isA tool server: deterministic functions and resourcesAnother agent that reasons, plans, and may run for a long time
Typical exchange”Run this query,” “create this ticket""Handle this onboarding request and tell me when it’s done”
Long-running workUsually request/responseTasks with lifecycle, streaming, and push notifications
ExampleAn agent calls the Jira MCP serverA sales agent delegates contract review to the legal team’s agent

Most real systems use both. We’ll cover MCP in Gemini Enterprise in tomorrow’s post.


How A2A Works: The Core Concepts

Core concepts of the Agent2Agent protocol

The actors

  • User: a person or automated service with a goal
  • A2A client (client agent): acts for the user and starts the conversation
  • A2A server (remote agent): exposes an HTTP endpoint that implements A2A; opaque to the client

Agent Card: discovery

Every A2A server publishes an Agent Card: a JSON “digital business card” describing:

  • Identity (name, description, version)
  • Service endpoint URL
  • Capabilities, such as streaming and push notifications
  • Authentication requirements
  • Skills: what the agent can do
  • Optional custom extensions

Clients find cards three ways:

Discovery methodHowBest for
Well-known URIGET https://{agent-domain}/.well-known/agent-card.jsonPublic agents and domain-wide discovery
Curated registrySearch a central catalog by skill or tagEnterprises, for example, Google’s Agent Registry
Direct configurationHard-coded URL or config fileTightly coupled private systems

The A2A specification doesn’t define a standard registry API, which is why products like Agent Registry exist.

Tasks, messages, parts, and artifacts

ConceptWhat it is
TaskA stateful unit of work with a unique ID and lifecycle: used for long-running and multi-turn work
MessageOne turn of communication, with a messageId and a role of user or agent
PartThe content inside messages and artifacts, exactly one of text, raw (inline binary), url (file reference), or data (structured JSON), plus optional mediaType, filename, and metadata
ArtifactA concrete deliverable (a report, a file, a dataset) with an artifactId, a name, and one or more parts; can be streamed
Context (contextId)Groups related tasks across interactions

A remote agent answers either with a Message (an immediate reply) or a Task (for longer work).

Interaction patterns

PatternHow it worksUse when
Request/response with pollingClient sends a request and polls the task for updatesSimple integrations
Streaming (SSE)Client keeps an HTTP stream open and receives incremental updatesInteractive experiences
Push notificationsServer calls a client-provided webhook on significant updatesVery long tasks or disconnected clients

Communication runs over HTTP(S) with JSON-RPC 2.0 payloads. Authentication requirements are declared in the Agent Card, and credentials such as OAuth tokens travel in HTTP headers, separate from A2A messages.


A worked example

An employee asks the company’s assistant: “Onboard Priya, starting Monday, as a sales engineer.”

  1. The assistant (the client agent) finds the HR team’s onboarding agent in Agent Registry and reads its Agent Card. It has a skill called onboard employee and supports streaming.
  2. It sends a message with the request. The HR agent replies with a task ID, because onboarding takes time.
  3. Over the next hour, the HR agent streams status updates: account requested, laptop ordered, training booked.
  4. When finished, it returns an artifact: a welcome document with logins and the first-week schedule.

The client never sees how the HR agent works internally, only the card, the task, and the results.


A2A in Google’s Stack

A2A shows up in several places across Gemini Enterprise and Agent Platform:

WhereWhat A2A does there
Agent RuntimeDeploy agents as A2A servers (“Deploy as A2A” in Agent Studio)
Agent StudioUse agents from Agent Registry as remote sub-agents
Agent RegistryCentral catalog of A2A agents, tools, and MCP servers
Gemini EnterpriseRegister custom A2A agents so employees can use them in the web app
A2UILets A2A agents define rich user interfaces that Gemini Enterprise renders

See our Agent Runtime guide for deployment and our Agent Studio guide for the visual builder.


Registering an A2A Agent in Gemini Enterprise

Prerequisites

  • The Gemini Enterprise Admin role
  • The Discovery Engine API enabled
  • An existing Gemini Enterprise app
  • An agent that speaks A2A: Gemini Enterprise supports A2A v0.3 streaming; for agents on A2A v1.0.0 or later, use the SDK compatibility packages (for example a2a.compat.v0_3 in Python)
  • You host and maintain the agent yourself: on Agent Runtime, Cloud Run, behind Apigee or a load balancer, or elsewhere

The Agent Card Gemini Enterprise expects

Core fields: protocolVersion (for example "0.3"), name, description, url, version, capabilities (such as streaming and pushNotifications), skills, defaultInputModes, and defaultOutputModes. iconUrl is optional.

Console steps

  1. Open Gemini Enterprise in the Google Cloud console and select your app
  2. Go to Agents → Add Agents
  3. Under Choose an agent type, click Add for Custom agent via A2A
  4. Paste the agent card JSON → Preview agent details → Next
  5. Enter OAuth client details and scopes and click Finish, or Skip & Finish if you don’t need user OAuth

You can also register through the REST API by creating an agent under engines/APP_ID/assistants/default_assistant/agents with an a2aAgentDefinition.jsonAgentCard.

Authentication options

HeaderWhen it’s sentWhat it carries
X-Serverless-AuthorizationOnly for default Cloud Run .run.app URLsA Google-signed OIDC token for the Discovery Engine service agent (grant it roles/run.invoker)
AuthorizationWhen you configure OAuthThe end user’s OAuth token, after consent

For OAuth, create a Web application OAuth client with redirect URIs https://vertexaisearch.cloud.google.com/oauth-redirect and https://vertexaisearch.cloud.google.com/static/oauth/oauth.html. Agents on Agent Runtime need the cloud-platform scope.

Not supported: the agent card’s securitySchemes/security fields, apiKey schemes, and static API keys or custom headers.

Status and quotas

Google’s registration page still labels this feature Pre-GA, while the August 17, 2026 release notes announced A2UI and A2A agent registration as generally available. Check the current status for your project. Registration also draws on the daily agent creation quota: one per Standard user per day, ten per Plus user, none for Frontline. CI/CD pipelines that register agents across many apps can hit HTTP 429 RESOURCE_EXHAUSTED.


A2UI: Agents That Bring Their Own Interface

A2UI lets an A2A agent describe a custom interface (forms, cards, choices) that Gemini Enterprise renders with its own built-in styling. A2A handles communication; A2UI handles presentation. Gemini Enterprise supports A2UI v0.9 and v0.8, and the agent must be registered as an A2A agent on a publicly reachable endpoint such as Agent Runtime or Cloud Run.


Security: What Architects Must Get Right

Two lines in Google’s documentation deserve attention:

  1. Agents added through A2A registration bypass Agent Gateway, so gateway policies don’t apply to them.
  2. Model Armor settings in the console don’t protect A2A agents: developers must configure Model Armor through the REST API in the agent’s own code.

That makes the remote agent responsible for its own defenses. A practical checklist:

ControlRecommendation
AuthenticationUse user OAuth so the agent acts with the user’s permissions; avoid shared credentials
NetworkPut the endpoint behind Apigee or a load balancer with authentication; don’t expose unauthenticated .run.app URLs
Prompt injectionCall Model Armor from the agent code; treat messages from other agents as untrusted input
Agent CardDon’t embed secrets; use authenticated extended cards for sensitive details
RegistryRegister approved agents in Agent Registry so teams reuse them instead of building copies
LoggingLog task IDs, callers, and outcomes for audit
OwnershipEvery registered agent has an owner and an on-call contact

When to Use A2A

Use A2A when:

  • Different teams own different agents and need them to cooperate
  • You’re integrating a vendor’s agent you can’t see inside
  • A task runs long and needs status updates, streaming, or callbacks
  • You want to swap one agent implementation for another without changing callers

Don’t use A2A when:

  • You just need to call a deterministic API. That’s a tool (MCP or a function)
  • Everything lives in one codebase. Use ADK sub-agents directly

Conclusion

A2A does for agents what HTTP and email did for people: a shared way to find each other, ask for help, and get results back, regardless of who built what. Agent Cards make agents discoverable, tasks and artifacts make long-running collaboration manageable, and the protocol keeps each agent’s internals private.

In Gemini Enterprise, A2A is how custom and partner agents reach employees, with Agent Registry as the catalog and A2UI for richer interfaces. Just remember that registered A2A agents sit outside Agent Gateway’s protection, so build authentication and Model Armor into the agents themselves before you put them in front of people across your Google Workspace organization.


Official documentation:

Related reading:

This guide contains referral or affiliate links. If you sign up through one, Workspace Blog may earn a commission at no extra cost to you. Learn more.

Frequently Asked Questions

What is the Agent2Agent (A2A) protocol?
A2A is an open standard for communication and collaboration between AI agents, originally developed by Google and donated to the Linux Foundation. It lets agents built on different frameworks and by different vendors discover each other, delegate tasks, and exchange results without sharing their internal memory, tools, or logic. It's licensed under Apache 2.0, with official SDKs for Python, JavaScript, Java, C#/.NET, Go, and Rust.
What is the difference between A2A and MCP?
MCP (Model Context Protocol) connects an agent to tools and data: agent-to-tool. A2A connects an agent to other agents: agent-to-agent. They're complementary: an agent might use MCP to call a ticketing system and A2A to delegate a task to a specialist agent owned by another team or vendor.
What is an A2A Agent Card?
An Agent Card is a JSON document that works like a digital business card for an agent. It describes the agent's identity, service endpoint URL, A2A capabilities such as streaming and push notifications, authentication requirements, and skills. Public agents typically publish it at https://{agent-domain}/.well-known/agent-card.json.
Which A2A version does Gemini Enterprise support?
Google's registration documentation says Gemini Enterprise supports A2A v0.3 streaming. For agents built with A2A v1.0.0 or later, Google says to use the SDK compatibility packages, for example a2a.compat.v0_3 in Python.
How do I add an A2A agent to Gemini Enterprise?
With the Gemini Enterprise Admin role, open your app in the Gemini Enterprise page of the Google Cloud console, go to Agents > Add Agents, choose Custom agent via A2A, paste the agent card JSON, preview the details, and either configure OAuth or skip it. You can also register agents through the REST API. You host and maintain the agent yourself, for example on Agent Runtime or Cloud Run.