A2A プロトコル

Agent Registry は、Agent2Agent(A2A)エージェント カード、トランスポート インターフェース、インライン スキルをインデックスに登録します。これにより、ユーザーとオーケストレーター エージェントは、 Google Cloud 環境全体でエージェントを検出して呼び出すことができます。自律型 AI エージェントは、A2A プロトコルを使用して、内部状態、プロンプト、ツールを共有することなく、メッセージを交換し、タスクを委任できます。

AI エージェント、A2A、MCP の関係

マルチエージェント アーキテクチャでは、Agent Registry がカタログ化する次のオープン スタンダードを組み合わせることができます。

  • Agent2Agent(A2A)プロトコル: A2A クライアント(オーケストレーター エージェントやユーザー向けアプリケーションなど)とリモート A2A エージェント間のピアツーピア通信を標準化します。クライアントは、自然言語または構造化メッセージを送信し、ステートフルなタスクの更新またはアーティファクトを受信します。リモート エージェントの基盤となるモデル、メモリ基盤、内部推論ループを可視化する必要はありません。Agent Registry は、 Google Cloud API によって公開される組み込みの Google エージェントと、独自の環境にデプロイするカスタム A2A エージェントの両方をカタログ化します。カスタム A2A エージェントをホストするアーキテクチャの例については、Cloud Run の A2A エージェントの概要をご覧ください。
  • Model Context Protocol(MCP): クライアントからサーバーへのツール実行を標準化します。エージェントは MCP サーバーに接続して、決定論的ツールを呼び出し、構造化データリソースを読み取ります。

Agent Registry では、オーケストレーター エージェントが単一のレジストリにクエリを実行して、マルチステップ委任用のスペシャリスト A2A サブエージェント、MCP サーバー、直接ツール使用用のスタンドアロン スキルを検出できます。

プロトコル バージョンとエージェント カードの検出

A2A 準拠のエージェントは、エージェント カード(agent-card.json)と呼ばれる JSON メタデータ ドキュメントで、自身の ID、エンドポイント、機能を記述します。

Agent Registry は、A2A プロトコル仕様のバージョン 1.0(推奨)と 0.3 をサポートしています。これらのバージョンの特定のエージェント カード フィールドと構造については、エージェント カードのスキーマをご覧ください。

Agent Registry がエージェント カードをインデックスに登録する仕組み

A2A エージェントが自動登録で取り込まれたか、手動登録で追加されたかにかかわらず、Agent Registry はエージェント カードを検証し、次の情報を含む読み取り専用の Agent 検出リソースを作成します。

  • エージェント カードのペイロード: Agent Registry は、type が A2A_AGENT_CARD に設定された Agent リソースの card フィールドに完全な JSON ペイロードを保存します。
  • 検出フィールド: Agent Registry は、エージェント カードからエージェントの displayName、description、version、トランスポート protocols、インライン skills を抽出し、Agent リソースに保存します。サービス間で個々の /.well-known/agent-card.json エンドポイントを取得することなく、これらの機能を検索してフィルタできます。

Google Cloud サービスと管理対象ランタイムは、必ずしもパブリック /.well-known/agent-card.json URL を公開するとは限りません。代わりに、ユーザーとクライアント アプリケーションは Agent Registry から直接エージェント カードを取得します。一部のエージェントは、認証済みのクライアントのみが利用できる追加の詳細を含む拡張エージェント カードも提供します。エージェント カードで capabilities.extendedAgentCard が true に設定されている場合、認証済みのクライアントは、エージェントのランタイム エンドポイントで拡張エージェント カードを取得して、これらの詳細を取得できます。

トランスポート バインディングとコア オペレーション

トランスポート バインディングは、クライアントがネットワーク経由で A2A エージェントにリクエストをフォーマットして送信する方法を定義します。A2A プロトコルは、異なるプラットフォームで構築されたエージェントが通信できるように、次のトランスポート オプションをサポートしています。

  • HTTP+JSON: JSON ペイロードを送受信する HTTPS リクエスト。
  • JSON-RPC: オペレーション名とパラメータを JSON-RPC メッセージ内にラップする HTTPS リクエスト。
  • gRPC: サービス間の低レイテンシ通信のための TLS 経由のバイナリ gRPC 呼び出し。

エージェント レジストリは、各エージェントがサポートするトランスポート タイプと、エージェントのエンドポイント URL を Agent リソースに記録します。エンドポイント URL は Google Cloud サービスとデプロイによって異なるため、コードに URL をハードコードしないでください。代わりに、実行時に Agent Registry からエージェントのエンドポイント URL とトランスポートを検索します。

