Aller au contenu

Rendez votre site prêt pour les agents.

Les agents IA lisent déjà vos pages. Voyez ce qu’ils en retirent, puis donnez-leur de vrais outils en une ligne.

8 500+ sites parlent déjà WebMCP.

Cliquez sur l’un d’eux pour le scanner en direct.

Décompte : sites en ligne de l’annuaire webmcp.com (2026-11-05). Plus strict, l’index Known Good a vu 541 sites enregistrer des outils en exécutant leurs pages (2026-11-04). Logos vérifiés avec le scanner le 2026-11-07 ; ils appartiennent à leurs propriétaires, sans affiliation.

Pourquoi WebMCP ?

Un contrat pour les agents, pas une capture d’écran.

WebMCP permet à votre page de confier aux agents IA des outils typés, exécutés dans l’onglet même de l’utilisateur. Voici ce que cela change, en commençant par les preuves les plus solides.

  1. Des agents qui vont au bout

    Aujourd’hui

    Sur des sites en ligne, le meilleur agent testé a échoué sur environ 4 tâches sur 10, surtout sur les filtres, le tri et la navigation.

    Avec WebMCP

    L’agent appelle un outil avec une entrée typée au lieu de deviner quel bouton fait quoi.

    Sources Online-Mind2Web, 2025 WindTunnel (nekuda) Notre benchmark

  2. Une fraction des tokens

    Aujourd’hui

    Un seul snapshot de page peut coûter de 12 000 à 77 000 tokens, et l’agent le renvoie à chaque étape.

    Avec WebMCP

    Un appel ne renvoie que les données demandées : jusqu’à 97× moins de tokens sur Cloudflare dans notre benchmark (meilleur cas).

    Sources Coût d’un snapshot, mesuré Notre benchmark

  3. Des secondes, pas des minutes

    Aujourd’hui

    Regarder, réfléchir, cliquer, recommencer : sur des tâches difficiles en ligne, des agents ont tourné jusqu’à 44 minutes.

    Avec WebMCP

    Un appel remplace une série de clics : une médiane 3,4× plus rapide dans le benchmark de WindTunnel.

    Sources Online-Mind2Web, 2025 WindTunnel (nekuda)

  4. Ni serveur en plus, ni OAuth

    Aujourd’hui

    Ouvrir une API aux agents implique en général un back-end séparé, un état dupliqué et un flux d’authentification.

    Avec WebMCP

    Les outils sont votre code front-end, exécuté avec la session que l’utilisateur a déjà ouverte. C’est ainsi que Shopify le déploie.

    Sources Explainer WebMCP Shopify Cloudflare

  5. L’utilisateur garde la main

    Aujourd’hui

    Les agents agissent hors de la vue de l’utilisateur, ou l’envoient ailleurs.

    Avec WebMCP

    L’agent travaille sur la page que voit l’utilisateur, et les outils peuvent signaler les actions qui demandent une confirmation.

    Sources Brouillon WebMCP Paiement Shopify

  6. Même panier, même formulaire

    Aujourd’hui

    Une API back-end ne voit ni le panier, ni le formulaire, ni la sélection ouverts dans l’onglet de l’utilisateur.

    Avec WebMCP

    Les outils agissent sur l’état que voit l’utilisateur : la page se met à jour à mesure que l’agent travaille.

    Sources Shopify

  7. C’est vous qui décidez

    Aujourd’hui

    Un agent qui lit la page peut cliquer partout où l’utilisateur le peut.

    Avec WebMCP

    Vous publiez les actions, leurs entrées et votre propre validation.

    Sources Brouillon WebMCP

  8. Vite ajouté, ignoré sans risque

    Aujourd’hui

    Rendre un site prêt pour les agents a l’air d’un gros chantier.

    Avec WebMCP

    Quelques enregistrements d’outils. Les navigateurs sans WebMCP les ignorent, et un seul en-tête les désactive.

    Sources Brouillon WebMCP

WebMCP est un brouillon du Community Group du W3C (2 novembre 2026), pas un standard du W3C, en origin trial dans Chrome. Les annotations sont des indications que le site déclare, pas des garanties.

Benchmark

Même agent. Même question.

