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 エージェントを検出するためのカタログとして機能します。ランタイム認証、認可、コンテンツ検査、監査ロギング、割り当ての適用は、クライアントまたはオーケストレーター エージェントがターゲット エージェントを呼び出すときに行われます。
- ターゲット Agent Endpoint の検索と呼び出し: ターゲット A2A エージェント Agent Endpoint を検索し、Agent Development Kit(ADK)または標準の HTTP クライアントと Python クライアントを使用してメッセージを送信します。詳細については、マルチエージェント システムを構築して A2A エージェントを呼び出すをご覧ください。
- 認証と認証情報のスコープ設定: エージェント間の呼び出し用に、OAuth 2.0 アクセス トークン、OpenID Connect(OIDC)ID トークン、Workload Identity 連携、または Agent Identity Auth Manager のバインディングを構成します。
- アクセス制御と拒否ポリシー: ランタイム アクセス権限、Identity and Access Management(IAM)拒否ポリシー、Identity-Aware Proxy(IAP)下り(外向き)ポリシーを適用します。詳細については、ロールと権限をご覧ください。
- プロンプトとレスポンスの検査: Agent Gateway と Model Armor の統合とサービス拡張機能バインディングを構成して、サポートされている A2A プロンプトとレスポンスのペイロードを検査し、プロンプト インジェクションと機密データの漏洩を検出します。
- 監査ロギングと割り当て: Agent Registry の監査ロギングで A2A 呼び出しの監査レコードを検査し、割り当てとシステム上限でターゲット エージェントとダウンストリーム サービスのレートに基づく割り当てを計画します。
次のステップ
- エージェント カードとインライン A2A スキル全体でエージェント、ツール、スキルを検索します。
- ADK または A2A クライアントを使用して、マルチエージェント システムを構築し、A2A エージェントを呼び出します。
- A2A エージェント カードの JSON スキーマを確認する。
- スタンドアロン A2A スキルとインライン A2A スキルを比較する。