Skip to content

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

Tokens per question, tokens per run; lower is better. Success rate per arm.
QuestionWithout WebMCP: tokensWith WebMCP: tokensWithout WebMCP: solvedWith WebMCP: solved
Cloudflare: How many requests per day can my Workers handle on the Cloudflare Workers Free plan before hitting the limit?62k1.5k100%100%
Cloudflare: I'm on the Workers Paid plan. What's the maximum size a single Cloudflare D1 database can grow to?44k1.4k100%100%
Cloudflare: What is the maximum size of a single value stored in Cloudflare Workers KV?41k1.4k100%100%
Cloudflare: How long can a key be in Cloudflare Workers KV? I want to know the maximum key size.41k1.5k100%100%
Cloudflare: What is the largest message I can send to a Cloudflare Queue? I need the per-message size limit.42k15k100%100%
Time per question, seconds per run; lower is better. Success rate per arm.
QuestionWithout WebMCP: timeWith WebMCP: timeWithout WebMCP: solvedWith WebMCP: solved
Cloudflare: How many requests per day can my Workers handle on the Cloudflare Workers Free plan before hitting the limit?121.6s40.8s100%100%
Cloudflare: I'm on the Workers Paid plan. What's the maximum size a single Cloudflare D1 database can grow to?71.4s38.4s100%100%
Cloudflare: What is the maximum size of a single value stored in Cloudflare Workers KV?99.0s19.6s100%100%
Cloudflare: How long can a key be in Cloudflare Workers KV? I want to know the maximum key size.55.3s32.1s100%100%
Cloudflare: What is the largest message I can send to a Cloudflare Queue? I need the per-message size limit.550.5s120.6s100%100%
Steps per question, model turns per run; lower is better. Success rate per arm.
QuestionWithout WebMCP: stepsWith WebMCP: stepsWithout WebMCP: solvedWith WebMCP: solved
Cloudflare: How many requests per day can my Workers handle on the Cloudflare Workers Free plan before hitting the limit?5.32.0100%100%
Cloudflare: I'm on the Workers Paid plan. What's the maximum size a single Cloudflare D1 database can grow to?6.02.0100%100%
Cloudflare: What is the maximum size of a single value stored in Cloudflare Workers KV?6.02.0100%100%
Cloudflare: How long can a key be in Cloudflare Workers KV? I want to know the maximum key size.6.02.0100%100%
Cloudflare: What is the largest message I can send to a Cloudflare Queue? I need the per-message size limit.6.06.7100%100%
Cost per question, USD per task; lower is better. Success rate per arm.
QuestionWithout WebMCP: costWith WebMCP: costWithout WebMCP: solvedWith 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.0037100%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.0037100%100%
Cloudflare: What is the maximum size of a single value stored in Cloudflare Workers KV?$0.036$0.0035100%100%
Cloudflare: How long can a key be in Cloudflare Workers KV? I want to know the maximum key size.$0.042$0.0036100%100%
Cloudflare: What is the largest message I can send to a Cloudflare Queue? I need the per-message size limit.$0.043$0.028100%100%

The 2 WebMCP tools Cloudflare registers

as the agent saw them · 2026-11-08

ToolDescriptionCalled
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…).
reproduce it
git clone https://github.com/webmcpx/webmcpx
cd webmcpx && just setup
GEMINI_API_KEY=... just bench --model gemini-4-argon --reasoning-effort medium

Notion

“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

Tokens per question, tokens per run; lower is better. Success rate per arm.
QuestionWithout WebMCP: tokensWith WebMCP: tokensWithout WebMCP: solvedWith WebMCP: solved
Notion: How many requests per minute does the Notion API allow per connection on plans other than Business and Enterprise?24k1.4k100%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?22k3.5k100%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?24k6.1k100%100%
Notion: When my Notion integration sends too many requests, what error code string does the API put in the error response body?24k7.2k100%100%
Time per question, seconds per run; lower is better. Success rate per arm.
QuestionWithout WebMCP: timeWith WebMCP: timeWithout WebMCP: solvedWith WebMCP: solved
Notion: How many requests per minute does the Notion API allow per connection on plans other than Business and Enterprise?158.7s28.7s100%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.0s51.5s100%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.7s62.8s100%100%
Notion: When my Notion integration sends too many requests, what error code string does the API put in the error response body?163.8s72.4s100%100%
Steps per question, model turns per run; lower is better. Success rate per arm.
QuestionWithout WebMCP: stepsWith WebMCP: stepsWithout WebMCP: solvedWith WebMCP: solved
Notion: How many requests per minute does the Notion API allow per connection on plans other than Business and Enterprise?6.02.0100%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.03.0100%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.03.0100%100%
Notion: When my Notion integration sends too many requests, what error code string does the API put in the error response body?6.03.7100%100%
Cost per question, USD per task; lower is better. Success rate per arm.
QuestionWithout WebMCP: costWith WebMCP: costWithout WebMCP: solvedWith 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.0034100%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.0081100%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.014100%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.017100%100%