Un agent lit, clique et remplit à partir de snapshots de la page ; l’autre appelle les outils WebMCP du site. Choisissez un modèle ; les plus fortes économies d’abord.

GPT-6 Luna (OpenAI)

Cas sélectionnés, 21 sur 35 : les questions où WebMCP a utilisé au plus la moitié des tokens. Tous les résultats sont publics ; vous pouvez aussi relancer le benchmark avec just bench.

Cloudflare

“How many requests per day can my Workers handle on the Cloudflare Workers Free plan before hitting the limit?”

Ouvrir (ouvre Cloudflare)
Sans WebMCP

113k

tokens

13.1s · 10.0 étapes · $4.45 pour 1 000

Résolu 3/3

97× moins de tokens

Avec webmcpx

1.2k

tokens

3.8s · 2.0 étapes · $0.15 pour 1 000

Résolu 3/3
Tokens par question, en tokens par exécution ; plus c’est bas, mieux c’est. Taux de réussite par variante.
QuestionSans WebMCP : tokensAvec webmcpx : tokensSans WebMCP : résoluAvec webmcpx : résolu
Cloudflare : How many requests per day can my Workers handle on the Cloudflare Workers Free plan before hitting the limit?113k1.2k100%100%
Cloudflare : I'm on the Workers Paid plan. What's the maximum size a single Cloudflare D1 database can grow to?22k1.0k100%100%
Cloudflare : What is the maximum size of a single value stored in Cloudflare Workers KV?21k1.0k100%100%
Cloudflare : How long can a key be in Cloudflare Workers KV? I want to know the maximum key size.21k1.5k100%100%
Cloudflare : What is the largest message I can send to a Cloudflare Queue? I need the per-message size limit.21k2.8k100%100%
Durée par question, en secondes par exécution ; plus c’est bas, mieux c’est. Taux de réussite par variante.
QuestionSans WebMCP : duréeAvec webmcpx : duréeSans WebMCP : résoluAvec webmcpx : résolu
Cloudflare : How many requests per day can my Workers handle on the Cloudflare Workers Free plan before hitting the limit?13.1s3.8s100%100%
Cloudflare : I'm on the Workers Paid plan. What's the maximum size a single Cloudflare D1 database can grow to?6.8s4.7s100%100%
Cloudflare : What is the maximum size of a single value stored in Cloudflare Workers KV?7.0s3.5s100%100%
Cloudflare : How long can a key be in Cloudflare Workers KV? I want to know the maximum key size.6.4s4.9s100%100%
Cloudflare : What is the largest message I can send to a Cloudflare Queue? I need the per-message size limit.6.4s9.2s100%100%
Étapes par question, en tours de modèle par exécution ; plus c’est bas, mieux c’est. Taux de réussite par variante.
QuestionSans WebMCP : étapesAvec webmcpx : étapesSans WebMCP : résoluAvec webmcpx : résolu
Cloudflare : How many requests per day can my Workers handle on the Cloudflare Workers Free plan before hitting the limit?10.02.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.3100%100%
Cloudflare : What is the largest message I can send to a Cloudflare Queue? I need the per-message size limit.6.03.7100%100%
Coût par question, en USD pour 1 000 exécutions ; plus c’est bas, mieux c’est. Taux de réussite par variante.
QuestionSans WebMCP : coûtAvec webmcpx : coûtSans WebMCP : résoluAvec webmcpx : résolu
Cloudflare : How many requests per day can my Workers handle on the Cloudflare Workers Free plan before hitting the limit?$4.45$0.15100%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.12100%100%
Cloudflare : What is the maximum size of a single value stored in Cloudflare Workers KV?$0.80$0.12100%100%
Cloudflare : How long can a key be in Cloudflare Workers KV? I want to know the maximum key size.$0.81$0.20100%100%
Cloudflare : What is the largest message I can send to a Cloudflare Queue? I need the per-message size limit.$0.86$0.32100%100%

Cloudflare enregistre 2 outils WebMCP

tels que l’agent les a vus · 2026-11-07

OutilDescriptionAppelé
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})

Appelé
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.