エージェントが使用するトランスポートに関係なく、クライアントは同じコア A2A オペレーションを介してエージェントとやり取りします。

オペレーション 説明
SendMessage メッセージを送信して、新しいタスクを開始するか、会話を続行します。エージェントは、即時返信または追跡可能なタスクを返します。
SendStreamingMessage エージェントがストリーミングをサポートしている場合、メッセージを送信し、エージェントの作業中にライブ ステータスの更新、部分的な返信、結果をストリーミングします。
GetTask 現在のステータスを確認し、既存のタスクの出力を取得します。
ListTasks エージェントがサポートしている場合、会話またはプロジェクト内のタスクを一覧表示します。
SubscribeToTask 実行中のタスクに再接続し、タスクが一時停止または終了するまでライブ情報(# など適宜文脈に応じて)をストリーミングします。
CancelTask キャンセルがサポートされている場合に、エージェントに進行中のタスクを停止するようリクエストします。
GetExtendedAgentCard 認証済みクライアントのみが利用できる追加の詳細情報を含む、エージェントの拡張エージェント カードを取得します。

タスクのライフサイクルとマルチターンの状態

A2A では、次の 2 つの識別子を使用して、会話の継続性を個々の実行単位から分離します。

  • コンテキスト ID(contextId): 共有セッション内で関連するマルチターン インタラクションをグループ化します。これにより、リモート エージェントは連続したリクエスト間で会話コンテキストを保持できます。
  • タスク ID(taskId): A2A クライアントがメッセージを送信するときに作成される、特定の非同期または同期の作業単位を識別します。

リモート エージェントがリクエストを処理すると、タスクは次の A2A ライフサイクル状態に移行します。

状態 カテゴリ 説明
TASK_STATE_SUBMITTED 有効 リモート エージェントがリクエストを受け入れ、実行のためにタスクをキューに入れました。
TASK_STATE_WORKING 有効 リモート エージェントは、タスクの推論、ツールの呼び出し、アーティファクトの生成を積極的に行っています。
TASK_STATE_INPUT_REQUIRED 一時停止 同じ taskId と contextId で、フォローアップ入力、説明、または人間参加型の確認を待機しているため、実行が一時停止されています。
TASK_STATE_AUTH_REQUIRED 一時停止 クライアントが認証を完了するか、ダウンストリーム リソースのユーザーの同意フローを完了するまで、実行は一時停止されます。
TASK_STATE_COMPLETED ターミナル タスクが正常に完了し、最終レスポンスまたは出力アーティファクトが返されました。
TASK_STATE_FAILED ターミナル 実行エラーまたはダウンストリーム サービス エラーのため、タスクが停止しました。
TASK_STATE_CANCELED ターミナル タスクは完了する前にキャンセルされました。
TASK_STATE_REJECTED ターミナル リモート エージェントが、リクエストされたタスクの実行を拒否しました。

A2A スキル、スタンドアロン スキル、MCP ツール

Agent Registry は、3 つの異なる機能メカニズムをインデックスに登録します。これにより、各ワークフローに適切な統合パターンを選択できます。

  • インライン A2A スキル: エージェントの Agent 検出リソースの skills フィールドには、id、name、description、tags、examples などの JSON メタデータがエージェント カード内に埋め込まれています。インライン A2A スキルは、オーケストレーター エージェントが A2A トランスポートを介してリモート エージェントに委任できる高レベルのタスクをアドバタイズします。
  • スタンドアロン スキル: Agent Registry の独立した Skill リソースと SkillRevision トップレベル リソースには、SKILL.md ファイル内の指示とオプションのスクリプトを含む、バージョニングされた ZIP アーカイブが含まれています。エージェントは、別のエージェントに実行を委任するのではなく、スタンドアロン スキルを独自のコンテキストにダウンロードします。インライン A2A スキルとスタンドアロン スキルの詳細な比較については、スタンドアロン スキルと A2A スキルの違いをご覧ください。
  • MCP ツール: McpServer 検出リソースの tools フィールドには、登録済みの MCP サーバーによって公開される構造化関数スキーマが含まれています。エージェントは、このスキーマを直接呼び出して、データのクエリや決定論的なオペレーションの実行を行います。

ランタイム セキュリティ、ガバナンス、エージェント呼び出し

Agent Registry は、A2A エージェントを検出するためのカタログとして機能します。ランタイム認証、認可、コンテンツ検査、監査ロギング、割り当ての適用は、クライアントまたはオーケストレーター エージェントがターゲット エージェントを呼び出すときに行われます。

次のステップ