The 5 WebMCP tools Notion registers

as the agent saw them · 2026-11-08

ToolDescriptionCalled
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…).
reproduce it
git clone https://github.com/webmcpx/webmcpx
cd webmcpx && just setup
GEMINI_API_KEY=... just bench --model gemini-4-argon --reasoning-effort medium

specification.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

Tokens per question, tokens per run; lower is better. Success rate per arm.
QuestionWithout WebMCP: tokensWith WebMCP: tokensWithout WebMCP: solvedWith WebMCP: solved
specification.website: How long should a page's meta description be, according to this spec?30k4.9k100%100%
specification.website: What max-age should I put in my HSTS header for production, per this spec?22k4.5k100%100%
specification.website: What INP value does this spec set as the target for good responsiveness?23k4.7k100%100%
specification.website: What minimum contrast ratio does this site's spec require for normal-size body text?23k4.7k100%100%
specification.website: What's the minimum tap target size this spec requires for buttons and other interactive controls?24k5.6k100%100%
Time per question, seconds per run; lower is better. Success rate per arm.
QuestionWithout WebMCP: timeWith WebMCP: timeWithout WebMCP: solvedWith WebMCP: solved
specification.website: How long should a page's meta description be, according to this spec?126.7s70.5s100%100%
specification.website: What max-age should I put in my HSTS header for production, per this spec?140.6s50.5s100%100%
specification.website: What INP value does this spec set as the target for good responsiveness?105.5s56.0s100%100%
specification.website: What minimum contrast ratio does this site's spec require for normal-size body text?79.6s45.5s100%100%
specification.website: What's the minimum tap target size this spec requires for buttons and other interactive controls?195.8s52.4s100%100%
Steps per question, model turns per run; lower is better. Success rate per arm.
QuestionWithout WebMCP: stepsWith WebMCP: stepsWithout WebMCP: solvedWith WebMCP: solved
specification.website: How long should a page's meta description be, according to this spec?6.03.0100%100%
specification.website: What max-age should I put in my HSTS header for production, per this spec?6.03.0100%100%
specification.website: What INP value does this spec set as the target for good responsiveness?6.03.0100%100%
specification.website: What minimum contrast ratio does this site's spec require for normal-size body text?6.03.0100%100%
specification.website: What's the minimum tap target size this spec requires for buttons and other interactive controls?6.03.0100%100%
Cost per question, USD per task; lower is better. Success rate per arm.
QuestionWithout WebMCP: costWith WebMCP: costWithout WebMCP: solvedWith WebMCP: solved
specification.website: How long should a page's meta description be, according to this spec?$0.033$0.011100%100%
specification.website: What max-age should I put in my HSTS header for production, per this spec?$0.028$0.011100%100%
specification.website: What INP value does this spec set as the target for good responsiveness?$0.027$0.01100%100%
specification.website: What minimum contrast ratio does this site's spec require for normal-size body text?$0.03$0.01100%100%
specification.website: What's the minimum tap target size this spec requires for buttons and other interactive controls?$0.029$0.014100%100%

The 5 WebMCP tools specification.website registers

as the agent saw them · 2026-11-08

ToolDescriptionCalled
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…).
reproduce it
git clone https://github.com/webmcpx/webmcpx
cd webmcpx && just setup
GEMINI_API_KEY=... just bench --model gemini-4-argon --reasoning-effort medium

Kiln & 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