–Non appelé
  • gpt-6-luna, raisonnement medium, Chrome headless. Même prompt et même limite d’étapes dans les deux variantes ; 3 exécutions par question et par variante.
  • Sans WebMCP : un agent qui lit, clique et remplit à partir de snapshots du DOM.
  • Avec webmcpx : uniquement les outils que la page enregistre.
  • Notation sur les faits présents dans la réponse et sur l’état de la page. Pas de LLM juge.
  • Un site en ligne : il fournit ses propres outils WebMCP.
pour reproduire
git clone https://github.com/webmcpx/webmcpx
cd webmcpx && just setup
OPENAI_API_KEY=sk-... just bench

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?”

Ouvrir (ouvre Notion)
Sans WebMCP

64k

tokens

14.0s · 10.7 étapes · $2.37 pour 1 000

Résolu 3/3

61× moins de tokens

Avec webmcpx

1.0k

tokens

3.0s · 2.0 étapes · $0.13 pour 1 000

Résolu 3/3
Tokens par question, en tokens par exécution ; plus c’est bas, mieux c’est. Taux de réussite par variante.
QuestionSans WebMCP : tokensAvec webmcpx : tokensSans WebMCP : résoluAvec webmcpx : résolu
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?64k1.0k100%100%
Notion : How many requests per minute does the Notion API allow per connection on plans other than Business and Enterprise?57k1.1k33%100%
Notion : When my Notion integration sends too many requests, what error code string does the API put in the error response body?38k1.0k100%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?37k1.1k67%100%
Durée par question, en secondes par exécution ; plus c’est bas, mieux c’est. Taux de réussite par variante.
QuestionSans WebMCP : duréeAvec webmcpx : duréeSans WebMCP : résoluAvec webmcpx : résolu
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.0s3.0s100%100%
Notion : How many requests per minute does the Notion API allow per connection on plans other than Business and Enterprise?17.3s3.1s33%100%
Notion : When my Notion integration sends too many requests, what error code string does the API put in the error response body?12.2s2.6s100%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.1s3.0s67%100%
Étapes par question, en tours de modèle par exécution ; plus c’est bas, mieux c’est. Taux de réussite par variante.
QuestionSans WebMCP : étapesAvec webmcpx : étapesSans WebMCP : résoluAvec webmcpx : résolu
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.72.0100%100%
Notion : How many requests per minute does the Notion API allow per connection on plans other than Business and Enterprise?11.72.033%100%
Notion : When my Notion integration sends too many requests, what error code string does the API put in the error response body?9.32.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?9.32.067%100%
Coût par question, en USD pour 1 000 exécutions ; plus c’est bas, mieux c’est. Taux de réussite par variante.
QuestionSans WebMCP : coûtAvec webmcpx : coûtSans WebMCP : résoluAvec webmcpx : résolu
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.13100%100%
Notion : How many requests per minute does the Notion API allow per connection on plans other than Business and Enterprise?$1.79$0.1333%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.12100%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.1367%100%

Notion enregistre 5 outils WebMCP

tels que l’agent les a vus · 2026-11-07

OutilDescriptionAppelé
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"})

Appelé
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.

–Non appelé
navigate_page

Navigate the current browser tab to a Notion Docs documentation page.

–Non appelé
read_page

Read the full content of a Notion Docs documentation page as markdown.

–Non appelé
read_skill

Read a Notion Docs agent skill document by name.

–Non appelé
  • gpt-6-luna, raisonnement medium, Chrome headless. Même prompt et même limite d’étapes dans les deux variantes ; 3 exécutions par question et par variante.
  • Sans WebMCP : un agent qui lit, clique et remplit à partir de snapshots du DOM.
  • Avec webmcpx : uniquement les outils que la page enregistre.
  • Notation sur les faits présents dans la réponse et sur l’état de la page. Pas de LLM juge.
  • Un site en ligne : il fournit ses propres outils WebMCP.
pour reproduire
git clone https://github.com/webmcpx/webmcpx
cd webmcpx && just setup
OPENAI_API_KEY=sk-... just bench

specification.website

“How long should a page's meta description be, according to this spec?”

Ouvrir (ouvre specification.website)
Sans WebMCP

43k

tokens

13.2s · 11.3 étapes · $1.39 pour 1 000

