そのサイトを、エージェント対応に。
AI エージェントは、すでにあなたのページを読んでいます。何が見えているかを確かめたら、1 行で本物のツールを渡しましょう。
8,500 以上のサイトが、すでに WebMCP に対応。
ロゴをクリックすると、そのサイトをその場でスキャンします。
件数は webmcp.com のディレクトリに掲載中の稼働サイト(2026-11-05)。より厳格な Known Good インデックスでは、ページを実際に実行して 541 サイトがツールを登録することを確認しています(2026-11-04)。ロゴは 2026-11-07 にスキャナーで確認済み。各ロゴの権利は所有者に帰属し、当プロジェクトとの提携関係はありません。
なぜ WebMCP なのか
エージェントに渡すのは、スクショではなく契約。
WebMCP を使うと、ページは型付きのツールを AI エージェントに渡せます。ツールはユーザー自身のタブの中で動きます。何が変わるのか、根拠の強い順に紹介します。
最後までやり切るエージェント
現状
実際のサイトでは、テストした中で最も優秀なエージェントでもタスクの約 4 割に失敗しました。多くはフィルター、並べ替え、ナビゲーションでのつまずきです。
WebMCP なら
どのボタンが何をするのかを推測する代わりに、型付きの入力でツールを呼び出します。
トークンは数分の一に
現状
ページのスナップショットは 1 回で 12,000〜77,000 トークンになることもあり、エージェントはそれを毎ステップ送り直します。
WebMCP なら
呼び出しが返すのは、要求したデータだけです。当プロジェクトのベンチマークでは、Cloudflare でトークン数が最大 97× 少なくなりました(最良のケース)。
数分ではなく、数秒で
現状
見て、考えて、クリックして、また繰り返す。難しい実サイトのタスクでは、エージェントの実行が最長 44 分に及びました。
WebMCP なら
1 回の呼び出しが、一連のクリックを置き換えます。WindTunnel のベンチマークでは、中央値で 3.4 倍高速でした。
新しいサーバーも OAuth も不要
現状
エージェントに API を提供するとなると、通常は別のバックエンド、二重に管理する状態、認証フローが必要になります。
WebMCP なら
ツールはフロントエンドのコードそのもので、ユーザーがすでに持っているセッションで動きます。Shopify もこの方式で提供しています。
ユーザーを置き去りにしない
現状
エージェントはユーザーの見えないところで動くか、ユーザーを別の場所へ移動させます。
WebMCP なら
エージェントはユーザーが見ているページの上で動きます。確認が必要な操作は、ツール側で明示できます。
同じカート、同じフォーム
現状
バックエンドの API からは、ユーザーのタブで開いているカートやフォーム、選択状態が見えません。
WebMCP なら
ツールはユーザーが見ている状態に対して動くので、エージェントの操作に合わせてページも更新されます。
出典 Shopify
できることは、あなたが決める
現状
ページを読むエージェントは、ユーザーがクリックできるものなら何でもクリックできます。
WebMCP なら
公開するのは、あなたが選んだアクションとその入力、そして独自のバリデーションです。
出典 WebMCP ドラフト
導入は小さく、無視しても安全
現状
エージェント対応と聞くと、大きなプロジェクトに思えます。
WebMCP なら
必要なのは、いくつかのツール登録だけです。WebMCP 非対応のブラウザーはそれを無視し、ヘッダー 1 つで無効にもできます。
出典 WebMCP ドラフト
WebMCP は W3C Community Group のドラフト(2026 年 11 月 2 日)であり、W3C 標準ではありません。現在は Chrome のオリジントライアル中です。アノテーションはサイトが宣言するヒントであり、保証ではありません。
ベンチマーク
同じエージェント。同じ質問。
一方のエージェントはページのスナップショットを見ながら読み、クリックし、入力します。もう一方はサイトの WebMCP ツールを呼び出します。モデルを選んでください。削減効果の大きい順に並んでいます。
GPT-6 Luna(OpenAI)
抜粋したケース:全 35 問中 21 問。WebMCP のトークン使用量が半分以下だった質問です。すべての結果を公開しているほか、just bench で自分で実行することもできます。
Cloudflare
“How many requests per day can my Workers handle on the Cloudflare Workers Free plan before hitting the limit?”
developers.cloudflare.com 開く (Cloudflare を開きます)113k
トークン
13.1s · 10.0 ステップ · $4.45/1,000 回
成功 3/397× トークン削減
1.2k
トークン
3.8s · 2.0 ステップ · $0.15/1,000 回
成功 3/3| 質問 | WebMCP なし:トークン | webmcpx あり:トークン | WebMCP なし:成功 | webmcpx あり:成功 |
|---|---|---|---|---|
| Cloudflare:How many requests per day can my Workers handle on the Cloudflare Workers Free plan before hitting the limit? | 113k | 1.2k | 100% | 100% |
| Cloudflare:I'm on the Workers Paid plan. What's the maximum size a single Cloudflare D1 database can grow to? | 22k | 1.0k | 100% | 100% |
| Cloudflare:What is the maximum size of a single value stored in Cloudflare Workers KV? | 21k | 1.0k | 100% | 100% |
| Cloudflare:How long can a key be in Cloudflare Workers KV? I want to know the maximum key size. | 21k | 1.5k | 100% | 100% |
| Cloudflare:What is the largest message I can send to a Cloudflare Queue? I need the per-message size limit. | 21k | 2.8k | 100% | 100% |
| 質問 | WebMCP なし:時間 | webmcpx あり:時間 | WebMCP なし:成功 | webmcpx あり:成功 |
|---|---|---|---|---|
| Cloudflare:How many requests per day can my Workers handle on the Cloudflare Workers Free plan before hitting the limit? | 13.1s | 3.8s | 100% | 100% |
| Cloudflare:I'm on the Workers Paid plan. What's the maximum size a single Cloudflare D1 database can grow to? | 6.8s | 4.7s | 100% | 100% |
| Cloudflare:What is the maximum size of a single value stored in Cloudflare Workers KV? | 7.0s | 3.5s | 100% | 100% |
| Cloudflare:How long can a key be in Cloudflare Workers KV? I want to know the maximum key size. | 6.4s | 4.9s | 100% | 100% |
| Cloudflare:What is the largest message I can send to a Cloudflare Queue? I need the per-message size limit. | 6.4s | 9.2s | 100% | 100% |
| 質問 | WebMCP なし:ステップ | webmcpx あり:ステップ | WebMCP なし:成功 | webmcpx あり:成功 |
|---|---|---|---|---|
| Cloudflare:How many requests per day can my Workers handle on the Cloudflare Workers Free plan before hitting the limit? | 10.0 | 2.0 | 100% | 100% |
| Cloudflare:I'm on the Workers Paid plan. What's the maximum size a single Cloudflare D1 database can grow to? | 6.0 | 2.0 | 100% | 100% |
| Cloudflare:What is the maximum size of a single value stored in Cloudflare Workers KV? | 6.0 | 2.0 | 100% | 100% |
| Cloudflare:How long can a key be in Cloudflare Workers KV? I want to know the maximum key size. | 6.0 | 2.3 | 100% | 100% |
| Cloudflare:What is the largest message I can send to a Cloudflare Queue? I need the per-message size limit. | 6.0 | 3.7 | 100% | 100% |
| 質問 | WebMCP なし:コスト | webmcpx あり:コスト | WebMCP なし:成功 | webmcpx あり:成功 |
|---|---|---|---|---|
| Cloudflare:How many requests per day can my Workers handle on the Cloudflare Workers Free plan before hitting the limit? | $4.45 | $0.15 | 100% | 100% |
| Cloudflare:I'm on the Workers Paid plan. What's the maximum size a single Cloudflare D1 database can grow to? | $0.94 | $0.12 | 100% | 100% |
| Cloudflare:What is the maximum size of a single value stored in Cloudflare Workers KV? | $0.80 | $0.12 | 100% | 100% |
| Cloudflare:How long can a key be in Cloudflare Workers KV? I want to know the maximum key size. | $0.81 | $0.20 | 100% | 100% |
| Cloudflare:What is the largest message I can send to a Cloudflare Queue? I need the per-message size limit. | $0.86 | $0.32 | 100% | 100% |
Cloudflare が登録している WebMCP ツール(2 個)
エージェントが受け取った内容 · 2026-11-07
| ツール | 説明 | 呼び出し |
|---|---|---|
search | Full-text search across Cloudflare developer documentation. Returns matching pages with titles, URLs, and content snippets. Use this to find documentation on any Cloudflare product or feature. search({"query":"Workers Free plan requests per day limit 100,000 requests daily"}) search({"query":"D1 maximum database size Workers Paid plan single database"}) search({"query":"Cloudflare Workers KV maximum size of a single value"}) search({"query":"Cloudflare Workers KV maximum key size limit key length 512 bytes"}) search({"query":"Cloudflare Queues per-message size limit maximum message size","limit":5}) search({"query":"site:developers.cloudflare.com/queues/platform/limits/ message size 128 KB per message Cloudflare Queues","limit":5}) search({"query":"Queues Limits \"Message size\" Cloudflare 128 KB","limit":10}) search({"query":"\"Message size\" \"Queues\" \"128 KB\" Cloudflare","limit":5}) | 呼び出し |
list-directories | Returns a list of all Cloudflare products available in the developer documentation, including each product's name, docs URL, short description, and category group. Use this to discover what products exist before searching or navigating. | –呼び出しなし |
- gpt-6-luna、推論レベル medium、ヘッドレス Chrome。両条件で同じプロンプトとステップ上限を使い、質問と条件ごとに 3 回実行しています。
- WebMCP なし:DOM スナップショットを読み、クリックし、入力するエージェント。
- webmcpx あり:ページが登録したツールだけを使用。
- 回答に含まれる事実とページの状態で採点します。LLM ジャッジは使いません。
- 実サイト:独自の WebMCP ツールを提供しています。
git clone https://github.com/webmcpx/webmcpx
cd webmcpx && just setup
OPENAI_API_KEY=sk-... just benchNotion
“I'm writing long paragraphs into a Notion page through the API. What's the maximum number of characters a single rich text object's text content can have in a request?”
developers.notion.com 開く (Notion を開きます)64k
トークン
14.0s · 10.7 ステップ · $2.37/1,000 回
成功 3/361× トークン削減
1.0k
トークン
3.0s · 2.0 ステップ · $0.13/1,000 回
成功 3/3| 質問 | WebMCP なし:トークン | webmcpx あり:トークン | WebMCP なし:成功 | webmcpx あり:成功 |
|---|---|---|---|---|
| Notion:I'm writing long paragraphs into a Notion page through the API. What's the maximum number of characters a single rich text object's text content can have in a request? | 64k | 1.0k | 100% | 100% |
| Notion:How many requests per minute does the Notion API allow per connection on plans other than Business and Enterprise? | 57k | 1.1k | 33% | 100% |
| Notion:When my Notion integration sends too many requests, what error code string does the API put in the error response body? | 38k | 1.0k | 100% | 100% |
| Notion:I'm paginating through results from the Notion API. What's the largest page_size I can request per call on the list endpoints? | 37k | 1.1k | 67% | 100% |
| 質問 | WebMCP なし:時間 | webmcpx あり:時間 | WebMCP なし:成功 | webmcpx あり:成功 |
|---|---|---|---|---|
| Notion:I'm writing long paragraphs into a Notion page through the API. What's the maximum number of characters a single rich text object's text content can have in a request? | 14.0s | 3.0s | 100% | 100% |
| Notion:How many requests per minute does the Notion API allow per connection on plans other than Business and Enterprise? | 17.3s | 3.1s | 33% | 100% |
| Notion:When my Notion integration sends too many requests, what error code string does the API put in the error response body? | 12.2s | 2.6s | 100% | 100% |
| Notion:I'm paginating through results from the Notion API. What's the largest page_size I can request per call on the list endpoints? | 11.1s | 3.0s | 67% | 100% |
| 質問 | WebMCP なし:ステップ | webmcpx あり:ステップ | WebMCP なし:成功 | webmcpx あり:成功 |
|---|---|---|---|---|
| Notion:I'm writing long paragraphs into a Notion page through the API. What's the maximum number of characters a single rich text object's text content can have in a request? | 10.7 | 2.0 | 100% | 100% |
| Notion:How many requests per minute does the Notion API allow per connection on plans other than Business and Enterprise? | 11.7 | 2.0 | 33% | 100% |
| Notion:When my Notion integration sends too many requests, what error code string does the API put in the error response body? | 9.3 | 2.0 | 100% | 100% |
| Notion:I'm paginating through results from the Notion API. What's the largest page_size I can request per call on the list endpoints? | 9.3 | 2.0 | 67% | 100% |
| 質問 | WebMCP なし:コスト | webmcpx あり:コスト | WebMCP なし:成功 | webmcpx あり:成功 |
|---|---|---|---|---|
| Notion:I'm writing long paragraphs into a Notion page through the API. What's the maximum number of characters a single rich text object's text content can have in a request? | $2.37 | $0.13 | 100% | 100% |
| Notion:How many requests per minute does the Notion API allow per connection on plans other than Business and Enterprise? | $1.79 | $0.13 | 33% | 100% |
| Notion:When my Notion integration sends too many requests, what error code string does the API put in the error response body? | $1.32 | $0.12 | 100% | 100% |
| Notion:I'm paginating through results from the Notion API. What's the largest page_size I can request per call on the list endpoints? | $1.13 | $0.13 | 67% | 100% |
Notion が登録している WebMCP ツール(5 個)
エージェントが受け取った内容 · 2026-11-07
| ツール | 説明 | 呼び出し |
|---|---|---|
search_docs | Search the Notion Docs documentation for relevant pages and content. search_docs({"query":"maximum number characters single rich text object text content request API rich_text 2000"}) search_docs({"query":"requests per minute per connection plans other than Business Enterprise Notion API rate limit"}) search_docs({"query":"too many requests error response body error code string rate limit"}) search_docs({"query":"largest page_size request per call list endpoints pagination maximum 100"}) | 呼び出し |
get_site_overview | Get an outline of the Notion Docs documentation, grouped by section, with a short description of each page. May be truncated for large sites; use search_docs to find pages not listed. | –呼び出しなし |
navigate_page | Navigate the current browser tab to a Notion Docs documentation page. | –呼び出しなし |
read_page | Read the full content of a Notion Docs documentation page as markdown. | –呼び出しなし |
read_skill | Read a Notion Docs agent skill document by name. | –呼び出しなし |
- gpt-6-luna、推論レベル medium、ヘッドレス Chrome。両条件で同じプロンプトとステップ上限を使い、質問と条件ごとに 3 回実行しています。
- WebMCP なし:DOM スナップショットを読み、クリックし、入力するエージェント。
- webmcpx あり:ページが登録したツールだけを使用。
- 回答に含まれる事実とページの状態で採点します。LLM ジャッジは使いません。
- 実サイト:独自の WebMCP ツールを提供しています。
git clone https://github.com/webmcpx/webmcpx
cd webmcpx && just setup
OPENAI_API_KEY=sk-... just benchspecification.website
“How long should a page's meta description be, according to this spec?”
specification.website 開く (specification.website を開きます)43k
トークン
13.2s · 11.3 ステップ · $1.39/1,000 回
成功 3/311× トークン削減
4.0k
トークン
3.5s · 3.0 ステップ · $0.39/1,000 回
成功 3/3| 質問 | WebMCP なし:トークン | webmcpx あり:トークン | WebMCP なし:成功 | webmcpx あり:成功 |
|---|---|---|---|---|
| specification.website:How long should a page's meta description be, according to this spec? | 43k | 4.0k | 100% | 100% |
| specification.website:What's the minimum tap target size this spec requires for buttons and other interactive controls? | 41k | 4.4k | 67% | 100% |
| specification.website:What max-age should I put in my HSTS header for production, per this spec? | 18k | 3.7k | 100% | 100% |
| specification.website:What INP value does this spec set as the target for good responsiveness? | 13k | 3.3k | 100% | 100% |
| specification.website:What minimum contrast ratio does this site's spec require for normal-size body text? | 13k | 3.9k | 100% | 100% |
| 質問 | WebMCP なし:時間 | webmcpx あり:時間 | WebMCP なし:成功 | webmcpx あり:成功 |
|---|---|---|---|---|
| specification.website:How long should a page's meta description be, according to this spec? | 13.2s | 3.5s | 100% | 100% |
| specification.website:What's the minimum tap target size this spec requires for buttons and other interactive controls? | 13.1s | 3.5s | 67% | 100% |
| specification.website:What max-age should I put in my HSTS header for production, per this spec? | 8.0s | 3.9s | 100% | 100% |
| specification.website:What INP value does this spec set as the target for good responsiveness? | 7.2s | 3.0s | 100% | 100% |
| specification.website:What minimum contrast ratio does this site's spec require for normal-size body text? | 5.9s | 3.7s | 100% | 100% |
| 質問 | WebMCP なし:ステップ | webmcpx あり:ステップ | WebMCP なし:成功 | webmcpx あり:成功 |
|---|---|---|---|---|
| specification.website:How long should a page's meta description be, according to this spec? | 11.3 | 3.0 | 100% | 100% |
| specification.website:What's the minimum tap target size this spec requires for buttons and other interactive controls? | 10.3 | 3.0 | 67% | 100% |
| specification.website:What max-age should I put in my HSTS header for production, per this spec? | 6.7 | 3.0 | 100% | 100% |
| specification.website:What INP value does this spec set as the target for good responsiveness? | 6.0 | 2.7 | 100% | 100% |
| specification.website:What minimum contrast ratio does this site's spec require for normal-size body text? | 6.0 | 3.0 | 100% | 100% |
| 質問 | WebMCP なし:コスト | webmcpx あり:コスト | WebMCP なし:成功 | webmcpx あり:成功 |
|---|---|---|---|---|
| specification.website:How long should a page's meta description be, according to this spec? | $1.39 | $0.39 | 100% | 100% |
| specification.website:What's the minimum tap target size this spec requires for buttons and other interactive controls? | $1.34 | $0.35 | 67% | 100% |
| specification.website:What max-age should I put in my HSTS header for production, per this spec? | $0.76 | $0.31 | 100% | 100% |
| specification.website:What INP value does this spec set as the target for good responsiveness? | $0.59 | $0.29 | 100% | 100% |
| specification.website:What minimum contrast ratio does this site's spec require for normal-size body text? | $0.59 | $0.30 | 100% | 100% |
specification.website が登録している WebMCP ツール(5 個)
エージェントが受け取った内容 · 2026-11-07
| ツール | 説明 | 呼び出し |
|---|---|---|
search_spec | Search The Website Specification for matching topics. Returns ranked results with title, status, category, canonical URL, and a one-line summary. Use this when the user asks about a topic by keyword (e.g. "CSP", "alt text", "llms.txt"). search_spec({"query":"meta description recommended length characters"}) search_spec({"query":"minimum tap target size interactive controls buttons"}) search_spec({"query":"HSTS max-age production"}) search_spec({"query":"INP target good responsiveness value","limit":5}) search_spec({"query":"minimum contrast ratio normal-size body text WCAG"}) | 呼び出し |
get_topic | Fetch the Markdown for one spec page by its slug, returned as lines you can page through. Use this after search_spec or list_topics to read the canonical guidance. get_topic({"slug":"meta-description"}) get_topic({"slug":"touch-target-size"}) get_topic({"slug":"hsts","limit":200}) get_topic({"slug":"color-contrast"}) | 呼び出し |
list_topics | List spec topics, optionally filtered by category and/or status. Returns title, status, category, summary, and URL per topic. Use this when the user wants the canonical list (e.g. "all required SEO topics"). Results are paged — follow page/page_size to walk the whole list. | –呼び出しなし |
open_checklist | Navigate the user to the full spec checklist page. Optionally jumps to a category section via URL hash. UI action — does not return data. | –呼び出しなし |
open_search | Open the on-page ⌘K search overlay so the user can search the spec interactively. Optionally pre-fills a query. UI action — does not return results; use search_spec for that. | –呼び出しなし |
- gpt-6-luna、推論レベル medium、ヘッドレス Chrome。両条件で同じプロンプトとステップ上限を使い、質問と条件ごとに 3 回実行しています。
- WebMCP なし:DOM スナップショットを読み、クリックし、入力するエージェント。
- webmcpx あり:ページが登録したツールだけを使用。
- 回答に含まれる事実とページの状態で採点します。LLM ジャッジは使いません。
- 実サイト:独自の WebMCP ツールを提供しています。
git clone https://github.com/webmcpx/webmcpx
cd webmcpx && just setup
OPENAI_API_KEY=sk-... just benchKiln & Co
“Add one Stoneware Teapot and one Speckled Bowl to my cart, then tell me the cart total.”
12k
トークン
7.7s · 6.0 ステップ · $0.45/1,000 回
成功 3/36.0× トークン削減
2.1k
トークン
3.9s · 3.7 ステップ · $0.26/1,000 回
成功 3/3| 質問 | WebMCP なし:トークン | webmcpx あり:トークン | WebMCP なし:成功 | webmcpx あり:成功 |
|---|---|---|---|---|
| Kiln & Co(ローカルのテストサイト):Add one Stoneware Teapot and one Speckled Bowl to my cart, then tell me the cart total. | 12k | 2.1k | 100% | 100% |
| Kiln & Co(ローカルのテストサイト):I need a green gift under $30 that I can buy right now. What do you have? | 5.7k | 1.1k | 100% | 100% |
| Kiln & Co(ローカルのテストサイト):Add two of the cheapest blue mug to my cart. | 5.4k | 1.6k | 100% | 100% |
| Kiln & Co(ローカルのテストサイト):Put the most expensive teapot you sell in my cart. | 4.8k | 1.5k | 100% | 100% |
| 質問 | WebMCP なし:時間 | webmcpx あり:時間 | WebMCP なし:成功 | webmcpx あり:成功 |
|---|---|---|---|---|
| Kiln & Co(ローカルのテストサイト):Add one Stoneware Teapot and one Speckled Bowl to my cart, then tell me the cart total. | 7.7s | 3.9s | 100% | 100% |
| Kiln & Co(ローカルのテストサイト):I need a green gift under $30 that I can buy right now. What do you have? | 6.6s | 3.3s | 100% | 100% |
| Kiln & Co(ローカルのテストサイト):Add two of the cheapest blue mug to my cart. | 5.1s | 3.1s | 100% | 100% |
| Kiln & Co(ローカルのテストサイト):Put the most expensive teapot you sell in my cart. | 3.9s | 3.2s | 100% | 100% |
| 質問 | WebMCP なし:ステップ | webmcpx あり:ステップ | WebMCP なし:成功 | webmcpx あり:成功 |
|---|---|---|---|---|
| Kiln & Co(ローカルのテストサイト):Add one Stoneware Teapot and one Speckled Bowl to my cart, then tell me the cart total. | 6.0 | 3.7 | 100% | 100% |
| Kiln & Co(ローカルのテストサイト):I need a green gift under $30 that I can buy right now. What do you have? | 4.0 | 2.0 | 100% | 100% |
| Kiln & Co(ローカルのテストサイト):Add two of the cheapest blue mug to my cart. | 4.3 | 3.0 | 100% | 100% |
| Kiln & Co(ローカルのテストサイト):Put the most expensive teapot you sell in my cart. | 3.7 | 3.0 | 100% | 100% |
| 質問 | WebMCP なし:コスト | webmcpx あり:コスト | WebMCP なし:成功 | webmcpx あり:成功 |
|---|---|---|---|---|
| Kiln & Co(ローカルのテストサイト):Add one Stoneware Teapot and one Speckled Bowl to my cart, then tell me the cart total. | $0.45 | $0.26 | 100% | 100% |
| Kiln & Co(ローカルのテストサイト):I need a green gift under $30 that I can buy right now. What do you have? | $0.39 | $0.19 | 100% | 100% |
| Kiln & Co(ローカルのテストサイト):Add two of the cheapest blue mug to my cart. | $0.23 | $0.20 | 100% | 100% |
| Kiln & Co(ローカルのテストサイト):Put the most expensive teapot you sell in my cart. | $0.25 | $0.17 | 100% | 100% |
Kiln & Co が登録している WebMCP ツール(4 個)
エージェントが受け取った内容 · 2026-11-07
| ツール | 説明 | 呼び出し |
|---|---|---|
search_products | Search the catalog. Every filter is optional; with none, returns every product. Prices are USD. search_products({"query":"Stoneware Teapot"}) search_products({"query":"Speckled Bowl"}) search_products({"color":"green","max_price":30,"sort":"price_asc"}) search_products({"category":"mug","color":"blue","sort":"price_asc"}) search_products({"category":"teapot","sort":"price_desc"}) | 呼び出し |
add_to_cart | Add a product to the cart by sku. Adding a sku already in the cart increases its quantity. add_to_cart({"sku":"TPT-01","quantity":1}) add_to_cart({"sku":"BWL-01","quantity":1}) add_to_cart({"sku":"MUG-03","quantity":2}) add_to_cart({"sku":"TPT-02","quantity":1}) | 呼び出し |
get_cart | Return the cart: items with quantity and the total in USD. | –呼び出しなし |
get_page_context | Describe the page the user is on: title, URL, language, meta description, heading outline and the text the user has selected. Use it for the page's structure or the user's selection; to find a fact on the page, call search_page instead. | –呼び出しなし |
- gpt-6-luna、推論レベル medium、ヘッドレス Chrome。両条件で同じプロンプトとステップ上限を使い、質問と条件ごとに 3 回実行しています。
- WebMCP なし:DOM スナップショットを読み、クリックし、入力するエージェント。
- webmcpx あり:ページが登録したツールだけを使用。
- 回答に含まれる事実とページの状態で採点します。LLM ジャッジは使いません。
- ローカルのテストサイト:ツールは webmcpx が提供しています。
git clone https://github.com/webmcpx/webmcpx
cd webmcpx && just setup
OPENAI_API_KEY=sk-... just benchAllbirds
“I bought my Allbirds in the US but I'm moving to London next month. Can I exchange them for another size over there?”
www.allbirds.com 開く (Allbirds を開きます)27k
トークン
17.3s · 9.3 ステップ · $1.13/1,000 回
成功 2/34.4× トークン削減
6.0k
トークン
5.3s · 2.0 ステップ · $0.26/1,000 回
成功 3/3| 質問 | WebMCP なし:トークン | webmcpx あり:トークン | WebMCP なし:成功 | webmcpx あり:成功 |
|---|---|---|---|---|
| Allbirds:I bought my Allbirds in the US but I'm moving to London next month. Can I exchange them for another size over there? | 27k | 6.0k | 67% | 100% |
| 質問 | WebMCP なし:時間 | webmcpx あり:時間 | WebMCP なし:成功 | webmcpx あり:成功 |
|---|---|---|---|---|
| Allbirds:I bought my Allbirds in the US but I'm moving to London next month. Can I exchange them for another size over there? | 17.3s | 5.3s | 67% | 100% |
| 質問 | WebMCP なし:ステップ | webmcpx あり:ステップ | WebMCP なし:成功 | webmcpx あり:成功 |
|---|---|---|---|---|
| Allbirds:I bought my Allbirds in the US but I'm moving to London next month. Can I exchange them for another size over there? | 9.3 | 2.0 | 67% | 100% |
| 質問 | WebMCP なし:コスト | webmcpx あり:コスト | WebMCP なし:成功 | webmcpx あり:成功 |
|---|---|---|---|---|
| Allbirds:I bought my Allbirds in the US but I'm moving to London next month. Can I exchange them for another size over there? | $1.13 | $0.26 | 67% | 100% |
Allbirds が登録している WebMCP ツール(12 個)
エージェントが受け取った内容 · 2026-11-07
| ツール | 説明 | 呼び出し |
|---|---|---|
ask_business | Ask the store a question about its policies and services: returns, refunds and exchanges, shipping and delivery, privacy, terms, subscriptions, contact details and opening hours, or FAQ topics such as gift wrapping. The store answers it: from its own knowledge base when the store offers Ask, otherwise from its published policies, FAQ pages and articles. Put the shopper's question in ask.query in their own words, one question per call; name the topic when the shopper only implies it (e.g. a question about sending back a gift is a returns question). Read-only: it does not change the cart, place orders, or start returns. For products, prices and availability, use search_catalog or get_product. Examples of questions: - What is your return policy? - How long does shipping to Canada take? - What is your phone number? - What are your hours of operation? - Do you offer gift wrapping? ask_business({"ask":{"query":"Can I exchange Allbirds bought in the US for another size in London, UK?","context":{"intent":"moving to London next month; asking about international size exchanges"}}}) | 呼び出し |
browse_store | Browse OR navigate to store collections. Set navigate=true whenever the user wants to be taken to a collection page in the browser (triggers: "browse to", "go to", "show me", "open", "take me to", "navigate to" a collection or category). With navigate=false (default), returns collection or product data without changing the page — use this only when the user is asking a question about the catalog, not asking to view it. Without a collection handle, lists all collections. With a handle, returns products from that collection; use "all" to browse everything. Does NOT add anything to the cart; use create_cart or update_cart for cart changes. Prefer this over search_catalog when the user names a category, collection, or wants to explore. With navigate=true this MOVES the browser to the collection page; the tool result confirms the destination, and no further navigation is needed to show it. | –呼び出しなし |
cancel_cart | Remove all items from the cart in one step. Use when the user wants to empty their cart or start over. | –呼び出しなし |
create_cart | Create the shopper's cart with the given items, for a shopper whose cart has no items yet. It is the tool for a shopper asking to add or buy something when the cart is empty, and that request is all the authorization it needs. Each line item names a ProductVariant GID in item.id (variant_id from search_catalog or browse_store, or variants[].id from get_product for specific options) and a quantity; every item from one request fits in one call. When the cart already has items, nothing is created or changed: the result is that existing cart with an error message, and update_cart can extend it with its current lines plus the new ones. Returns the whole resulting cart, including its id and line ids. Repeating a call with the same items leaves the cart as it is. | –呼び出しなし |
get_cart | Get the shopper's current cart: its id, every line (line id, product and variant titles, variant id, handle, URL, image, unit price, quantity, line price) and the totals. Everything needed to describe the cart to the user in natural language, without a follow-up get_product call per line. It is also where a change to an existing cart starts from: update_cart takes the cart's id and the complete set of lines the cart should hold, and create_cart applies only to a cart with no items. Works from any page. | –呼び出しなし |
get_product | Get product details, OR navigate the browser to the product page. Set catalog.navigate=true whenever the user wants to see/view the product in the browser (triggers: "show me", "open", "view", "go to", "take me to", "navigate to" a product). Set catalog.navigate=false (default) only when you need data (description, options, variants, prices, availability) to answer a question or to prepare a cart change — the browser stays on the current page. Defaults to the current page's product if no catalog.id is provided. Does NOT add anything to the cart; use create_cart or update_cart for that. To view a specific variant (color/size/etc.) in the browser, use show_variant instead — it accepts partial option selections like "purple" without needing every option. To add a specific variant to the cart, call get_product with catalog.selected_options to get its variant id. With catalog.navigate=true this MOVES the browser to the product page; the tool result confirms the destination, and no further navigation is needed to show it. | –呼び出しなし |
get_ucp_profile | Get this store's Universal Commerce Protocol (UCP) profile, as served at /.well-known/ucp: the UCP version, the services the store offers with their endpoints (e.g. the store's UCP MCP server), its capabilities, and its payment handlers. Use it to discover how to continue a purchase with this store over UCP, or to check which platform operates the store. Read-only; works from any page. | –呼び出しなし |
manage_orders | Navigate to the customer's order history page. Use when the user asks about past orders, order status, tracking, or returns. The user will be prompted to log in if not already authenticated. This MOVES the browser to the order history page; the tool result confirms the destination, and no further navigation is needed to show it. | –呼び出しなし |
proceed_to_checkout | Proceed to checkout. Verifies the cart is not empty, then MOVES the browser to the checkout page. The tool result confirms the destination, and no further navigation is needed to show it. | –呼び出しなし |
search_catalog | Search the store catalog for products, collections, articles, and pages. Does NOT add anything to the cart; use create_cart or update_cart for cart changes. Each product carries variant_id, its selected or first available variant. If the user asks for a specific product variant, call get_product after search_catalog to get that variant's id, or use show_variant to display it. | –呼び出しなし |
show_variant | Navigate the browser to a product page, with a specific variant OR a partial option filter selected. Use for view intents: "show me", "open", "view", "go to", "take me to" a specific product configuration. Accepts EITHER variant_id (fully specified variant) OR selected_options (partial, e.g. only Color=Purple) — with partial options the first matching available variant is picked automatically, so DO NOT ask the user for missing options when their intent is to view. Does NOT add anything to the cart; use create_cart or update_cart for cart changes. For cart operations you still need a full variant_id — call get_product with the full option combination first. This MOVES the browser to the exact variant page with the variant pre-selected; the tool result confirms the destination, and no further navigation is needed to show it. | –呼び出しなし |
update_cart | Set the shopper's cart to exactly the given line items. This is a full replacement, not a patch: afterwards the cart holds these lines and only these. - A listed line with its line_items[].id keeps its place and is set to the given quantity, which is absolute (2 means 2, not 2 more). - A listed item without a line id is added, or, when that variant is already on one line of the cart, sets that line's quantity. - A line in the cart that is not listed is removed. It takes the cart's lines as most recently returned by get_cart, create_cart or update_cart. When the cart has changed since then (for example, the shopper edited it on the page, or a new cart replaced it), or an id is given that is not the shopper's current cart, nothing changes and the result is the current cart with an error message. Since the outcome depends only on the lines sent, repeating a call leaves the cart as it is. An empty line_items list empties the cart; leaving line_items out leaves the lines as they are. Returns the whole resulting cart, including its line ids, and messages about the call. | –呼び出しなし |
- gpt-6-luna、推論レベル medium、ヘッドレス Chrome。両条件で同じプロンプトとステップ上限を使い、質問と条件ごとに 3 回実行しています。
- WebMCP なし:DOM スナップショットを読み、クリックし、入力するエージェント。
- webmcpx あり:ページが登録したツールだけを使用。
- 回答に含まれる事実とページの状態で採点します。LLM ジャッジは使いません。
- 実サイト:独自の WebMCP ツールを提供しています。
git clone https://github.com/webmcpx/webmcpx
cd webmcpx && just setup
OPENAI_API_KEY=sk-... just benchOrbit docs
“Which environment variable makes Orbit read its config file from a different path?”
2.5k
トークン
3.4s · 2.0 ステップ · $0.15/1,000 回
成功 3/32.5× トークン削減
989
トークン
3.4s · 2.0 ステップ · $0.12/1,000 回
成功 3/3| 質問 | WebMCP なし:トークン | webmcpx あり:トークン | WebMCP なし:成功 | webmcpx あり:成功 |
|---|---|---|---|---|
| Orbit docs(ローカルのテストサイト):Which environment variable makes Orbit read its config file from a different path? | 2.5k | 989 | 100% | 100% |
| Orbit docs(ローカルのテストサイト):By default, how many past releases does Orbit keep for rollback? | 2.5k | 992 | 100% | 100% |
| 質問 | WebMCP なし:時間 | webmcpx あり:時間 | WebMCP なし:成功 | webmcpx あり:成功 |
|---|---|---|---|---|
| Orbit docs(ローカルのテストサイト):Which environment variable makes Orbit read its config file from a different path? | 3.4s | 3.4s | 100% | 100% |
| Orbit docs(ローカルのテストサイト):By default, how many past releases does Orbit keep for rollback? | 2.1s | 2.1s | 100% | 100% |
| 質問 | WebMCP なし:ステップ | webmcpx あり:ステップ | WebMCP なし:成功 | webmcpx あり:成功 |
|---|---|---|---|---|
| Orbit docs(ローカルのテストサイト):Which environment variable makes Orbit read its config file from a different path? | 2.0 | 2.0 | 100% | 100% |
| Orbit docs(ローカルのテストサイト):By default, how many past releases does Orbit keep for rollback? | 2.0 | 2.0 | 100% | 100% |
| 質問 | WebMCP なし:コスト | webmcpx あり:コスト | WebMCP なし:成功 | webmcpx あり:成功 |
|---|---|---|---|---|
| Orbit docs(ローカルのテストサイト):Which environment variable makes Orbit read its config file from a different path? | $0.15 | $0.12 | 100% | 100% |
| Orbit docs(ローカルのテストサイト):By default, how many past releases does Orbit keep for rollback? | $0.15 | $0.12 | 100% | 100% |
Orbit docs が登録している WebMCP ツール(3 個)
エージェントが受け取った内容 · 2026-11-07
| ツール | 説明 | 呼び出し |
|---|---|---|
search_page | Find passages on the current page that match a query. Returns up to `limit` passages ranked by relevance, each with its section heading and a link to it. Prefer it to reading the whole page when looking for something specific. search_page({"query":"environment variable config file path Orbit","limit":5}) search_page({"query":"past releases rollback default","limit":5}) | 呼び出し |
fetch_as_markdown | Return the main content of the current page as Markdown. Long pages come in parts: when `truncated` is true, call again with `cursor` set to `next_cursor`. | –呼び出しなし |
get_page_context | Describe the page the user is on: title, URL, language, meta description, heading outline and the text the user has selected. Use it for the page's structure or the user's selection; to find a fact on the page, call search_page instead. | –呼び出しなし |
- gpt-6-luna、推論レベル medium、ヘッドレス Chrome。両条件で同じプロンプトとステップ上限を使い、質問と条件ごとに 3 回実行しています。
- WebMCP なし:DOM スナップショットを読み、クリックし、入力するエージェント。
- webmcpx あり:ページが登録したツールだけを使用。
- 回答に含まれる事実とページの状態で採点します。LLM ジャッジは使いません。
- ローカルのテストサイト:ツールは webmcpx が提供しています。
git clone https://github.com/webmcpx/webmcpx
cd webmcpx && just setup
OPENAI_API_KEY=sk-... just benchWebMCP と MCP
ツールの考え方は同じ。動く場所が違う。
WebMCP は MCP のツールモデルを借りていますが、MCP プロトコルではなくブラウザー API です。両者は補い合う関係にあります。
| 項目 | WebMCP | MCP |
|---|---|---|
| ツールの実行場所 | ページの JavaScript 内。ユーザーのタブの中で動きます。 | サーバープロセス内。ローカル(stdio)またはリモート。 |
| 呼び出し方 | ブラウザー API の document.modelContext。各呼び出しはブラウザーが仲介します。JSON-RPC は使いません。 | stdio または Streamable HTTP 上の JSON-RPC 2.0。 |
| 運用するもの | 既存のフロントエンド。新しいサーバーは不要です。 | 自分でホストし運用する MCP サーバー。 |
| 認証 | ユーザーがすでにサインインしているセッション。トークンを発行する必要はありません。 | リモートサーバー向けの OAuth ベースの認可。 |
| ディスカバリー | ページを開いた時点で見つかります。訪問前に探すものはありません。 | 既知のエンドポイントへの tools/list と、公開レジストリ。 |
| 有効期間 | ページを開いている間だけ。 | 常時稼働。ブラウザーは不要です。 |
| ユーザー | エージェントと同じページにいます。 | いなくても構いません。ヘッドレスで動作します。 |
| 対象範囲 | ツールのみ。入力・出力スキーマ付き。 | ツール、リソース、プロンプト。加えて elicitation と拡張機能。 |
| ツールのヒント | readOnlyHint、consequentialHint、untrustedContentHint。デフォルトで同一オリジン。 | readOnlyHint、destructiveHint、idempotentHint、openWorldHint。 |
| ステータス | W3C Community Group のドラフト。Chrome でオリジントライアル中。 | Linux Foundation のプロジェクト。公開サーバーは 10,000 以上。 |
両方を使う
MCP は、あなたのサイトを開かないエージェントのためのもの。WebMCP は、ユーザーのそばで、そのタブの中で働くエージェントのためのものです。1 つのバックエンドで両方を動かせます。Shopify はすでにそうしています。
1 行で、エージェント対応。
</body> の直前に貼り付けるだけ。WebMCP がない環境では何もしません。
<script type="module" src="https://cdn.jsdelivr.net/npm/[email protected]/src/auto.js"></script>または npm i webmcpx(npm を使う場合)または npx skills add webmcpx/webmcpx(コーディングエージェントの場合)
search_page該当箇所を見つけるfetch_as_markdownページを分割して読むget_page_context現在地を把握する
読込時 ~2.7 KB · Rust + WebAssembly · MIT License
仕様トラッカーから