A2A — Agent-to-Agent Protocol
A2A とは?
A2A(Agent-to-Agent)は、AI エージェントが互いに発見、認証、通信するためのオープンプロトコルです。エージェントをホストするサイトは、エージェントのアイデンティティ、機能、スキル、他のエージェントが到達できる URL を宣言する Agent Card — /.well-known/agent.json の JSON マニフェスト — を公開します。プロトコルは Google によって 2025 年 4 月に導入され、同年後半に Linux Foundation に寄贈されました。
A2A は MCP とは異なるレイヤーに位置します。MCP はエージェントがツールを呼び出す方法を定義し、A2A はエージェントが別のエージェントを呼び出す方法を定義します。2 つは組み合わさります:MCP サーバーは単一のエージェントにツールを公開し、A2A エンドポイントはエージェント全体をより広いエージェントネットワークに公開します。
A2A が重要な理由
2025-2026 年のエージェントエコシステムは、マルチエージェントパターンに収束しています:ユーザー向けエージェント(Claude、ChatGPT、Gemini)が、他のサービスがホストするスペシャリストエージェントと連携します。旅行サイトの予約エージェントは 1 つのスペシャリスト;e コマースサイトの返金エージェントは別のスペシャリストです。ユーザー向けエージェントは、ベンダー別 SDK 統合なしで、それらのスペシャリストを発見し、何ができるかを学び、呼び出す方法が必要です。
A2A は、その発見とルーティングレイヤーのプロトコルです。Agent Card は呼び出すエージェントに伝えます:
- あなたが誰か — 名前、説明、バージョン、ベンダー。
- 何ができるか — 名前付きスキルのリスト、それぞれ独自の説明付き。
- どう到達するか — エージェントエンドポイントの URL とサポートされるトランスポート。
- どう認証するか — auth スキーム、OAuth フローまたは API キー受け渡しを含む。
A2A の仕組み
2 つの部分があります:Agent Card(発見)と A2A エンドポイント(実行)。
1. Agent Card は /.well-known/agent.json の静的 JSON ファイルです。最小限の有効な Agent Card:
{
"name": "Acme Support Agent",
"description": "Handles customer inquiries, refunds, and order status.",
"version": "1.0.0",
"url": "https://acme.example.com/agent",
"capabilities": {
"streaming": true,
"pushNotifications": false
},
"skills": [
{
"id": "process-refund",
"name": "Process Refund",
"description": "Issue a refund for a given order ID."
}
]
}
2. A2A エンドポイント はカードに宣言された URL でそれらのスキルのリクエストを受け付けます。プロトコルは HTTP 上の JSON-RPC スタイルのメッセージング(ストリーミング用にオプションで SSE)を使用し、テキスト、ファイル、構造化データパーツを含む構造化メッセージ形式をサポートします。
A2A と他のエージェント相互運用プロトコル
| プロトコル | 目的 | トランスポート | 公開するもの |
|---|---|---|---|
| A2A | エージェントが別のエージェントを呼び出し | HTTP/SSE | 名前付きスキルを持つエージェント全体 |
| MCP | エージェントがツールを呼び出し | JSON-RPC over HTTP/SSE | サーバー上の個別ツール |
| OpenAPI | エージェントが REST API を呼び出し | HTTP | スキーマ付き API エンドポイント |
| SKILL.md | エージェントにサービスの使い方を伝える | 静的 Markdown | HTTP サービスの散文プレイブック |
| WebMCP | エージェントがブラウザを通じてウェブサイトを呼び出し | ブラウザ API | 注釈付き HTML フォーム |
A2A は、これらの中で呼び出される側がエージェント自体であり、ツールや静的 API ではない唯一のものです。
Agent Card フィールド
name— 人間可読なエージェント名。必須。description— エージェントが何をするか、散文で。必須。url— A2A エンドポイントの場所。必須。version— エージェントバージョン文字列。推奨。provider— ベンダー情報。capabilities— 機能フラグ:streaming、pushNotifications、stateTransitionHistory。skills—id、name、descriptionを持つスキルオブジェクトの配列。authentication— auth スキームの詳細。defaultInputModes/defaultOutputModes— スキル呼び出しでサポートされるコンテンツタイプ。
AgentGrade の A2A チェックは、カードが存在し、JSON としてパースされ、少なくとも name と url を含むことを検証します。
A2A を使用しているのは誰か
A2A は Google とパートナー連合の支援を受けて開始されました。2025-2026 年の公開採用者には以下が含まれます:
- Google — 元の著者;A2A は Vertex AI Agent Builder に統合されています。
- Linux Foundation — A2A は中立的なガバナンスのために LF に寄贈されました。
- Atlassian — Jira と Confluence エージェントの Agent Card を公開。
- Box、MongoDB、PayPal、SAP、ServiceNow、Workday — ローンチ時にリストされた初期エコシステムパートナー。
サービスに A2A を追加する方法
- 公開するエージェントがあるか決める。 A2A はエージェント用で、静的 API 用ではありません。
- Agent Card を作成する
/.well-known/agent.jsonに。 - A2A エンドポイントを立ち上げる カードの URL に。github.com/google/A2A の Python SDK が参照実装です。
- 少なくとも 1 つのスキルを実装する。
- 呼び出し元でテストする。
- llms.txt または SKILL.md からリンク。
スキャナーがフラグを立てる一般的なエラー
- Agent Card がない —
/.well-known/agent.jsonが 404 を返す。 - カードが JSON ではなく HTML を返す — SPA キャッチオールルートがすべてのパスでホームページ HTML を返す。
nameまたはurlの欠落。urlが 404 を指す。- スキル配列が空または欠落。
- CORS がフェッチをブロック。
FAQ
A2A は MCP の代替ですか?
いいえ。異なる問題を解決します。MCP はエージェントがツールを呼び出すため、A2A はエージェントが別のエージェントを呼び出すためです。
OpenAPI があれば A2A が必要ですか?
サービスがエージェントである場合のみ(推論、計画、ターン間で状態を保持)。
A2A は AgentGrade スコアリングに必要ですか?
A2A は情報チェックでスコアされません。
Agent Card が機能について嘘をついたらどうなりますか?
カードはエージェントが主張するものを宣言します。呼び出すエージェントは失敗したリクエストを通じて最終的に知ることになります。
複数の Agent Card を公開できますか?
仕様は origin あたり 1 つのカードです。
A2A と Google の Vertex AI Agent Builder の関係は?
Vertex AI Agent Builder は Google のホストされたエージェントランタイムで、A2A を生成・消費します。
エージェントは Agent Card をどう発見しますか?
/.well-known/agent.json の直接フェッチ、または /llms.txt からのリンクをたどります。
A2A は支払いをサポートしますか?
仕様には機能宣言が含まれていますが、支払いは基礎となる認証スキームに委任されます。A2A と x402 を組み合わせるサイトは通常、スキル説明で支払い要件を宣言します。
仕様の成熟度
オープンスタンダード、初期採用。 A2A は Linux Foundation によって統治されています。Python SDK は参照実装です。
詳細
- A2A プロトコル仕様 — 公式ドキュメント
- A2A GitHub リポジトリ — 参照実装
- MCP — ツール呼び出し用の付属プロトコル