Résolu 3/3

11× moins de tokens

Avec webmcpx

4.0k

tokens

3.5s · 3.0 étapes · $0.39 pour 1 000

Résolu 3/3
Tokens par question, en tokens par exécution ; plus c’est bas, mieux c’est. Taux de réussite par variante.
QuestionSans WebMCP : tokensAvec webmcpx : tokensSans WebMCP : résoluAvec webmcpx : résolu
specification.website : How long should a page's meta description be, according to this spec?43k4.0k100%100%
specification.website : What's the minimum tap target size this spec requires for buttons and other interactive controls?41k4.4k67%100%
specification.website : What max-age should I put in my HSTS header for production, per this spec?18k3.7k100%100%
specification.website : What INP value does this spec set as the target for good responsiveness?13k3.3k100%100%
specification.website : What minimum contrast ratio does this site's spec require for normal-size body text?13k3.9k100%100%
Durée par question, en secondes par exécution ; plus c’est bas, mieux c’est. Taux de réussite par variante.
QuestionSans WebMCP : duréeAvec webmcpx : duréeSans WebMCP : résoluAvec webmcpx : résolu
specification.website : How long should a page's meta description be, according to this spec?13.2s3.5s100%100%
specification.website : What's the minimum tap target size this spec requires for buttons and other interactive controls?13.1s3.5s67%100%
specification.website : What max-age should I put in my HSTS header for production, per this spec?8.0s3.9s100%100%
specification.website : What INP value does this spec set as the target for good responsiveness?7.2s3.0s100%100%
specification.website : What minimum contrast ratio does this site's spec require for normal-size body text?5.9s3.7s100%100%
Étapes par question, en tours de modèle par exécution ; plus c’est bas, mieux c’est. Taux de réussite par variante.
QuestionSans WebMCP : étapesAvec webmcpx : étapesSans WebMCP : résoluAvec webmcpx : résolu
specification.website : How long should a page's meta description be, according to this spec?11.33.0100%100%
specification.website : What's the minimum tap target size this spec requires for buttons and other interactive controls?10.33.067%100%
specification.website : What max-age should I put in my HSTS header for production, per this spec?6.73.0100%100%
specification.website : What INP value does this spec set as the target for good responsiveness?6.02.7100%100%
specification.website : What minimum contrast ratio does this site's spec require for normal-size body text?6.03.0100%100%
Coût par question, en USD pour 1 000 exécutions ; plus c’est bas, mieux c’est. Taux de réussite par variante.
QuestionSans WebMCP : coûtAvec webmcpx : coûtSans WebMCP : résoluAvec webmcpx : résolu
specification.website : How long should a page's meta description be, according to this spec?$1.39$0.39100%100%
specification.website : What's the minimum tap target size this spec requires for buttons and other interactive controls?$1.34$0.3567%100%
specification.website : What max-age should I put in my HSTS header for production, per this spec?$0.76$0.31100%100%
specification.website : What INP value does this spec set as the target for good responsiveness?$0.59$0.29100%100%
specification.website : What minimum contrast ratio does this site's spec require for normal-size body text?$0.59$0.30100%100%

specification.website enregistre 5 outils WebMCP

tels que l’agent les a vus · 2026-11-07

OutilDescriptionAppelé
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"})

Appelé
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"})

Appelé
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.

–Non appelé
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.

–Non appelé
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.

–Non appelé
  • gpt-6-luna, raisonnement medium, Chrome headless. Même prompt et même limite d’étapes dans les deux variantes ; 3 exécutions par question et par variante.
  • Sans WebMCP : un agent qui lit, clique et remplit à partir de snapshots du DOM.
  • Avec webmcpx : uniquement les outils que la page enregistre.
  • Notation sur les faits présents dans la réponse et sur l’état de la page. Pas de LLM juge.
  • Un site en ligne : il fournit ses propres outils WebMCP.
pour reproduire
git clone https://github.com/webmcpx/webmcpx
cd webmcpx && just setup
OPENAI_API_KEY=sk-... just bench

Kiln & Co

“Add one Stoneware Teapot and one Speckled Bowl to my cart, then tell me the cart total.”

Sans WebMCP

12k

tokens

