webmcpx benchmark: Gemini 4 Argon
Leaderboard
How much WebMCP saves, model by model
One agent reads, clicks and fills using page snapshots; the other calls the site's WebMCP tools. Pick a model; biggest savings first.
Ranked by success with WebMCP, then by cost per run.
Selected cases: 21 of 30 questions, where WebMCP used at most half the tokens. All results are public, or run it yourself with just bench.
Gemini 4 Argon (Google)
Cloudflare
“How many requests per day can my Workers handle on the Cloudflare Workers Free plan before hitting the limit?”
developers.cloudflare.com (opens Cloudflare)42×
fewer tokens
62k → 1.5k tokens
| Question | Without WebMCP: tokens | With WebMCP: tokens | Without WebMCP: solved | With WebMCP: solved |
|---|---|---|---|---|
| Cloudflare: How many requests per day can my Workers handle on the Cloudflare Workers Free plan before hitting the limit? | 62k | 1.5k | 100% | 100% |
| Cloudflare: I'm on the Workers Paid plan. What's the maximum size a single Cloudflare D1 database can grow to? | 44k | 1.4k | 100% | 100% |
| Cloudflare: What is the maximum size of a single value stored in Cloudflare Workers KV? | 41k | 1.4k | 100% | 100% |
| Cloudflare: How long can a key be in Cloudflare Workers KV? I want to know the maximum key size. | 41k | 1.5k | 100% | 100% |
| Cloudflare: What is the largest message I can send to a Cloudflare Queue? I need the per-message size limit. | 42k | 15k | 100% | 100% |
| Question | Without WebMCP: time | With WebMCP: time | Without WebMCP: solved | With WebMCP: solved |
|---|---|---|---|---|
| Cloudflare: How many requests per day can my Workers handle on the Cloudflare Workers Free plan before hitting the limit? | 121.6s | 40.8s | 100% | 100% |
| Cloudflare: I'm on the Workers Paid plan. What's the maximum size a single Cloudflare D1 database can grow to? | 71.4s | 38.4s | 100% | 100% |
| Cloudflare: What is the maximum size of a single value stored in Cloudflare Workers KV? | 99.0s | 19.6s | 100% | 100% |
| Cloudflare: How long can a key be in Cloudflare Workers KV? I want to know the maximum key size. | 55.3s | 32.1s | 100% | 100% |
| Cloudflare: What is the largest message I can send to a Cloudflare Queue? I need the per-message size limit. | 550.5s | 120.6s | 100% | 100% |
| Question | Without WebMCP: steps | With WebMCP: steps | Without WebMCP: solved | With WebMCP: solved |
|---|---|---|---|---|
| Cloudflare: How many requests per day can my Workers handle on the Cloudflare Workers Free plan before hitting the limit? | 5.3 | 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.0 | 100% | 100% |
| Cloudflare: What is the largest message I can send to a Cloudflare Queue? I need the per-message size limit. | 6.0 | 6.7 | 100% | 100% |
| Question | Without WebMCP: cost | With WebMCP: cost | Without WebMCP: solved | With WebMCP: solved |
|---|---|---|---|---|
| Cloudflare: How many requests per day can my Workers handle on the Cloudflare Workers Free plan before hitting the limit? | $0.064 | $0.0037 | 100% | 100% |
| Cloudflare: I'm on the Workers Paid plan. What's the maximum size a single Cloudflare D1 database can grow to? | $0.041 | $0.0037 | 100% | 100% |
| Cloudflare: What is the maximum size of a single value stored in Cloudflare Workers KV? | $0.036 | $0.0035 | 100% | 100% |
| Cloudflare: How long can a key be in Cloudflare Workers KV? I want to know the maximum key size. | $0.042 | $0.0036 | 100% | 100% |
| Cloudflare: What is the largest message I can send to a Cloudflare Queue? I need the per-message size limit. | $0.043 | $0.028 | 100% | 100% |
The 2 WebMCP tools Cloudflare registers
as the agent saw them · 2026-11-08
| Tool | Description | Called |
|---|---|---|
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"}) search({"query":"D1 limits maximum database size Workers Paid"}) search({"query":"Workers KV limits maximum value size"}) search({"query":"Workers KV limits maximum key size"}) search({"query":"Cloudflare Queues limits message size"}) search({"query":"\"Maximum message size\" queues OR \"Message size\" queues KB MB"}) search({"query":"\"128 KB\" OR \"256 KB\" OR \"64 KB\" queues limits"}) search({"query":"\"128 KB\" queues metadata serialization"}) search({"query":"\"Maximum messages per sendBatch call\" \"Message size\""}) search({"query":"\"256KB in total\""}) | Called |
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. | –Not called |
- gemini-4-argon, reasoning medium, headless Chrome. Same prompt and step limit in both arms; 3 runs per question and arm.
- Without WebMCP: a DOM-snapshot agent that reads, clicks and fills.
- With WebMCP: only the tools the page registers (its own, or webmcpx’s on our test sites).
- Graded by facts in the answer and page state. No LLM judge.
- A live site: it ships its own WebMCP tools.
- 30 questions on 6 sites, 27 of them read-only; the biggest savings come from the sites' own search tools.
- 3 runs per question and arm: 3 of 3 solved is evidence, not proof of 100%.
- Time is the agent loop after the page loaded; cost is the model's API usage at dated list prices, cache included.
- Every failed run says why in the results (bot check, answer not from the page, step limit…).
git clone https://github.com/webmcpx/webmcpx
cd webmcpx && just setup
GEMINI_API_KEY=... just bench --model gemini-4-argon --reasoning-effort mediumNotion
“How many requests per minute does the Notion API allow per connection on plans other than Business and Enterprise?”
developers.notion.com (opens Notion)17×
fewer tokens
24k → 1.4k tokens
| Question | Without WebMCP: tokens | With WebMCP: tokens | Without WebMCP: solved | With WebMCP: solved |
|---|---|---|---|---|
| Notion: How many requests per minute does the Notion API allow per connection on plans other than Business and Enterprise? | 24k | 1.4k | 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? | 22k | 3.5k | 100% | 100% |
| 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? | 24k | 6.1k | 100% | 100% |
| Notion: When my Notion integration sends too many requests, what error code string does the API put in the error response body? | 24k | 7.2k | 100% | 100% |
| Question | Without WebMCP: time | With WebMCP: time | Without WebMCP: solved | With WebMCP: solved |
|---|---|---|---|---|
| Notion: How many requests per minute does the Notion API allow per connection on plans other than Business and Enterprise? | 158.7s | 28.7s | 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? | 151.0s | 51.5s | 100% | 100% |
| 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? | 158.7s | 62.8s | 100% | 100% |
| Notion: When my Notion integration sends too many requests, what error code string does the API put in the error response body? | 163.8s | 72.4s | 100% | 100% |
| Question | Without WebMCP: steps | With WebMCP: steps | Without WebMCP: solved | With WebMCP: solved |
|---|---|---|---|---|
| Notion: How many requests per minute does the Notion API allow per connection on plans other than Business and Enterprise? | 6.0 | 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? | 6.0 | 3.0 | 100% | 100% |
| 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? | 6.0 | 3.0 | 100% | 100% |
| Notion: When my Notion integration sends too many requests, what error code string does the API put in the error response body? | 6.0 | 3.7 | 100% | 100% |
| Question | Without WebMCP: cost | With WebMCP: cost | Without WebMCP: solved | With WebMCP: solved |
|---|---|---|---|---|
| Notion: How many requests per minute does the Notion API allow per connection on plans other than Business and Enterprise? | $0.034 | $0.0034 | 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? | $0.033 | $0.0081 | 100% | 100% |
| 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? | $0.035 | $0.014 | 100% | 100% |
| Notion: When my Notion integration sends too many requests, what error code string does the API put in the error response body? | $0.035 | $0.017 | 100% | 100% |
The 5 WebMCP tools Notion registers
as the agent saw them · 2026-11-08
| Tool | Description | Called |
|---|---|---|
search_docs | Search the Notion Docs documentation for relevant pages and content. search_docs({"query":"requests per minute connection Business Enterprise"}) search_docs({"query":"page_size pagination"}) search_docs({"query":"rich text object character limit request limits"}) search_docs({"query":"rate limit error code"}) search_docs({"query":"Request limits status codes rate_limited"}) | Called |
read_page | Read the full content of a Notion Docs documentation page as markdown. read_page({"path":"https://developers.notion.com/reference/pagination"}) read_page({"path":"/reference/request-limits"}) read_page({"path":"https://developers.notion.com/reference/status-codes"}) read_page({"path":"https://developers.notion.com/reference/request-limits"}) | Called |
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. | –Not called |
navigate_page | Navigate the current browser tab to a Notion Docs documentation page. | –Not called |
read_skill | Read a Notion Docs agent skill document by name. | –Not called |
- gemini-4-argon, reasoning medium, headless Chrome. Same prompt and step limit in both arms; 3 runs per question and arm.
- Without WebMCP: a DOM-snapshot agent that reads, clicks and fills.
- With WebMCP: only the tools the page registers (its own, or webmcpx’s on our test sites).
- Graded by facts in the answer and page state. No LLM judge.
- A live site: it ships its own WebMCP tools.
- 30 questions on 6 sites, 27 of them read-only; the biggest savings come from the sites' own search tools.
- 3 runs per question and arm: 3 of 3 solved is evidence, not proof of 100%.
- Time is the agent loop after the page loaded; cost is the model's API usage at dated list prices, cache included.
- Every failed run says why in the results (bot check, answer not from the page, step limit…).
git clone https://github.com/webmcpx/webmcpx
cd webmcpx && just setup
GEMINI_API_KEY=... just bench --model gemini-4-argon --reasoning-effort mediumspecification.website
“How long should a page's meta description be, according to this spec?”
specification.website (opens specification.website)6.1×
fewer tokens
30k → 4.9k tokens
| Question | Without WebMCP: tokens | With WebMCP: tokens | Without WebMCP: solved | With WebMCP: solved |
|---|---|---|---|---|
| specification.website: How long should a page's meta description be, according to this spec? | 30k | 4.9k | 100% | 100% |
| specification.website: What max-age should I put in my HSTS header for production, per this spec? | 22k | 4.5k | 100% | 100% |
| specification.website: What INP value does this spec set as the target for good responsiveness? | 23k | 4.7k | 100% | 100% |
| specification.website: What minimum contrast ratio does this site's spec require for normal-size body text? | 23k | 4.7k | 100% | 100% |
| specification.website: What's the minimum tap target size this spec requires for buttons and other interactive controls? | 24k | 5.6k | 100% | 100% |
| Question | Without WebMCP: time | With WebMCP: time | Without WebMCP: solved | With WebMCP: solved |
|---|---|---|---|---|
| specification.website: How long should a page's meta description be, according to this spec? | 126.7s | 70.5s | 100% | 100% |
| specification.website: What max-age should I put in my HSTS header for production, per this spec? | 140.6s | 50.5s | 100% | 100% |
| specification.website: What INP value does this spec set as the target for good responsiveness? | 105.5s | 56.0s | 100% | 100% |
| specification.website: What minimum contrast ratio does this site's spec require for normal-size body text? | 79.6s | 45.5s | 100% | 100% |
| specification.website: What's the minimum tap target size this spec requires for buttons and other interactive controls? | 195.8s | 52.4s | 100% | 100% |
| Question | Without WebMCP: steps | With WebMCP: steps | Without WebMCP: solved | With WebMCP: solved |
|---|---|---|---|---|
| specification.website: How long should a page's meta description be, according to this spec? | 6.0 | 3.0 | 100% | 100% |
| specification.website: What max-age should I put in my HSTS header for production, per this spec? | 6.0 | 3.0 | 100% | 100% |
| specification.website: What INP value does this spec set as the target for good responsiveness? | 6.0 | 3.0 | 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% |
| specification.website: What's the minimum tap target size this spec requires for buttons and other interactive controls? | 6.0 | 3.0 | 100% | 100% |
| Question | Without WebMCP: cost | With WebMCP: cost | Without WebMCP: solved | With WebMCP: solved |
|---|---|---|---|---|
| specification.website: How long should a page's meta description be, according to this spec? | $0.033 | $0.011 | 100% | 100% |
| specification.website: What max-age should I put in my HSTS header for production, per this spec? | $0.028 | $0.011 | 100% | 100% |
| specification.website: What INP value does this spec set as the target for good responsiveness? | $0.027 | $0.01 | 100% | 100% |
| specification.website: What minimum contrast ratio does this site's spec require for normal-size body text? | $0.03 | $0.01 | 100% | 100% |
| specification.website: What's the minimum tap target size this spec requires for buttons and other interactive controls? | $0.029 | $0.014 | 100% | 100% |
The 5 WebMCP tools specification.website registers
as the agent saw them · 2026-11-08
| Tool | Description | Called |
|---|---|---|
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"}) search_spec({"query":"HSTS"}) search_spec({"query":"INP responsiveness"}) search_spec({"query":"contrast ratio"}) search_spec({"query":"tap target size"}) | Called |
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":"hsts"}) get_topic({"slug":"core-web-vitals"}) get_topic({"slug":"color-contrast"}) get_topic({"slug":"touch-target-size"}) | Called |
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. | –Not called |
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. | –Not called |
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. | –Not called |
- gemini-4-argon, reasoning medium, headless Chrome. Same prompt and step limit in both arms; 3 runs per question and arm.
- Without WebMCP: a DOM-snapshot agent that reads, clicks and fills.
- With WebMCP: only the tools the page registers (its own, or webmcpx’s on our test sites).
- Graded by facts in the answer and page state. No LLM judge.
- A live site: it ships its own WebMCP tools.
- 30 questions on 6 sites, 27 of them read-only; the biggest savings come from the sites' own search tools.
- 3 runs per question and arm: 3 of 3 solved is evidence, not proof of 100%.
- Time is the agent loop after the page loaded; cost is the model's API usage at dated list prices, cache included.
- Every failed run says why in the results (bot check, answer not from the page, step limit…).
git clone https://github.com/webmcpx/webmcpx
cd webmcpx && just setup
GEMINI_API_KEY=... just bench --model gemini-4-argon --reasoning-effort mediumKiln & Co local
“Add one Stoneware Teapot and one Speckled Bowl to my cart, then tell me the cart total.”
4.7×
fewer tokens
16k → 3.4k tokens
| Question | Without WebMCP: tokens | With WebMCP: tokens | Without WebMCP: solved | With WebMCP: solved |
|---|---|---|---|---|
| Kiln & Co (local test site): Add one Stoneware Teapot and one Speckled Bowl to my cart, then tell me the cart total. | 16k | 3.4k | 100% | 100% |
| Kiln & Co (local test site): I need a green gift under $30 that I can buy right now. What do you have? | 5.5k | 1.3k | 100% | 100% |
| Kiln & Co (local test site): Put the most expensive teapot you sell in my cart. | 7.6k | 2.1k | 100% | 100% |
| Kiln & Co (local test site): Add two of the cheapest blue mug to my cart. | 7.9k | 2.2k | 100% | 100% |
| Question | Without WebMCP: time | With WebMCP: time | Without WebMCP: solved | With WebMCP: solved |
|---|---|---|---|---|
| Kiln & Co (local test site): Add one Stoneware Teapot and one Speckled Bowl to my cart, then tell me the cart total. | 89.0s | 32.2s | 100% | 100% |
| Kiln & Co (local test site): I need a green gift under $30 that I can buy right now. What do you have? | 80.1s | 26.4s | 100% | 100% |
| Kiln & Co (local test site): Put the most expensive teapot you sell in my cart. | 49.0s | 49.8s | 100% | 100% |
| Kiln & Co (local test site): Add two of the cheapest blue mug to my cart. | 64.5s | 43.1s | 100% | 100% |
| Question | Without WebMCP: steps | With WebMCP: steps | Without WebMCP: solved | With WebMCP: solved |
|---|---|---|---|---|
| Kiln & Co (local test site): Add one Stoneware Teapot and one Speckled Bowl to my cart, then tell me the cart total. | 6.0 | 3.0 | 100% | 100% |
| Kiln & Co (local test site): I need a green gift under $30 that I can buy right now. What do you have? | 3.3 | 2.0 | 100% | 100% |
| Kiln & Co (local test site): Put the most expensive teapot you sell in my cart. | 4.0 | 3.0 | 100% | 100% |
| Kiln & Co (local test site): Add two of the cheapest blue mug to my cart. | 4.0 | 3.0 | 100% | 100% |
| Question | Without WebMCP: cost | With WebMCP: cost | Without WebMCP: solved | With WebMCP: solved |
|---|---|---|---|---|
| Kiln & Co (local test site): Add one Stoneware Teapot and one Speckled Bowl to my cart, then tell me the cart total. | $0.027 | $0.0079 | 100% | 100% |
| Kiln & Co (local test site): I need a green gift under $30 that I can buy right now. What do you have? | $0.013 | $0.0037 | 100% | 100% |
| Kiln & Co (local test site): Put the most expensive teapot you sell in my cart. | $0.017 | $0.005 | 100% | 100% |
| Kiln & Co (local test site): Add two of the cheapest blue mug to my cart. | $0.018 | $0.0057 | 100% | 100% |
The 4 WebMCP tools Kiln & Co registers
as the agent saw them · 2026-11-08
| Tool | Description | Called |
|---|---|---|
search_products | Search the catalog. Every filter is optional; with none, returns every product. Prices are USD. search_products({}) search_products({"color":"green","max_price":30}) search_products({"category":"teapot","sort":"price_desc"}) search_products({"category":"mug","color":"blue","sort":"price_asc"}) | Called |
add_to_cart | Add a product to the cart by sku. Adding a sku already in the cart increases its quantity. add_to_cart({"quantity":1,"sku":"TPT-01"}) add_to_cart({"quantity":1,"sku":"BWL-01"}) add_to_cart({"quantity":1,"sku":"TPT-02"}) add_to_cart({"quantity":2,"sku":"MUG-03"}) | Called |
get_cart | Return the cart: items with quantity and the total in USD. | –Not called |
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. | –Not called |
- gemini-4-argon, reasoning medium, headless Chrome. Same prompt and step limit in both arms; 3 runs per question and arm.
- Without WebMCP: a DOM-snapshot agent that reads, clicks and fills.
- With WebMCP: only the tools the page registers (its own, or webmcpx’s on our test sites).
- Graded by facts in the answer and page state. No LLM judge.
- A local test site: its tools come from webmcpx.
- 30 questions on 6 sites, 27 of them read-only; the biggest savings come from the sites' own search tools.
- 3 runs per question and arm: 3 of 3 solved is evidence, not proof of 100%.
- Time is the agent loop after the page loaded; cost is the model's API usage at dated list prices, cache included.
- Every failed run says why in the results (bot check, answer not from the page, step limit…).
git clone https://github.com/webmcpx/webmcpx
cd webmcpx && just setup
GEMINI_API_KEY=... just bench --model gemini-4-argon --reasoning-effort mediumOrbit docs local
“My CI step failed with orbit exit code 4. What does that mean?”
2.7×
fewer tokens
3.4k → 1.3k tokens
| Question | Without WebMCP: tokens | With WebMCP: tokens | Without WebMCP: solved | With WebMCP: solved |
|---|---|---|---|---|
| Orbit docs (local test site): My CI step failed with orbit exit code 4. What does that mean? | 3.4k | 1.3k | 100% | 100% |
| Orbit docs (local test site): Which environment variable makes Orbit read its config file from a different path? | 3.4k | 1.3k | 100% | 100% |
| Orbit docs (local test site): Which rollout strategies can I pick when I run orbit deploy? | 3.4k | 1.7k | 100% | 100% |
| Question | Without WebMCP: time | With WebMCP: time | Without WebMCP: solved | With WebMCP: solved |
|---|---|---|---|---|
| Orbit docs (local test site): My CI step failed with orbit exit code 4. What does that mean? | 128.4s | 34.1s | 100% | 100% |
| Orbit docs (local test site): Which environment variable makes Orbit read its config file from a different path? | 24.7s | 20.0s | 100% | 100% |
| Orbit docs (local test site): Which rollout strategies can I pick when I run orbit deploy? | 37.7s | 37.1s | 100% | 100% |
| Question | Without WebMCP: steps | With WebMCP: steps | Without WebMCP: solved | With WebMCP: solved |
|---|---|---|---|---|
| Orbit docs (local test site): My CI step failed with orbit exit code 4. What does that mean? | 2.0 | 2.0 | 100% | 100% |
| Orbit docs (local test site): Which environment variable makes Orbit read its config file from a different path? | 2.0 | 2.0 | 100% | 100% |
| Orbit docs (local test site): Which rollout strategies can I pick when I run orbit deploy? | 2.0 | 2.3 | 100% | 100% |
| Question | Without WebMCP: cost | With WebMCP: cost | Without WebMCP: solved | With WebMCP: solved |
|---|---|---|---|---|
| Orbit docs (local test site): My CI step failed with orbit exit code 4. What does that mean? | $0.0077 | $0.0032 | 100% | 100% |
| Orbit docs (local test site): Which environment variable makes Orbit read its config file from a different path? | $0.0076 | $0.0032 | 100% | 100% |
| Orbit docs (local test site): Which rollout strategies can I pick when I run orbit deploy? | $0.0073 | $0.0043 | 100% | 100% |
The 3 WebMCP tools Orbit docs registers
as the agent saw them · 2026-11-08
| Tool | Description | Called |
|---|---|---|
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":"exit code 4"}) search_page({"query":"environment variable config file path"}) search_page({"query":"orbit deploy rollout strategies"}) search_page({"query":"--strategy"}) | Called |
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`. | –Not called |
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. | –Not called |
- gemini-4-argon, reasoning medium, headless Chrome. Same prompt and step limit in both arms; 3 runs per question and arm.
- Without WebMCP: a DOM-snapshot agent that reads, clicks and fills.
- With WebMCP: only the tools the page registers (its own, or webmcpx’s on our test sites).
- Graded by facts in the answer and page state. No LLM judge.
- A local test site: its tools come from webmcpx.
- 30 questions on 6 sites, 27 of them read-only; the biggest savings come from the sites' own search tools.
- 3 runs per question and arm: 3 of 3 solved is evidence, not proof of 100%.
- Time is the agent loop after the page loaded; cost is the model's API usage at dated list prices, cache included.
- Every failed run says why in the results (bot check, answer not from the page, step limit…).
git clone https://github.com/webmcpx/webmcpx
cd webmcpx && just setup
GEMINI_API_KEY=... just bench --model gemini-4-argon --reasoning-effort medium