agent-protocols について
agent-protocols は、IsAgentReady.com の Agent Protocols の検査項目を修正するスキルです。WebMCP、MCP、A2A、OpenAPI などの標準プロトコルを通じて、サイト機能をエージェントが発見・利用できるようにする設定と検証の手順を提供します。
主な機能
- 01WebMCP フォームとツール注釈の設定
- 02A2A Agent Card の公開
- 03MCP の検出情報とサーバーカードの提供
- 04OpenAPI ドキュメントの公開と改善
- 05プロトコルエンドポイントと API 応答の検証
活用シーン
- 01Agent Protocols のスキャン失敗への対応
- 02OpenAPI によるサイト API の記述
- 03エージェントによるサイトの MCP サーバーの検出
MCP 対応
MCP の検出ファイルとサーバーカードの公開、および MCP エンドポイントの検証を支援します。スキャナーは同一オリジンの Streamable HTTP エンドポイントに接続して検出と一覧取得を行い、ツールは呼び出しません。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ bartwaardenburg/ isagentready-skills --skill agent-protocolsインストール後、Claude Code で/agent-protocolsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/a2a-mcp-guide.mdcheckpoints.mdgotchas.mdwebmcp-guide.md詳細
エージェントプロトコル
IsAgentReady.com のエージェントプロトコルカテゴリを修正します。このチェックポイントでは、標準プロトコルを通じてエージェントがサイトの機能を発見し、利用できるかをテストします。
- 方法論のバージョン:
2026-10-22。方法論:https://isagentready.com/en/methodology - スコアリング(重みとポイント):https://isagentready.com/api/v2/methodology/2026-10-22/scoring
- チェックポイントの全データ(ステージ、エビデンスタイプ、検証コマンド、再スキャンコマンド):references/checkpoints.md
多くのチェックポイントは、検出されたサーフェス(API、MCP、コマース)にのみ適用されます。API のないコンテンツサイトでは、それらのチェックポイントはスキップされます。WebMCP の結果は実験的なエビデンスであり、総合スコアには影響しません。
使用する場合
- スキャンでエージェントプロトコル(旧 ID 4.x)の失敗が表示される場合。
- エージェントが利用するフォーム、API、MCP サーバー、エージェントまたはショップがサイトにある場合。
- ユーザーが WebMCP、A2A、MCP、OpenAPI、API カタログ、NLWeb またはエージェント決済を求めている場合。
使用しない場合
- インタラクティブな機能や API のない静的コンテンツサイト。
- セキュリティヘッダーまたは OAuth メタデータ:
security-trustを使用してください。 - JSON-LD:
structured-dataを使用してください。 - robots.txt、llms.txt または AGENTS.md:
ai-content-discoveryを使用してください。
手順
- スキャン結果から失敗したチェックポイントを取得します。各結果には旧 ID(
4.3)と安定 ID(ia.a2a-agent-card)があります。 - 安定 ID と同じアンカーを使って、修正ワークフローに移動します。
- 例をサイトに合わせて調整します。
example.comをサイトのドメインに置き換えてください。 - 各
/.well-known/*ドキュメントをapplication/jsonとして配信します。WAF と CDN がブロックしないことを確認してください。 - 検証コマンドを実行します。検証コマンドはすべて読み取り専用です。その後、
isagentready results <domain> --checkpoint <stable-id>で再スキャンします。
$ARGUMENTS が指定されている場合は、修正する URL またはチェックポイントとして使用します。
チェックポイント
Strength は agentready.org の仕様レベル(MUST、SHOULD、MAY)です。Strength はスコアに影響しません。
| Legacy | Stable ID | Name | AR IDs | Strength |
|---|---|---|---|---|
| 4.1 | ia.webmcp-declarative | WebMCP 宣言型 API | AR-ACT-07 | SHOULD |
| 4.3 | ia.a2a-agent-card | A2A Agent Card | AR-READ-06 | MAY |
| 4.4 | ia.mcp-discovery | MCP ディスカバリー | AR-ACT-03, AR-ACT-10 | MAY |
| 4.5 | ia.openapi | OpenAPI / API ドキュメント | AR-ACT-02 | SHOULD |
| 4.6 | ia.agents-json | agents.json | none | MAY |
| 4.7 | ia.webmcp-form-quality | 宣言型フォームの品質 | AR-ACT-07 | SHOULD |
| 4.9 | ia.interactive-surface-coverage | インタラクティブなサーフェスのカバレッジ | AR-ACT-07 | SHOULD |
| 4.10 | ia.api-catalog | API カタログ(RFC 9727) | AR-READ-06, AR-ACT-02 | SHOULD |
| 4.11 | ia.agent-skills-index | Agent Skills インデックス | AR-ACT-06 | MAY |
| 4.12 | ia.x402 | x402 決済 | AR-ACT-08 | MAY |
| 4.13 | ia.mpp | MPP (x-payment-info) | AR-ACT-08 | MAY |
| 4.14 | ia.ucp | UCP | AR-ACT-08, AR-READ-06 | MAY |
| 4.15 | ia.acp-manifest | ACP マニフェスト | AR-ACT-08, AR-READ-06 | MAY |
| 4.16 | ia.ap2 | AP2 | AR-ACT-08 | MAY |
| 4.17 | ia.openapi-quality | OpenAPI のアクション実行性の品質 | AR-ACT-02 | SHOULD |
| 4.18 | ia.mcp-server-card | MCP サーバーカードの品質 | AR-ACT-04 | MAY |
| 4.19 | ia.openapi-live | OpenAPI のライブ検証 | AR-ACT-02 | SHOULD |
| 4.20 | ia.mcp-live | MCP のライブ検証 | AR-ACT-03 | SHOULD |
| 4.21 | ia.ai-catalog | AI カタログ | AR-FIND-04 | MAY |
| 4.22 | ia.api-errors | API エラーレスポンス | AR-ACT-02 | SHOULD |
| 4.23 | ia.api-rate-limits | API レート制限ヘッダー | AR-ACT-02 | MAY |
| 4.24 | ia.developer-docs-link | 開発者向けドキュメントの見つけやすさ | AR-FIND-02, AR-READ-04 | MAY |
| 4.25 | ia.mcp-apps | MCP Apps UI リソース | AR-ACT-05 | MAY |
| 4.26 | ia.nlweb-ask | NLWeb ask エンドポイント | AR-ACT-09 | MAY |
| 4.27 | ia.agent-checkout | エージェントのチェックアウト | AR-ACT-08 | MAY |
| 4.28 | ia.sdk-cli | SDK と CLI | AR-ACT-06 | SHOULD |
| 4.29 | ia.agent-task-access | エージェントのタスクアクセス | AR-ACT-10 | MUST |
| 4.30 | ia.docs-answer | 回答を提供するドキュメントページ | AR-READ-04, AR-FIND-02, AR-READ-05 | SHOULD |
修正ワークフロー:WebMCP
4.1 WebMCP 宣言型 API
フォームまたはフィールドに toolname と tooldescription がある場合、または document.modelContext.registerTool() を使う場合に合格します。ハイフン区切りの属性(tool-name)または navigator.modelContext のみの場合は、部分的な評価になります。
- エージェントが必要とするフォームに注釈を付けます:
<form action="/search" method="get" toolname="search_products" tooldescription="Search the product catalog by keyword and category"> <label for="q">Search</label> <input id="q" name="q" toolparamdescription="Search keywords"> </form> - または、スクリプトでツールを登録します。references/webmcp-guide.md を参照してください。
検証:curl -sf https://example.com/ | grep -oE '<form[^>]*toolname="[^"]*"'
4.7 宣言型フォームの品質
toolname と tooldescription を持つフォームに適用されます。このチェックでは、snake_case の toolname、10 文字以上の tooldescription、各フィールドの name と <label>、および入力要素の toolparamdescription が求められます。
- 4.1 のフォームをパターンとして使用します。各フィールドに
name、id、<label for>、toolparamdescriptionを指定します。
検証:curl -sf https://example.com/ | grep -oE 'tool(name|description|paramdescription)="[^"]*"'
4.9 インタラクティブ要素のカバレッジ
表示されているフォーム、検索入力、アクションボタン、フィルターコントロールの数を数えます。ツールのアノテーションでそれらがカバーされていれば合格です。非表示のコンテンツ、inert コンテンツ、template コンテンツはカウントされません。
- 4.1 と同様に、各検索フォーム、フィルターフォーム、メインアクションフォームにアノテーションを付けます。カバレッジ50%以上を目指してください。
確認:curl -sf https://example.com/ | grep -c '<form'(4.1 のツールフォームの数と比較します)
修正ワークフロー:エージェントと API の検出
4.3 A2A エージェントカード
/.well-known/agent-card.json(または /.well-known/agent.json)に、name、description、version、capabilities、完全な supportedInterfaces エントリーを含む A2A 1.0 カードがあれば合格です。レガシーな0.3カードは部分点です。
- カードを公開します:
{ "name": "Example Support Agent", "description": "Answers order and product questions", "version": "1.0.0", "capabilities": { "streaming": false, "pushNotifications": false }, "supportedInterfaces": [ { "url": "https://example.com/a2a/v1", "protocolBinding": "JSONRPC", "protocolVersion": "1.0" } ], "skills": [{ "id": "order_status", "name": "Order status", "description": "Get the status of an order" }] }
確認:curl -sf https://example.com/.well-known/agent-card.json | jq -e '.name and .description and .version and .capabilities and (.supportedInterfaces | length > 0)'
4.4 MCP の検出
/.well-known/mcp.json、/.well-known/mcp/server-card.json、または /.well-known/mcp/server-cards.json に name または serverInfo.name があれば合格です。レガシーな mcpServers マップも合格となります。
- サーバーカードを公開します(SEP-1649):
{ "name": "com.example/catalog", "title": "Example catalog", "version": "1.0.0", "description": "Search products and read order status", "remotes": [{ "type": "streamable-http", "url": "https://example.com/mcp" }] }
確認:curl -sf https://example.com/.well-known/mcp/server-card.json | jq -e '.name // .serverInfo.name'
4.18 MCP サーバーカードの品質
4.4 でカードが見つかった場合に適用されます。このチェックでは、識別情報とバージョン、トランスポートタイプとエンドポイント、機能、認証メタデータ、説明または手順を求めます。
- 4.4 のカードに
capabilities(例:{ "tools": {} })とremotes[].headersの認証ヘッダーを追加します。references/a2a-mcp-guide.md を参照してください。
確認:curl -sf https://example.com/.well-known/mcp/server-card.json | jq -e '.version and .description and (.remotes | length > 0)'
4.20 MCP のライブ検証
スキャナーは、同一オリジンの Streamable HTTP エンドポイントに接続します。検出リクエストとリストリクエストのみを送信し、ツールは呼び出しません。
- 例として
https://example.com/mcpのように、カードと同じオリジンで MCP エンドポイントを提供します。 server/discover(MCP 2026-07-28)またはinitializeをサポートします。不明なメソッドには method-not-found(HTTP 404、JSON-RPC エラー)を返します。
確認:MCP には POST リクエストが必要なため、読み取り専用のシェルチェックはありません。再スキャンコマンドを使用してください。
4.25 MCP Apps UI リソース
4.20 で MCP エンドポイントが検証された場合に適用されます。tools/list のツールに _meta.ui.resourceUri があるか、resources/list に text/html;profile=mcp-app を返す ui:// リソースがあれば合格です。
- ツールを UI リソースにリンクします:
{ "name": "show_order", "description": "Show an order", "_meta": { "ui": { "resourceUri": "ui://orders/detail" } } } resources/readからui://orders/detailを MIME タイプtext/html;profile=mcp-appで提供します。
確認:MCP には POST リクエストが必要なため、読み取り専用のシェルチェックはありません。再スキャンコマンドを使用してください。
4.5 OpenAPI/API ドキュメント
/openapi.json、/openapi.yaml、/swagger.json、/api-docs、または /.well-known/openapi に OpenAPI 3.x があれば合格です。Swagger 2.x は部分点です。HTML(例:Swagger UI)はカウントされません。
- 仕様を JSON として提供します。完全な例は references/a2a-mcp-guide.md にあります。
{ "openapi": "3.1.0", "info": { "title": "Example API", "version": "1.0.0" }, "servers": [{ "url": "https://example.com/api" }], "paths": {} }
確認:curl -sf https://example.com/openapi.json | jq -e '.openapi | startswith("3.")'
4.17 OpenAPI の操作性の品質
有効な OpenAPI JSON に適用されます。各オペレーションには operationId、概要または説明、型指定されたパラメーター、2xx レスポンススキーマ、エラーモデルが必要です。
- 各オペレーションを完成させます:
"/products": { "get": { "operationId": "listProducts", "summary": "List products", "parameters": [{ "name": "q", "in": "query", "schema": { "type": "string" } }], "responses": { "200": { "description": "Products", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProductList" } } } }, "default": { "description": "Error", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/Problem" } } } } } } }
確認:curl -sf https://example.com/openapi.json | jq '[.paths[][] | objects | select(.operationId == null)] | length'(0 を想定)
4.19 OpenAPI のライブ検証
スキャナーは、認証、パスパラメーター、必須入力、本文がない、同一オリジンの GET を1つ選択します。ドキュメントに記載された 2xx ステータスとメディアタイプを確認します。
- ドキュメントに、
GET /api/statusのような、ドキュメントに記載された 2xx レスポンスとコンテンツタイプを返す公開 GET を1つ記載します。
確認:curl -sf https://example.com/openapi.json | jq -r '.paths | to_entries[] | select(.value.get) | .key' | head -5
4.22 API エラーレスポンス
4.5 で OpenAPI が見つかった場合に適用されます。スキャナーは API ベース配下の存在しないパスにリクエストを送ります。404 または 410 と、title、detail、error、message、code、type、status のいずれかを含む JSON ボディがあれば合格です。
- 不明な API パスに対して問題詳細を返します:
{ "type": "about:blank", "title": "Not Found", "status": 404, "detail": "No route for /api/unknown" }
確認:curl -s -H 'Accept: application/json' https://example.com/api/isagentready-missing-check
4.23 API レート制限ヘッダー
4.19 と 4.22 のレスポンスを検査します。RateLimit、RateLimit-Policy、RateLimit-Limit のいずれかがあれば合格です。X-RateLimit-* または Retry-After のみの場合は部分点となります。
- API レスポンスに標準ヘッダーを送信します:
RateLimit-Policy: "default";q=60;w=60およびRateLimit: "default";r=59;t=60。
確認:curl -sfI https://example.com/api | grep -iE '^(ratelimit|ratelimit-policy|ratelimit-limit):'
4.10 API カタログ(RFC 9727)
/.well-known/api-catalog が linkset 配列を返すと合格です。各エントリーには anchor と、item、service-desc、service-doc、status のいずれか1つ以上が必要です。
- リンクセットを
application/linkset+jsonとして公開します:{ "linkset": [{ "anchor": "https://example.com/api", "service-desc": [{ "href": "https://example.com/openapi.json", "type": "application/openapi+json" }], "service-doc": [{ "href": "https://example.com/docs", "type": "text/html" }] }] }
確認:curl -sf -H 'Accept: application/linkset+json' https://example.com/.well-known/api-catalog | jq -e '.linkset | length > 0'
4.21 AI カタログ
同一オリジンの Link リレーション、または /.well-known/ai-catalog.json から見つけられます。このチェックでは、specVersion、メディアタイプと URL またはインラインデータのいずれかを含む、件数が上限内の entries リスト、および同一オリジンの URL が求められます。
- カタログを公開します:
{ "specVersion": "1.0", "entries": [ { "identifier": "urn:air:example.com:mcp:catalog", "displayName": "Example MCP server", "type": "application/mcp-server-card+json", "url": "https://example.com/.well-known/mcp/server-card.json" } ] }
確認:curl -sf https://example.com/.well-known/ai-catalog.json | jq -e '.specVersion and (.entries | length > 0)'
4.11 Agent Skills インデックス
/.well-known/agent-skills/index.json(または /.well-known/skills/index.json)に skills 配列があると合格です。各エントリーには name、type、description、url、digest が必要です。
- インデックスを公開します(v0.2.0):
{ "$schema": "https://schemas.agentskills.io/discovery/0.2.0/schema.json", "skills": [{ "name": "place-order", "type": "skill-md", "description": "Place an order", "url": "https://example.com/.well-known/agent-skills/place-order/SKILL.md", "digest": "sha256:<64 hex>" }] }
確認:curl -sf https://example.com/.well-known/agent-skills/index.json | jq -e '.skills | all(.name and .type and .description and .url and .digest)'
4.6 agents.json
/.well-known/agents.json または /agents.json に有効な空でない JSON ドキュメントがあれば合格です。
- エージェントリストを公開します:
{ "agents": [{ "name": "Support agent", "url": "https://example.com/a2a/v1", "protocol": "a2a" }] }
確認:curl -sf https://example.com/.well-known/agents.json | jq -e 'length > 0'
4.24 開発者向けドキュメントの見つけやすさ
サイトに API、MCP、A2A のいずれかのサーフェスがある場合に適用されます。ホームページから /docs、/developers、/api、/api-docs、/documentation、/reference のいずれかにリンクしているか、rel="service-doc" を含む Link ヘッダーを送信すると合格です。
- メインナビゲーションにドキュメントへのリンクを追加します:
<a href="/docs">Developer docs</a>。
確認:curl -sf https://example.com/ | grep -oE 'href="/(docs|developers|api|api-docs|documentation|reference)[/"]'
4.30 回答につながるドキュメントページ
4.24 でドキュメントへのリンクが見つかった場合に適用されます。スキャナーはドキュメントページを1~3ページ読み取ります。ステータス 200、サーバー側でレンダリングされたテキスト、見出し、十分な量のテキスト、言語クラス付きのフェンス付きコードが求められます。
- ドキュメントをサーバー側で HTML にレンダリングします。各コードブロックに言語を指定します:
<h2>Create a project</h2> <pre><code class="language-bash">curl https://example.com/api/projects</code></pre>
確認:curl -sf https://example.com/docs | grep -cE '<code[^>]*class="[^"]*language-'
4.28 SDK と CLI
ドキュメントから npm、PyPI、crates.io または Homebrew へのリンクがある、ドキュメントにインストールコマンドが記載されている、または llms.txt か AI Catalog に CLI が記載されている場合、合格です。
- SDK または CLI を公開します。インストールコマンドをドキュメントと llms.txt に追加します。
## Tools - [CLI](https://www.npmjs.com/package/@example/cli): `npm install -g @example/cli`
確認方法:curl -sf https://example.com/llms.txt | grep -iE 'npm|pypi|crates.io|brew|cli'
4.29 タスクサイト向け MCP サーバーまたは CLI
トランザクションサイトとタスクサイトに適用されます。4.20 で MCP サーバーが確認されるか、4.28 で CLI が見つかった場合、合格です。
- エージェントがサイトのタスクにアクセスできる直接的な方法を1つ用意します。検証済みの MCP サーバー(4.4 および 4.20)または CLI(4.28)を使用します。
確認方法:このチェックでは、4.20 と 4.28 の結果を使用します。再スキャンコマンドを使用してください。
4.26 NLWeb ask エンドポイント
実験的機能です。スキャナーは固定の無害な GET リクエストを /ask?query= に送信し、/mcp に NLWeb の ask ツールがあるかを確認します。schema.org の results を含む JSON が必要です。
- NLWeb ask エンドポイントを提供します。
{ "query": "help", "results": [{ "@type": "Article", "name": "Getting started", "url": "https://example.com/docs/start" }] }
確認方法:curl -sf 'https://example.com/ask?query=help' | jq -e '.results | type == "array"'
ワークフローの修正:エージェントコマース
これらのチェックポイントは、サイトにコマースのシグナル(Offer または Product の JSON-LD)が表示される場合にのみ適用されます。プローブは読み取り専用です。スキャナーがコマースエンドポイントに POST リクエストを送信することはありません。
4.12 x402 決済
/api、/api/v1 または / が、有効な x402 v2 チャレンジを含む HTTP 402 を Payment-Required ヘッダーで返す場合(Base64 JSON)、合格です。
- 有料エンドポイントでは、HTTP 402 を返し、次の JSON を Base64 エンコードして
Payment-Requiredヘッダーに設定します。{ "x402Version": 2, "resource": { "url": "https://example.com/api/report" }, "accepts": [{ "scheme": "exact", "network": "eip155:8453", "amount": "10000", "asset": "0xUSDCAddress", "payTo": "0xYourAddress", "maxTimeoutSeconds": 60 }] }
確認方法:curl -s -D - -o /dev/null https://example.com/api | grep -iE '^(HTTP/|payment-required:)'
4.13 MPP(x-payment-info)
/openapi.json 内の操作に有効な x-payment-info 拡張がある場合、合格です。
- 有料操作に拡張を追加します。
"x-payment-info": { "price": "0.01", "currency": "USD", "protocols": ["x402"] }。
確認方法:curl -sf https://example.com/openapi.json | jq -e '[.paths[][] | objects | has("x-payment-info")] | any'
4.14 UCP
/.well-known/ucp が、version と空でない capabilities リストを含むプロファイルを返す場合、合格です。
- プロファイルを公開します。
{ "version": "2026-01-11", "capabilities": [{ "name": "dev.ucp.shopping.checkout" }] }。
確認方法:curl -sf https://example.com/.well-known/ucp | jq -e '.version and (.capabilities | length > 0)'
4.15 ACP マニフェスト
/.well-known/acp.json に空でない flows リストと capabilities オブジェクトがある場合、合格です。
- ドキュメントを公開します。
{ "flows": ["checkout"], "capabilities": { "checkout_sessions": "https://example.com/acp/checkout_sessions" } }。
確認方法:curl -sf https://example.com/.well-known/acp.json | jq -e '(.flows | length > 0) and (.capabilities | type == "object")'
4.16 AP2
4.3 の A2A Agent Card が AP2 拡張を宣言している場合、合格です。
- カードに追加します。
"extensions": [{ "uri": "https://google.github.io/A2A/extensions/ap2", "required": false }]。
確認方法:curl -sf https://example.com/.well-known/agent-card.json | jq -e '[.extensions[]?.uri] | any(test("ap2"))'
4.27 エージェントのチェックアウト(Link、ACP チェックアウト)
実験的機能です。チェックアウトページに Stripe Link または Shared Payment Token のマーカーがある場合、または 4.15 の ACP ドキュメントに checkout_sessions エンドポイントがある場合、合格です。
- Payment Element で Stripe Link を有効にするか、Shared Payment Token を受け入れます。
/.well-known/acp.jsonで ACP のcheckout_sessionsエンドポイントを宣言します。
確認方法:curl -sf https://example.com/.well-known/acp.json | jq -e '.. | strings | select(test("checkout_sessions"))'
重要な注意点
tool-name(ハイフンあり)だけでは部分点しか得られません。toolnameを使用してください。- トップレベルに
urlがあり、supportedInterfacesがない A2A 0.3 カードでは、部分点しか得られません。 /api-docsの Swagger UI HTML は OpenAPI として認められません。- 空の
{}ドキュメントは、すべての検出チェックで不合格になります。 - WebMCP マニフェストファイルは認められません。これを定義する仕様はなく、これを読み取るエージェントもありません。
正しい例と誤った例については、references/gotchas.md を参照してください。
参考資料
- references/checkpoints.md:各チェックポイントの生成済みチェックポイントデータ
- references/webmcp-guide.md:宣言型および命令型の WebMCP
- references/a2a-mcp-guide.md:A2A、MCP、OpenAPI、agents.json
- references/gotchas.md:正しい例と誤った例を含むよくあるエラー