7.7s · 6.0 étapes · $0.45 pour 1 000

Résolu 3/3

6.0× moins de tokens

Avec webmcpx

2.1k

tokens

3.9s · 3.7 étapes · $0.26 pour 1 000

Résolu 3/3
Tokens par question, en tokens par exécution ; plus c’est bas, mieux c’est. Taux de réussite par variante.
QuestionSans WebMCP : tokensAvec webmcpx : tokensSans WebMCP : résoluAvec webmcpx : résolu
Kiln & Co (site de test local) : Add one Stoneware Teapot and one Speckled Bowl to my cart, then tell me the cart total.12k2.1k100%100%
Kiln & Co (site de test local) : I need a green gift under $30 that I can buy right now. What do you have?5.7k1.1k100%100%
Kiln & Co (site de test local) : Add two of the cheapest blue mug to my cart.5.4k1.6k100%100%
Kiln & Co (site de test local) : Put the most expensive teapot you sell in my cart.4.8k1.5k100%100%
Durée par question, en secondes par exécution ; plus c’est bas, mieux c’est. Taux de réussite par variante.
QuestionSans WebMCP : duréeAvec webmcpx : duréeSans WebMCP : résoluAvec webmcpx : résolu
Kiln & Co (site de test local) : Add one Stoneware Teapot and one Speckled Bowl to my cart, then tell me the cart total.7.7s3.9s100%100%
Kiln & Co (site de test local) : I need a green gift under $30 that I can buy right now. What do you have?6.6s3.3s100%100%
Kiln & Co (site de test local) : Add two of the cheapest blue mug to my cart.5.1s3.1s100%100%
Kiln & Co (site de test local) : Put the most expensive teapot you sell in my cart.3.9s3.2s100%100%
Étapes par question, en tours de modèle par exécution ; plus c’est bas, mieux c’est. Taux de réussite par variante.
QuestionSans WebMCP : étapesAvec webmcpx : étapesSans WebMCP : résoluAvec webmcpx : résolu
Kiln & Co (site de test local) : Add one Stoneware Teapot and one Speckled Bowl to my cart, then tell me the cart total.6.03.7100%100%
Kiln & Co (site de test local) : I need a green gift under $30 that I can buy right now. What do you have?4.02.0100%100%
Kiln & Co (site de test local) : Add two of the cheapest blue mug to my cart.4.33.0100%100%
Kiln & Co (site de test local) : Put the most expensive teapot you sell in my cart.3.73.0100%100%
Coût par question, en USD pour 1 000 exécutions ; plus c’est bas, mieux c’est. Taux de réussite par variante.
QuestionSans WebMCP : coûtAvec webmcpx : coûtSans WebMCP : résoluAvec webmcpx : résolu
Kiln & Co (site de test local) : Add one Stoneware Teapot and one Speckled Bowl to my cart, then tell me the cart total.$0.45$0.26100%100%
Kiln & Co (site de test local) : I need a green gift under $30 that I can buy right now. What do you have?$0.39$0.19100%100%
Kiln & Co (site de test local) : Add two of the cheapest blue mug to my cart.$0.23$0.20100%100%
Kiln & Co (site de test local) : Put the most expensive teapot you sell in my cart.$0.25$0.17100%100%

Kiln & Co enregistre 4 outils WebMCP

tels que l’agent les a vus · 2026-11-07

OutilDescriptionAppelé
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"})

Appelé
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})

Appelé
get_cart

Return the cart: items with quantity and the total in USD.

–Non appelé
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.

–Non appelé
  • gpt-6-luna, raisonnement medium, Chrome headless. Même prompt et même limite d’étapes dans les deux variantes ; 3 exécutions par question et par variante.
  • Sans WebMCP : un agent qui lit, clique et remplit à partir de snapshots du DOM.
  • Avec webmcpx : uniquement les outils que la page enregistre.
  • Notation sur les faits présents dans la réponse et sur l’état de la page. Pas de LLM juge.
  • Un site de test local : ses outils viennent de webmcpx.
pour reproduire
git clone https://github.com/webmcpx/webmcpx
cd webmcpx && just setup
OPENAI_API_KEY=sk-... just bench

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?”