Tokens per question, tokens per run; lower is better. Success rate per arm.
QuestionWithout WebMCP: tokensWith WebMCP: tokensWithout WebMCP: solvedWith WebMCP: solved
Kiln & Co (local test site): Add one Stoneware Teapot and one Speckled Bowl to my cart, then tell me the cart total.16k3.4k100%100%
Kiln & Co (local test site): I need a green gift under $30 that I can buy right now. What do you have?5.5k1.3k100%100%
Kiln & Co (local test site): Put the most expensive teapot you sell in my cart.7.6k2.1k100%100%
Kiln & Co (local test site): Add two of the cheapest blue mug to my cart.7.9k2.2k100%100%
Time per question, seconds per run; lower is better. Success rate per arm.
QuestionWithout WebMCP: timeWith WebMCP: timeWithout WebMCP: solvedWith 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.0s32.2s100%100%
Kiln & Co (local test site): I need a green gift under $30 that I can buy right now. What do you have?80.1s26.4s100%100%
Kiln & Co (local test site): Put the most expensive teapot you sell in my cart.49.0s49.8s100%100%
Kiln & Co (local test site): Add two of the cheapest blue mug to my cart.64.5s43.1s100%100%
Steps per question, model turns per run; lower is better. Success rate per arm.
QuestionWithout WebMCP: stepsWith WebMCP: stepsWithout WebMCP: solvedWith 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.03.0100%100%
Kiln & Co (local test site): I need a green gift under $30 that I can buy right now. What do you have?3.32.0100%100%
Kiln & Co (local test site): Put the most expensive teapot you sell in my cart.4.03.0100%100%
Kiln & Co (local test site): Add two of the cheapest blue mug to my cart.4.03.0100%100%
Cost per question, USD per task; lower is better. Success rate per arm.
QuestionWithout WebMCP: costWith WebMCP: costWithout WebMCP: solvedWith 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.0079100%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.0037100%100%
Kiln & Co (local test site): Put the most expensive teapot you sell in my cart.$0.017$0.005100%100%
Kiln & Co (local test site): Add two of the cheapest blue mug to my cart.$0.018$0.0057100%100%

The 4 WebMCP tools Kiln & Co registers

as the agent saw them · 2026-11-08

ToolDescriptionCalled
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…).
reproduce it
git clone https://github.com/webmcpx/webmcpx
cd webmcpx && just setup
GEMINI_API_KEY=... just bench --model gemini-4-argon --reasoning-effort medium

Orbit docs local

“My CI step failed with orbit exit code 4. What does that mean?”

2.7×

fewer tokens

3.4k → 1.3k tokens

Tokens per question, tokens per run; lower is better. Success rate per arm.
QuestionWithout WebMCP: tokensWith WebMCP: tokensWithout WebMCP: solvedWith WebMCP: solved
Orbit docs (local test site): My CI step failed with orbit exit code 4. What does that mean?3.4k1.3k100%100%
Orbit docs (local test site): Which environment variable makes Orbit read its config file from a different path?3.4k1.3k100%100%
Orbit docs (local test site): Which rollout strategies can I pick when I run orbit deploy?3.4k1.7k100%100%
Time per question, seconds per run; lower is better. Success rate per arm.
QuestionWithout WebMCP: timeWith WebMCP: timeWithout WebMCP: solvedWith WebMCP: solved
Orbit docs (local test site): My CI step failed with orbit exit code 4. What does that mean?128.4s34.1s100%100%
Orbit docs (local test site): Which environment variable makes Orbit read its config file from a different path?24.7s20.0s100%100%
Orbit docs (local test site): Which rollout strategies can I pick when I run orbit deploy?37.7s37.1s100%100%
Steps per question, model turns per run; lower is better. Success rate per arm.
QuestionWithout WebMCP: stepsWith WebMCP: stepsWithout WebMCP: solvedWith WebMCP: solved
Orbit docs (local test site): My CI step failed with orbit exit code 4. What does that mean?2.02.0100%100%
Orbit docs (local test site): Which environment variable makes Orbit read its config file from a different path?2.02.0100%100%
Orbit docs (local test site): Which rollout strategies can I pick when I run orbit deploy?2.02.3100%100%
Cost per question, USD per task; lower is better. Success rate per arm.
QuestionWithout WebMCP: costWith WebMCP: costWithout WebMCP: solvedWith WebMCP: solved
Orbit docs (local test site): My CI step failed with orbit exit code 4. What does that mean?$0.0077$0.0032100%100%
Orbit docs (local test site): Which environment variable makes Orbit read its config file from a different path?$0.0076$0.0032100%100%
Orbit docs (local test site): Which rollout strategies can I pick when I run orbit deploy?$0.0073$0.0043100%100%

The 3 WebMCP tools Orbit docs registers

as the agent saw them · 2026-11-08

ToolDescriptionCalled
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…).
reproduce it
git clone https://github.com/webmcpx/webmcpx
cd webmcpx && just setup
GEMINI_API_KEY=... just bench --model gemini-4-argon --reasoning-effort medium