A2A:AIエージェントがあなたのサイトを呼び出せるようにする
公開日:
あるAIエージェントが、ブラウザを開かず、ボタンをクリックせず、ページをスクレイピングもせずに、このサイトを検証しました。小さなJSONファイルを読み込み、型付きリクエストを1回送信し、構造化された結果を受け取った——このやり取りがA2Aです。そして、どんなウェブサイトでもこれを提供できます。
A2Aとは何か
A2A(Agent2Agent)は、Linux Foundationのもとで管理されるオープンプロトコルで、AIエージェントが通常のHTTP越しに互いを発見・呼び出せるようにします。パブリックAPIのエージェント間版と考えてください。人間がドキュメントを読んでインテグレーションを書く代わりに、別のエージェントがサービスの内容を機械的な説明から読み取り、直接呼び出します。
構成要素は2つです:発見用のドキュメント(エージェントカード)と、呼び出し可能なエンドポイント(スキル)。
1. エージェントカード — 発見
/.well-known/agent-card.json にJSONファイルを公開し、自身の情報と提供できる機能を記述します。必須フィールドは name、description、version、url(A2Aエンドポイント)、そして少なくとも1つの skill です:
{
"protocolVersion": "0.3.0",
"name": "llms.txt Validator",
"description": "Validate a website's llms.txt and return a score with findings.",
"url": "https://llms-txt-validator.dev/a2a",
"skills": [{ "id": "validate_llms_txt", "name": "Validate llms.txt",
"description": "Given a domain or URL, fetch and validate its llms.txt." }]
}
2. エンドポイント — 呼び出し可能なスキル
カードの url はJSON-RPC 2.0エンドポイントを指しています。エージェントはメッセージとともに message/send メソッドを呼び出し、処理を行って Task として結果を返します。以下は私たちのエージェントへの実際の呼び出しです:
POST /a2a
{ "jsonrpc": "2.0", "id": "1", "method": "message/send",
"params": { "message": { "role": "user",
"parts": [{ "kind": "text", "text": "validate llmstxt.org" }] } } }
…そして返答——完了したタスクとして、人間が読めるサマリーと構造化データを含みます:
{ "result": { "kind": "task", "status": { "state": "completed" },
"artifacts": [{ "parts": [
{ "kind": "text", "text": "Validated llmstxt.org: score 100/100..." },
{ "kind": "data", "data": { "ok": true, "report": { "scores": { "overall": 100 } } } }
] }] } }
ブラウザもHTMLパースも不要——エージェントは求めたデータをそのまま受け取ります。
A2A vs WebMCP vs MCP
- A2A — ネットワーク越しにHTTPでサービスを呼び出すエージェント間通信(オーケストレーター、他のエージェント)。このページの内容。
- WebMCP — ブラウザ内部で動くエージェントが、開いているページのツールを呼び出す仕組み。
- MCP — 通常はローカルで、単一のモデルやアプリにツールを接続する仕組み。
これらは補完関係にあります:A2Aはネットワーク上のエージェントに、WebMCPはブラウザ内のエージェントに対応します。3つがどのように組み合わさるかもご覧ください。
どんなサイトでも追加できる方法
まずプロトコル全体を実装する必要はありません——サービスが実際に行う1つのことから始めてください:
- 1つのスキルを持つ有効なエージェントカードを
/.well-known/agent-card.jsonに公開する。 - その機能をラップした同期的な
message/sendメソッドを実装し、結果をアーティファクトとして含む完了済みTaskを返す。 - ストリーミング、タスク履歴、プッシュ通知はオプションです——
capabilities.streamingを false に設定し、必要になったときだけ追加してください。
唯一のルール:カードを実際のエンドポイントで裏付けること
カードはメタタグではなく、契約です。url が実際に message/send に応答しないカードを公開すると、それを信頼するすべてのエージェントが行き詰まります。真に提供できる機能に限ってA2Aを公開してください——それが私たちの構築方針であり、動作するエンドポイントが裏付けている場合にのみシグナルを「存在する」として報告する理由です。実際の動作を確認したいですか?私たちのエージェントカードを取得してみてください。