Ouvrir (ouvre Allbirds)
Sans WebMCP

27k

tokens

17.3s · 9.3 étapes · $1.13 pour 1 000

Résolu 2/3

4.4× moins de tokens

Avec webmcpx

6.0k

tokens

5.3s · 2.0 étapes · $0.26 pour 1 000

Résolu 3/3
Tokens par question, en tokens par exécution ; plus c’est bas, mieux c’est. Taux de réussite par variante.
QuestionSans WebMCP : tokensAvec webmcpx : tokensSans WebMCP : résoluAvec webmcpx : résolu
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?27k6.0k67%100%
Durée par question, en secondes par exécution ; plus c’est bas, mieux c’est. Taux de réussite par variante.
QuestionSans WebMCP : duréeAvec webmcpx : duréeSans WebMCP : résoluAvec webmcpx : résolu
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.3s5.3s67%100%
Étapes par question, en tours de modèle par exécution ; plus c’est bas, mieux c’est. Taux de réussite par variante.
QuestionSans WebMCP : étapesAvec webmcpx : étapesSans WebMCP : résoluAvec webmcpx : résolu
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.32.067%100%
Coût par question, en USD pour 1 000 exécutions ; plus c’est bas, mieux c’est. Taux de réussite par variante.
QuestionSans WebMCP : coûtAvec webmcpx : coûtSans WebMCP : résoluAvec webmcpx : résolu
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.2667%100%

Allbirds enregistre 12 outils WebMCP

tels que l’agent les a vus · 2026-11-07

OutilDescriptionAppelé
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"}}})

Appelé
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.

–Non appelé
cancel_cart

Remove all items from the cart in one step. Use when the user wants to empty their cart or start over.

–Non appelé
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.

–Non appelé
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.

–Non appelé
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.

–Non appelé
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.

–Non appelé
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.

–Non appelé
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.

–Non appelé
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.

–Non appelé
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.

–Non appelé
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.

–Non appelé
  • gpt-6-luna, raisonnement medium, Chrome headless. Même prompt et même limite d’étapes dans les deux variantes ; 3 exécutions par question et par variante.
  • Sans WebMCP : un agent qui lit, clique et remplit à partir de snapshots du DOM.
  • Avec webmcpx : uniquement les outils que la page enregistre.
  • Notation sur les faits présents dans la réponse et sur l’état de la page. Pas de LLM juge.
  • Un site en ligne : il fournit ses propres outils WebMCP.
pour reproduire
git clone https://github.com/webmcpx/webmcpx
cd webmcpx && just setup
OPENAI_API_KEY=sk-... just bench

Orbit docs

“Which environment variable makes Orbit read its config file from a different path?”

Sans WebMCP

2.5k

tokens

3.4s · 2.0 étapes · $0.15 pour 1 000

Résolu 3/3

2.5× moins de tokens

Avec webmcpx

989

tokens

3.4s · 2.0 étapes · $0.12 pour 1 000

Résolu 3/3
Tokens par question, en tokens par exécution ; plus c’est bas, mieux c’est. Taux de réussite par variante.
QuestionSans WebMCP : tokensAvec webmcpx : tokensSans WebMCP : résoluAvec webmcpx : résolu
Orbit docs (site de test local) : Which environment variable makes Orbit read its config file from a different path?2.5k989100%100%
Orbit docs (site de test local) : By default, how many past releases does Orbit keep for rollback?2.5k992100%100%
Durée par question, en secondes par exécution ; plus c’est bas, mieux c’est. Taux de réussite par variante.
QuestionSans WebMCP : duréeAvec webmcpx : duréeSans WebMCP : résoluAvec webmcpx : résolu
Orbit docs (site de test local) : Which environment variable makes Orbit read its config file from a different path?3.4s3.4s100%100%
Orbit docs (site de test local) : By default, how many past releases does Orbit keep for rollback?2.1s2.1s100%100%
Étapes par question, en tours de modèle par exécution ; plus c’est bas, mieux c’est. Taux de réussite par variante.
QuestionSans WebMCP : étapesAvec webmcpx : étapesSans WebMCP : résoluAvec webmcpx : résolu
Orbit docs (site de test local) : Which environment variable makes Orbit read its config file from a different path?2.02.0100%100%
Orbit docs (site de test local) : By default, how many past releases does Orbit keep for rollback?2.02.0100%100%
Coût par question, en USD pour 1 000 exécutions ; plus c’est bas, mieux c’est. Taux de réussite par variante.
QuestionSans WebMCP : coûtAvec webmcpx : coûtSans WebMCP : résoluAvec webmcpx : résolu
Orbit docs (site de test local) : Which environment variable makes Orbit read its config file from a different path?$0.15$0.12100%100%
Orbit docs (site de test local) : By default, how many past releases does Orbit keep for rollback?$0.15$0.12100%100%

Orbit docs enregistre 3 outils WebMCP

tels que l’agent les a vus · 2026-11-07

OutilDescriptionAppelé
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})

Appelé
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`.

–Non appelé
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.

–Non appelé
  • gpt-6-luna, raisonnement medium, Chrome headless. Même prompt et même limite d’étapes dans les deux variantes ; 3 exécutions par question et par variante.
  • Sans WebMCP : un agent qui lit, clique et remplit à partir de snapshots du DOM.
  • Avec webmcpx : uniquement les outils que la page enregistre.
  • Notation sur les faits présents dans la réponse et sur l’état de la page. Pas de LLM juge.
  • Un site de test local : ses outils viennent de webmcpx.
pour reproduire
git clone https://github.com/webmcpx/webmcpx
cd webmcpx && just setup
OPENAI_API_KEY=sk-... just bench

WebMCP vs MCP

Même idée d’outils. Pas au même endroit.

WebMCP reprend le modèle d’outils de MCP, mais c’est une API du navigateur, pas le protocole MCP. Les deux se complètent.

WebMCP comparé à MCP
CritèreWebMCPMCP
Où tournent les outils Dans le JavaScript de votre page, dans l’onglet de l’utilisateur. Dans un processus serveur, local (stdio) ou distant.
Mode d’appel Une API du navigateur, document.modelContext ; le navigateur sert d’intermédiaire à chaque appel. Pas de JSON-RPC. JSON-RPC 2.0 sur stdio ou Streamable HTTP.
Ce que vous exploitez Votre front-end existant. Aucun nouveau serveur. Un serveur MCP que vous hébergez et exploitez.
Authentification La session avec laquelle l’utilisateur est déjà connecté. Aucun token à émettre. Autorisation basée sur OAuth pour les serveurs distants.
Découverte Dès que la page est ouverte. Rien à trouver avant la visite. tools/list sur un endpoint connu, et des registres publics.
Durée de vie Tant que la page est ouverte. Toujours actif, sans navigateur.
L’utilisateur Présent, sur la même page que l’agent. Facultatif : fonctionne en headless.
Périmètre Uniquement des outils, avec schémas d’entrée et de sortie. Outils, ressources et prompts, plus l’élicitation et les extensions.
Annotations des outils readOnlyHint, consequentialHint, untrustedContentHint. Même origine par défaut. readOnlyHint, destructiveHint, idempotentHint, openWorldHint.
Statut Brouillon du Community Group du W3C ; en origin trial dans Chrome. Un projet de la Linux Foundation, plus de 10 000 serveurs publics.

Combinez-les

MCP sert les agents qui n’ouvrent jamais votre site. WebMCP sert les agents qui travaillent dans l’onglet, aux côtés de votre utilisateur. Faites tourner les deux sur un même back-end : Shopify le fait déjà.

Sources Brouillon WebMCP Explainer WebMCP Spécification MCP Shopify sur les deux

Une ligne. Prêt pour les agents.

Collez-la avant </body>. Là où WebMCP est absent, elle ne fait rien.

index.html
<script type="module" src="https://cdn.jsdelivr.net/npm/[email protected]/src/auto.js"></script>

ou npm i webmcpx pour npmou npx skills add webmcpx/webmcpx pour votre agent de code

  • search_page trouve le passage
  • fetch_as_markdown lit la page, paginée
  • get_page_context sait où il se trouve

~2,7 Ko chargés · Rust + WebAssembly · licence MIT

Issues de la spec

Ce que la communauté demandait. Livré.