Le guide complet · Par un site qui l’utilise
WebMCP, c’est quoi ? Le guide d’un site qui l’utilise
WebMCP est un projet de standard web qui permet à une page de confier à l’agent IA de votre navigateur une courte liste d’outils : des fonctions nommées, décrites, aux paramètres typés. L’agent les appelle dans votre session, connecté comme vous, au lieu de lire des captures d’écran et de deviner où cliquer.
Il est rédigé au W3C par des ingénieurs de Google et de Microsoft, tourne en phase d’essai dans Chrome et Edge, et Safari s’y oppose. Ce site expose 25 outils WebMCP. Voici tout ce que nous avons appris, et ce qu’en disent ceux qui construisent le standard.
25 min de lecture
Ouvrez cette page dans un navigateur compatible WebMCP pour que votre agent puisse la lire.
1registerTool(find_seo_agencies)La page déclare ce qu’elle sait faire.2getTools()L’agent lit noms, descriptions, schémas.3executeTool({ city: "Lyon" })Il demande une action, avec des arguments typés.4execute()La page exécute son propre code, dans la session.5"[{ name: … }]"Des données reviennent. Ni capture, ni devinette.Un vrai outil de notre classement des agences SEO.
- Premières propositions
- 2025
- Des pages Chrome qui déclarent un outil
- 0,8 %
- Moteurs de navigateur engagés
- 1 sur 3
- Agent qui l’utilise : ChatGPT
- 1
- Outils sur ce site
- 25
Le problème
Les agents lisent le web par le trou de la serrure.
Les agents IA utilisent déjà les sites web. ChatGPT, Claude, Gemini ou Copilot savent ouvrir une page, la lire et agir dessus. Mais ils le font comme une personne, sans les yeux : une capture d’écran ou la lecture du code de la page, une décision sur l’endroit où cliquer, un clic, une attente, puis un nouveau regard. À chaque étape, toute l’image repasse par le modèle.
Cette boucle est lente, coûteuse et fragile. Pour un modèle, une page moderne est un empilement de div dont le sens tient aux pixels et aux feuilles de style. Le développeur Maximiliano Firtman a résumé cette fragilité d’une question, dans le podcast AI Native Dev : que se passe-t-il si le JavaScript déplace le bouton pendant que le modèle réfléchit encore ?
Le site, lui, n’a pas voix au chapitre. Il ne peut pas indiquer à l’agent le bon chemin, l’étape risquée, ni le vrai sens d’un champ. À dotAI 2026, Patrick Brosset (Microsoft Edge) l’a dit simplement : les agents actuels fonctionnent malgré les sites, pas avec eux.
WebMCP inverse la relation. Plutôt que de laisser l’agent rétro-concevoir l’interface, le site annonce ce qu’on peut y faire (chercher un vol, ajouter au panier, remplir ce template) sous forme de fonctions aux paramètres typés. L’agent les appelle, et la page les exécute avec son propre code.
“Que se passe-t-il si, pendant ces cinq à dix secondes, le JavaScript déplace ce bouton ?”
Sans WebMCP
- Capturer la page ou lire son code
- Deviner le prochain clic
- Cliquer, attendre la page
- Capturer à nouveau
- Recommencer à chaque étape
Chaque étape repasse par le modèle.
Avec WebMCP
- Lire les outils de la page
- En appeler un avec des arguments typés
- Recevoir des données
La page fait le travail, dans la session de l’utilisateur.
Fonctionnement
Trois acteurs, un appel d’outil.
WebMCP met en jeu trois parties. La page déclare des outils. Le navigateur tient la liste et transmet les appels dans les deux sens. L’agent, intégré au navigateur, installé en extension ou logé dans le navigateur d’une application de bureau, lit la liste et décide quoi appeler. Aucun serveur au milieu : comme l’a dit un ingénieur à BlinkOn 21, le navigateur joue le rôle d’un serveur MCP, sans qu’aucun serveur n’existe.
La page
Déclare ses outils depuis son propre JavaScript et les exécute quand on les appelle : mêmes fonctions que ses boutons, mêmes cookies, mêmes droits.
Le navigateur
Garde les outils de chaque onglet, les présente à l’agent, achemine les appels vers la page et garde l’humain dans la boucle.
L’agent
Lit les noms, descriptions et schémas, choisit un outil, envoie les arguments et lit le texte qui revient.
Il agit en tant qu’utilisateur
Les outils s’exécutent dans l’onglet ouvert, avec la session que la personne a déjà. Ni clé d’API, ni OAuth, ni nouvel identifiant : l’onglet fermé, l’accès disparaît avec lui.
Il vit et meurt avec la page
Les outils n’existent que tant que la page qui les a déclarés est ouverte. On change de page, ils disparaissent ; la suivante déclare les siens. Kasper Kulikowski (Chrome) les dit liés à l’onglet et éphémères.
Il garde l’humain dans la boucle
La cible, c’est la navigation à deux : la personne voit la page changer pendant que l’agent travaille et garde les étapes qui engagent. Un outil de formulaire remplit les champs ; par défaut, c’est l’humain qui valide.
Il ne montre que ce que l’utilisateur peut faire
Les outils sont déclarés par le code de la page, pour la personne qui la regarde. L’agent d’un visiteur déconnecté ne voit jamais « payer », parce que la page ne le déclare pas.
Il se dégrade sans casser
Pas d’outil pour la tâche ? L’agent revient à l’interface, comme avant. WebMCP est un chemin plus rapide et plus sûr pour les agents, pas une barrière.
La vie d’un outil
- Déclarer
La page appelle
document.modelContext.registerTool()avec un nom, une description, un schéma JSON, une fonctionexecuteet unAbortSignal. - Découvrir
L’agent liste les outils de l’onglet ; un événement
toolchangesignale chaque changement de cette liste. - Appeler
L’agent envoie les arguments. Le navigateur déclenche
toolactivatedet achemine l’appel vers la page. - Exécuter
execute(input, { signal })tourne dans la page avec la session de l’utilisateur, met l’interface à jour et renvoie n’importe quelle valeur sérialisable en JSON. - Libérer
Annuler le signal, ou quitter la page, retire l’outil.
“L’agent préférera toujours les outils conçus pour lui quand ils existent, mais il peut revenir à l’interface web, comme un utilisateur.”
L’API
Deux façons d’écrire un outil.
Il existe deux variantes. L’API impérative, en JavaScript, peut tout faire. L’API déclarative tient en quelques attributs HTML posés sur un formulaire existant. Pour l’agent, aucune différence : comme le dit Dominic Farolino, éditeur de la spécification, à BlinkOn, il n’y a au fond que des outils.
Impérative : une fonction JavaScript
Déclarez l’outil sur document.modelContext. Sa fonction execute doit appeler le même code que vos boutons, mettre à jour ce que voit la personne, et renvoyer des données (toute valeur sérialisable en JSON). Le navigateur ne valide pas encore les entrées : execute vérifie les siennes.
- Les annotations sont des indices, pas des garde-fous. Il y en a quatre :
readOnlyHint(l’outil ne modifie rien),untrustedContentHint(son résultat contient du contenu que le site n’a pas écrit, comme des avis),consequentialHint(l’action mérite une confirmation) etdebugging. WebMCP n’a pas dedestructiveHint, quoi qu’en disent les tutoriels MCP, et rien n’impose de demander confirmation. - Les iframes demandent trois accords :
allow="tools"sur l’iframe,exposedTosur l’outil, etfromOriginsquand l’appelant liste les outils. Une politique d’autorisationstoolsdésactive WebMCP pour un document et ses cadres.
if ("modelContext" in document) {
const registration = new AbortController();
await document.modelContext.registerTool(
{
name: "search_flights",
description:
"Search flights between two airports on one date. " +
"Returns up to 10 offers with price, duration and stops.",
inputSchema: {
type: "object",
properties: {
from: { type: "string", description: "Departure airport, IATA code" },
to: { type: "string", description: "Arrival airport, IATA code" },
date: { type: "string", format: "date" },
},
required: ["from", "to", "date"],
},
annotations: { readOnlyHint: true },
async execute({ from, to, date }, { signal }) {
// The same function the search button calls.
const offers = await searchFlights({ from, to, date, signal });
// The person sees what the agent asked for.
showResults(offers);
return offers.slice(0, 10);
},
},
{ signal: registration.signal },
);
}
// Later: registration.abort() removes the tool.Déclarative : des attributs sur un formulaire
Ajoutez toolname et tooldescription à un <form> et le navigateur construit le schéma à partir des champs, options des listes comprises. Sans toolautosubmit, l’agent remplit le formulaire et lui donne le focus, et la personne l’envoie. La page sait qu’un agent est à l’œuvre grâce à SubmitEvent.agentInvoked, répond avec respondWith() et peut styler ce moment avec :tool-form-active. La section de la spécification sur les formulaires porte encore la mention « TODO » : le comportement de Chrome fait office de définition.
<form
toolname="book_table"
tooldescription="Book a table for a date, a time and a party size."
action="/reservations"
method="post"
>
<input name="date" type="date" required>
<select name="time" required>
<option>19:00</option>
<option>20:30</option>
</select>
<input name="guests" type="number" min="1" max="12" required
toolparamdescription="Number of people, 1 to 12">
<button>Book</button>
</form>L’API a bougé en 2026. La plupart des tutoriels, non.
Du code écrit avant juin 2026 échoue souvent aujourd’hui. Ce qui a changé, d’après l’historique de la spécification et la documentation de Chrome :
| Quand | Ce qui a changé | Que faire |
|---|---|---|
| 5 mars | provideContext() et clearContext() supprimés | Déclarer les outils un par un. En partie parce qu’un script tiers pouvait remplacer en silence les outils de la page. |
| 27 mars | unregisterTool() supprimé | Passer un AbortSignal à la déclaration, puis l’annuler. |
| 27 mai | navigator.modelContext devient document.modelContext | Les outils appartiennent à une page, pas au navigateur. Détecter les deux tant que d’anciennes versions circulent. |
| 11 juin | execute(input, client) devient execute(input, { signal }) ; requestUserInteraction() supprimé « pour l’instant » | La confirmation revient aux agents et aux navigateurs : prévoyez-la dans votre parcours. |
| 3 sept. | Ajout de consequentialHint | Signaler les paiements, envois et suppressions. |
| 4 sept. | Les agents sans interface entrent dans le périmètre | Les premières documentations promettaient un humain toujours présent. Ce n’est plus une hypothèse sûre. |
| 30 sept. | L’isolation d’origine n’est plus exigée | La documentation de Chrome dit encore le contraire ; il faudra quelques versions pour que cela arrive en stable. |
| Chrome 153 | Les arguments d’executeTool() passent en texte JSON | Des objets sont prévus pour Chrome 155 ; acceptez les deux dans vos tests. |
Comparaisons
WebMCP n’est pas MCP.
Le nom laisse croire à un portage dans le navigateur du Model Context Protocol d’Anthropic. Ce n’en est pas un. MCP est un protocole client-serveur : des messages JSON-RPC entre une application d’IA et un serveur que vous hébergez, désormais gouverné par l’Agentic AI Foundation de la Linux Foundation. WebMCP n’a ni protocole ni serveur. C’est une API JavaScript dans la page, rédigée au W3C.
Ce qu’ils partagent, c’est la forme d’un outil (un nom, une description, un schéma JSON) : les mêmes définitions peuvent donc servir aux deux. Alex Nahas, dont le projet a lancé le mouvement, voulait faire entrer le JSON-RPC de MCP dans le navigateur, et a perdu ce débat. Même l’éditeur de Microsoft, Brandon Walderman, disait tôt que le « P » le gênait : il s’agit d’une API du DOM, pas d’un protocole. La position de Mozilla est plus directe : « Il n’y a pas de MCP ici. »
| WebMCP | Serveur MCP | Agent qui lit l’écran | llms.txt | |
|---|---|---|---|---|
| Où tourne le code | Dans la page ouverte | Sur votre serveur | Nulle part : l’agent clique | Nulle part : un fichier texte |
| Connexion | La session de l’utilisateur | OAuth ou clés d’API | La session de l’utilisateur | Aucune |
| Page ouverte nécessaire | Oui | Non | Oui | Non |
| Qui affiche le résultat | L’interface du site | L’interface de l’agent | L’interface du site | L’agent |
| Peut agir | Oui, via le code du site | Oui | Oui, en cliquant | Non, lecture seule |
| Idéal pour | Le travail en direct, connecté et visuel, sous les yeux de la personne | L’automatisation en arrière-plan et les tâches internes | Les sites qui n’offrent rien d’autre | Aider les agents à lire et à citer |
Beaucoup d’équipes feront les deux. Shopify propose Checkout MCP pour les agents sur serveur et Checkout WebMCP pour les agents dans le navigateur de l’acheteur, sur le même objet de commande, et conseille la version serveur dès que l’agent peut tourner sur un serveur. Les MCP Apps vont dans l’autre sens : elles font entrer l’interface d’un site dans la conversation de l’agent, quand WebMCP fait entrer l’agent dans le site.
Ce que la plupart des articles se trompent à dire
« C’est un standard du W3C. »C’est un brouillon de Community Group. Aucun Working Group ne l’a adopté, et la revue d’architecture est toujours ouverte.
« C’est sorti dans Chrome 146. »146 a apporté une option pour les développeurs. Chrome 149 à 156 mènent une phase d’essai, une prolongation jusqu’à 162 est demandée, et aucune intention de livrer n’a été déposée.
« Tous les agents peuvent s’en servir. »Prendre en charge l’API et appeler des outils sont deux choses. Un seul agent grand public le fait : le navigateur de ChatGPT sur ordinateur. Gemini dans Chrome est annoncé ; Claude dans Chrome et Copilot dans Edge ne montrent aucun support public.
« Utiliseznavigator.modelContextetunregisterTool(). »Les deux ont disparu : c’est
document.modelContext, et on retire un outil en annulant un signal.« Les formulaires s’envoient tout seuls. »Seulement avec
toolautosubmit. Sinon l’agent remplit, et la personne envoie.« Ça vous fera ranker dans la recherche IA. »Les outils ne s’explorent pas : ils n’existent que tant que la page est ouverte dans un navigateur.
Histoire
D’un contournement chez Amazon à un brouillon du W3C.
WebMCP n’est pas né sur la feuille de route d’un navigateur. Il est né d’un problème de connexion.
Mars 2025
Le nom apparaît
Le développeur Jason McGhee publie un projet appelé WebMCP, première apparition du nom, pour que des sites proposent des outils à des clients IA locaux.
Juin–juil. 2025
Un serveur MCP dans une page web
Chez Amazon, Alex Nahas veut que ses collègues utilisent des agents sur les outils internes. Le MCP distant reposait sur OAuth, Amazon sur une authentification unique SAML, et le serveur MCP interne avait grossi jusqu’à des milliers d’outils. Sa réponse : faire tourner le serveur dans le JavaScript d’une page où l’utilisateur est déjà connecté. Il l’appelle MCP-B (le B pour browser, « Browser MCP » étant déjà pris), et le présente sur Hacker News le 9 juillet.
Juil. 2025
Deux navigateurs, la même idée
Le 9 juillet, Chrome annonce son intention de prototyper une « Script Tools API ». Le 16 juillet, Microsoft Edge publie son explainer « Web Model Context », signé Andrew Nolan et Brandon Walderman.
Août 2025
Une seule proposition
Les deux propositions fusionnent au sein du Web Machine Learning Community Group du W3C entre le 7 et le 18 août, le travail de Nahas étant reconnu comme expérience d’implémentation. Le 29 août, Patrick Brosset montre un prototype d’Edge piloté depuis VS Code.
25 sept. 2025
Officiellement au W3C
La charte révisée du groupe entre en vigueur avec WebMCP parmi ses livrables. Éditeurs : Khushal Sagar et Dominic Farolino (Google), Brandon Walderman (Microsoft). En novembre, le groupe se réunit au TPAC de Kobe, et Sagar présente WebMCP au Web AI Summit de Google.
10 févr. 2026
L’essai développeurs de Chrome
Chrome 146 livre WebMCP derrière une option, avec une extension d’inspection pour appeler les outils à la main. L’équipe relations développeurs de Chrome reconnaît ne pas avoir encore testé avec de vrais agents.
Mars–juin 2026
L’API est reconstruite
provideContextetunregisterTooldisparaissent,modelContextpasse surdocument, le mécanisme de consentement est retiré pour l’instant. Le 11 juin, l’équipe WebKit d’Apple s’oppose formellement à la proposition.Mai–juin 2026
De Google I/O à la phase d’essai
À Google I/O, le 19 mai, Chrome annonce une phase d’essai, un panneau WebMCP dans les DevTools et une catégorie « navigation agentique » dans Lighthouse. L’essai ouvre le 9 juin, de Chrome 149 à 156.
Août 2026
Les sites et les agents arrivent
Les boutiques Shopify déclarent des outils à partir du 5 août, le jour où Mozilla passe sa position à « neutre ». Le 25 août, le navigateur de ChatGPT sur ordinateur commence à les appeler. Le WebMCP Challenge de Google réunit environ 5 000 participations.
Sept. 2026
Sans interface et sans date de sortie
consequentialHintarrive et les agents sans interface entrent dans le périmètre. Le checkout de Shopify suit le 28 septembre. Le 29, Chrome demande à prolonger son essai jusqu’à la version 162 et espère livrer dans cette fenêtre. Le 1er octobre, la charte d’un nouvel Agentic Web Working Group entre en relecture.
Le débat
Qui est pour, qui est contre, et pourquoi.
WebMCP est un brouillon de Community Group, pas un standard du W3C. Un standard suppose plusieurs moteurs, et aujourd’hui seul Chromium l’implémente. Au sein même du W3C, les groupes accessibilité et vie privée sont critiques.
Implémente
Google Chrome
Deux des trois éditeurs. Essai développeurs dès Chrome 146, phase d’essai de 149 à 156, prolongation jusqu’à 162 demandée, pas encore d’intention de livrer.
Implémente
Microsoft Edge
Un éditeur et le premier prototype. Edge participe aussi à la phase d’essai.
Appelle les outils
OpenAI
Le navigateur de ChatGPT sur ordinateur appelle les outils WebMCP depuis le 25 août 2026 : outils JavaScript, sur la page principale seulement.
Neutre
Mozilla Firefox
Un prototype derrière un réglage désactivé par défaut. De l’intérêt pour l’API JavaScript, des réserves sur un nom qui promet MCP.
Opposé
Apple Safari
Veut combler les manques dans HTML et ARIA, et a prévenu qu’il ferait une objection formelle si WebMCP passait tel quel en Working Group.
Pas en l’état
Groupe accessibilité du W3C
Ne soutient pas la spécification dans sa forme actuelle, et voit dans
toolautosubmitune porte ouverte à des interfaces trompeuses, proches du détournement de clic.
Les arguments de Safari méritent d’être entendus
WebKit estime que le sens qui manque doit aller dans HTML et ARIA, là où les personnes, les technologies d’assistance et les agents en profitent tous à la fois. Un schéma typé, dit-il, contraint la forme d’un argument, pas son sens ; et permettre aux sites de repérer les agents ouvre la porte à la vieille erreur qui consiste à traiter certains utilisateurs à part.
La meilleure réponse à ce jour : la sémantique d’accessibilité dit ce qu’un contrôle est, pas ce qu’il fait. Deux formulaires identiques peuvent acheter une plante ou déposer une déclaration d’impôts. Yoav Weiss, chez Shopify, qui déploie des outils sur un grand nombre de boutiques, a déclaré lors de la revue d’architecture du W3C ne voir aucune alternative déclarative réaliste aux outils impératifs.
“Un schéma typé contraint la forme d’un argument, pas le sens que l’agent doit en déduire : la fragilité passe simplement du DOM aux descriptions des outils.”
Quatre objections, et les meilleures réponses
| Objection | Meilleure réponse | Ce qui reste vrai |
|---|---|---|
| « Publiez donc une API. » | WebMCP agit dans la session que la personne a sous les yeux, sans jeton à créer, et convient aux applications dont la logique vit dans le navigateur. | Pour l’automatisation en arrière-plan, une API ou un serveur MCP reste le meilleur outil. |
| « Les sites ne l’adopteront pas. » | L’adoption apparaît là où les intérêts s’alignent : paiement, documentation, logiciels. | Les sites financés par la publicité ont peu de raisons de laisser un agent sauter leurs pages. |
| « Les outils divergeront de l’interface. » | Faire des outils de simples enveloppes autour des fonctions que l’interface appelle déjà. | Les descriptions peuvent encore diverger, et échouer en silence. |
| « C’est une prise de pouvoir de Google. » | Microsoft coédite la spécification et OpenAI la prend en charge. | Sans Safari, cela reste pour l’instant une fonction de Chromium. |
Les problèmes difficiles
Ce qui peut mal tourner.
WebMCP rend le travail d’un agent explicite, ce qui réduit ce qu’il doit toucher. Il ne rend pas les agents sûrs. La spécification le dit elle-même : rien ne garantit que l’intention déclarée d’un outil corresponde à son comportement réel.
- 01
Les mots deviennent une surface d’attaque
Noms, descriptions et résultats atterrissent tous dans le contexte du modèle. Une page malveillante peut y cacher des instructions, et une page honnête peut les relayer en renvoyant des avis ou des messages de forum. Marquez ces résultats avec
untrustedContentHintet dites-le aussi en toutes lettres, comme le fait le site de documentation d’OpenAI. - 02
Le premier script à déclarer gagne
Un nom d’outil est unique par page : un script d’analyse ou de publicité compromis qui déclare
checkouten premier en prend le contrôle. Dans une étude de laboratoire de 2026 (arXiv 2606.06387), cette course a détourné GPT-5.4, Claude Opus 4.6 et Gemini 2.5 Flash à chaque essai. - 03
Des capacités blanchies en langage naturel
Earlence Fernandes (UC San Diego) a glissé une instruction dormante dans la description d’un outil d’un site ; plus tard, sur un autre site, un mot déclencheur a poussé l’agent à appeler l’outil de ce second site. L’isolation entre origines ne vaut que ce que vaut la défense de l’agent contre l’injection de prompt.
- 04
Votre bouton « Approuver » n’est pas un garde-fou
Les outils agissent avec les cookies de l’utilisateur, et un agent qui appelle des outils sait souvent aussi cliquer. Le 2 septembre 2026, un développeur a vu le navigateur de ChatGPT appeler un outil qui ne faisait que proposer, puis cliquer sur le bouton « Approuver » de la page ; la page a enregistré « approuvé par vous » (ticket #288). La règle de Shopify : l’agent montre la commande et le total, demande à l’acheteur, et redemande si le total change.
- 05
Les outils disparaissent en plein vol
Les résultats meurent avec le document. Si un appel fait changer de page, la réponse peut ne jamais arriver (Shopify note qu’
executeTool()renvoie alors null), et les agents ne retrouvent pas toujours les outils redéclarés après le trajet. - 06
Personne ne voit encore le trafic des agents
Les sites peuvent compter les appels, pas savoir s’ils ont servi ce que voulait l’utilisateur. Yoav Weiss (Shopify) a ouvert un ticket sur la mesure en conditions réelles ; un des premiers sites marchands équipés dit ne pas encore pouvoir observer de vrai trafic d’agents.
Où se trouvent vraiment les défenses
Surtout dans l’agent et le navigateur. Sarah Drasner (Chrome) décrit plusieurs couches : des classifieurs d’injection de prompt et un second modèle qui critique les actions de l’agent, des limites sur les sites qu’une tâche peut toucher, et une identité propre à l’agent avec son propre plafond de dépenses. Johann Hofmann (Google) a écrit que les agents doivent se protéger eux-mêmes, et que l’API ne peut pas les porter jusqu’au bout.
Même ses concepteurs divergent sur l’essentiel. Alex Nahas soutient qu’un agent n’a besoin d’aucune identité propre, seulement d’une partie de celle de l’utilisateur. Sarah Drasner en veut une distincte, qui ne pourrait par exemple dépenser que 20 dollars par semaine.
“Une attaque catastrophique par injection de prompt va forcément finir par arriver.”
Cas réel
25 outils en production, sur ce site.
Contenttosocial transforme des contenus en posts à votre image pour Instagram, LinkedIn, Facebook, Pinterest et X. Les clients payants le pilotent depuis Claude ou ChatGPT via notre serveur MCP. En septembre 2026, nous avons ajouté WebMCP à la partie gratuite et publique du site, sans compte ni clé d’API, pour que l’agent de n’importe quel visiteur s’en serve sous ses yeux.
Six types de pages, un même modèle
Page d’accueil
14 sept.Répondre sur le produit et ses prix, afficher une section, ouvrir l’inscription pré-remplie. L’agent ne crée jamais le compte.
get_product_overviewget_pricingshow_landing_sectionopen_signup
Éditeur de templates
22 sept.Créer ou remplir un visuel, le rendre, télécharger en PNG, JPEG, SVG, PDF ou ZIP, ou partager un lien. Le tout dans le navigateur du visiteur.
list_templatesload_templateget_templateget_template_schemacreate_templateupdate_templateset_template_valuesrender_templateexport_templateexport_rendercreate_share_link
Classement des agences SEO
25 sept.Trouver et comparer des agences SEO par ville, spécialité, secteur et taille, à partir des seules données publiées.
find_seo_agenciesget_seo_agencycompare_seo_agenciesget_city_seo_priceslist_seo_agency_awards
Pages templates
29 sept.Parcourir le catalogue par réseau et lire les champs de n’importe quel template.
list_templatesget_templateshow_templates
La page d’un template
30 sept.Remplir un template pendant que le visiteur suit l’aperçu en direct et corrige les champs à la main.
get_templateset_template_valuesrender_templateexport_rendercreate_share_link
Ce guide
1er oct.Permettre à un agent de lire ce guide chapitre par chapitre, depuis la page elle-même.
list_guide_chaptersread_guide_chaptershow_guide_chapterlist_guide_sources
Un produit que les agents utilisent sans inscription
Un visiteur demande à son agent un post Instagram. L’agent trouve un template, le remplit, le rend et remet le fichier. La partie gratuite du produit devient quelque chose que les agents peuvent utiliser, pas seulement lire.
Aucune facture de rendu
Modifications, rendu et exports tournent dans le navigateur du visiteur. Seuls des fichiers statiques et des polices passent par nos serveurs ; aucun service de rendu payant à facturer.
Un seul chemin de code
Chaque outil appelle les mêmes fonctions que les boutons. Il n’y a pas de second produit à maintenir pour les agents.
Le plus dur : une personne et un agent sur le même visuel
La spécification ne dit rien de deux rédacteurs simultanés. Dans notre éditeur, le visiteur et son agent modifient le même fichier en même temps. Nous avons repris aux bases de données la concurrence optimiste : la session tient un numéro de version que chaque modification incrémente, et chaque écriture de l’agent doit citer la version qu’il a lue (expected_version).
Une écriture périmée échoue avec VERSION_CONFLICT et l’agent relit ; deux appels de l’agent qui se chevauchent reçoivent BUSY. Toute modification invalide le dernier rendu : un téléchargement ne montre jamais un visuel que la personne a modifié depuis.
→ set_template_values
{ "expected_version": 7, "values": { "title": "Spring sale" } }
← {
"ok": false,
"error": {
"code": "VERSION_CONFLICT",
"message": "The design changed. Call get_template, then retry with its version."
}
}Dix choses que nous avons apprises
- 01
Un schéma, deux usages
Les mêmes schémas zod valident chaque appel et génèrent les manifestes statiques de l’éditeur de templates et du classement (/templates/webmcp.json, /agencies/webmcp.json). Ces manifestes ne peuvent pas diverger du code, et les agents qui n’exécutent pas WebMCP savent quand même ce qui est possible : l’étape de découverte que la spécification laisse de côté.
- 02
S’arrêter une étape avant la décision
open_signupremplit le formulaire et l’ouvre, puis répond « The account has not been created. » Les outilsshow_*déplacent la vue du visiteur au lieu d’agir à sa place. - 03
Les erreurs font partie de l’interface
Chaque échec renvoie
{ ok: false, error: { code, message, issues } }avec un code stable (INVALID_INPUT,VERSION_CONFLICT,BUSY,CANCELLED,IMAGE_UNREADABLE) et les champs exacts en cause, pour que le modèle se corrige seul. - 04
Zéro octet pour les autres
Le code des outils ne se charge que si
document.modelContextexiste. Les autres navigateurs ne téléchargent rien : les pages restent aussi rapides qu’avant. - 05
Chaque outil a son interrupteur
Chaque déclaration reçoit un
AbortSignal. Quitter la page l’annule, et les requêtes encore en cours sont annulées avec lui. - 06
S’attendre à ce que le navigateur bouge
Les premières versions de Chrome appelaient les outils sans contexte d’exécution : nous retombons alors sur le signal de la page. Chrome 153 passe les arguments d’
executeToolen texte JSON, les objets étant prévus pour la 155. Nous codons selon la spécification et testons contre le navigateur. - 07
Tester la vraie API, sans modèle
Nos tests de bout en bout lancent Chrome avec
--enable-blink-features=WebMCPet appellent les vrais outils : découverte, entrées invalides, annulation, et les octets et dimensions réels de chaque PNG, PDF et ZIP exporté. - 08
Le contenu est une donnée
Textes des templates, données des agences et chapitres de ce guide reviennent comme des données, jamais comme des instructions. Les images passent par le même décodeur borné que les envois, et les images distantes sont refusées proprement quand leur site en interdit la lecture.
- 09
Garder une porte sans WebMCP
Un agent qui se contente de lire le web peut quand même construire le lien d’un template rempli (
#v=1&template=…&values=…). Le visuel voyage dans le fragment de l’URL, qui n’atteint jamais notre serveur, jusqu’à 64 Kio. - 10
Respecter les budgets
Chrome recommande au plus 500 caractères par description et 30 par nom. Notre plus longue description fait 389 caractères : ce que fait l’outil d’abord, ses limites ensuite.
Toute l’intégration tient là
Chaque page reprend la même dizaine de lignes : détecter, ne charger les outils que si nécessaire, les lier à la vie de la page.
Ce que nous ne savons pas encore
Combien d’agents appellent nos outils, et si cela se transforme en inscriptions. Comme tous les premiers à l’adopter, nous ne savons pas encore isoler le trafic des agents. Le seul agent grand public qui embarque WebMCP aujourd’hui est le navigateur de ChatGPT sur ordinateur ; les conversations classiques de ChatGPT et de Claude ne l’exécutent pas, et les clients payants y retrouvent les mêmes fonctions via notre serveur MCP.
useEffect(() => {
const context = document.modelContext;
if (!window.isSecureContext || !context?.registerTool) return;
const controller = new AbortController();
// Tool code is downloaded only by browsers that can use it.
void import("@/lib/agencies/webmcp").then(({ registerAgencyTools }) =>
registerAgencyTools(context, locale, controller.signal),
);
// Leaving the page unregisters every tool.
return () => controller.abort();
}, [locale]);Essayez avec votre agent
À vous
Douze règles qui tiennent.
Tirées des recommandations de Chrome, des équipes qui livrent WebMCP et de nos propres erreurs.
Penser en tâches, pas en éléments
Un outil par tâche qu’un utilisateur vient accomplir, pas un par bouton. Nommer ce qu’il fait :
create_eventexécute,start_event_creationouvre le formulaire.Garder la liste courte
Des dizaines d’outils dégradent les agents et peuvent pousser les navigateurs à en écarter. Ne déclarer sur chaque page que ce que cette page sait faire.
Respecter les budgets
Les limites de Chrome : 30 caractères par nom, 500 par description, 150 par description de paramètre, environ 1 500 par résultat. Mettre la réserve importante en premier : ce qui dépasse est coupé sans prévenir.
Accepter l’entrée brute
Prendre « de 11 h à 15 h » tel que l’utilisateur l’a dit ; ne pas demander au modèle des minutes depuis minuit. Des valeurs d’énumération lisibles : « express », pas 1.
Valider dans le code, souplement dans le schéma
Rien ne garantit que les contraintes du schéma soient appliquées. Vérifier dans
executeet renvoyer des erreurs qui disent comment corriger l’appel.Montrer ce qui s’est passé
Mettre l’interface visible à jour à chaque appel : la personne partage l’onglet avec l’agent.
Signaler ce que vous ne contrôlez pas
untrustedContentHintsur les résultats qui contiennent du contenu d’utilisateurs, et le même avertissement dans la description.Laisser la décision à l’humain
consequentialHintpour les paiements, envois et suppressions, une étape de confirmation dans le parcours, et les prix et stocks revérifiés à l’exécution.Survivre aux changements de page
Faire le travail dans la page et renvoyer des données, faire de la navigation un outil à part, et déclarer les mêmes noms sur chaque page.
Détecter, charger tard, nettoyer
Tester
document.modelContext(anciennes versions de Chrome :navigator.modelContext), ne charger le code des outils qu’à ce moment, et passer unAbortSignal.Surveiller vos scripts tiers
Déclarer tôt les outils critiques, et auditer les balises qui partagent votre page.
Tester comme un agent
L’extension Model Context Tool Inspector de Chrome, le panneau WebMCP des DevTools, l’audit « navigation agentique » de Lighthouse, et un test navigateur qui appelle les vrais outils.
FAQ
Questions fréquentes
WebMCP, c’est quoi, en une phrase ?
Une API du navigateur qui permet à une page web de déclarer des outils (des fonctions nommées, avec une description et un schéma d’entrée) que les agents IA du navigateur peuvent appeler au lieu de cliquer dans l’interface.
WebMCP, est-ce la même chose que MCP ?
Non. WebMCP reprend l’idée d’outil de MCP, mais sans JSON-RPC, sans transport et sans serveur : les outils tournent dans le JavaScript de la page, dans la session de l’utilisateur. MCP est gouverné par l’Agentic AI Foundation de la Linux Foundation ; WebMCP est rédigé au W3C.
Quels navigateurs prennent en charge WebMCP ?
Seulement ceux basés sur Chromium, pour l’instant. Chrome propose un essai développeurs depuis la version 146 et une phase d’essai depuis la 149 ; Edge participe aussi à cette phase d’essai. Mozilla est neutre et l’équipe WebKit d’Apple s’oppose à la proposition : ne l’attendez pas de sitôt dans Firefox ou Safari.
Comment activer WebMCP dans Chrome ?
Pour tester, ouvrez chrome://flags, activez « WebMCP for testing » (Chrome 146 ou plus récent) et relancez ; l’extension Model Context Tool Inspector de Chrome liste et appelle alors les outils d’une page. Pour vos visiteurs, inscrivez votre site à la phase d’essai de Chrome (Chrome 149 à 156) et envoyez son jeton dans un en-tête Origin-Trial.
Qui a créé WebMCP ?
Des ingénieurs de Google et de Microsoft, au sein du Web Machine Learning Community Group du W3C. Les éditeurs sont Khushal Sagar et Dominic Farolino (Google) et Brandon Walderman (Microsoft). WebMCP réunit « Web Model Context » de Microsoft Edge et « Script Tools » de Chrome, avec MCP-B d’Alex Nahas et le projet de Jason McGhee comme travaux antérieurs.
Quels agents IA peuvent appeler des outils WebMCP aujourd’hui ?
Un seul agent grand public : le navigateur intégré de ChatGPT sur ordinateur (dans ChatGPT Work et Codex), depuis le 25 août 2026, pour les outils JavaScript de la page principale. Gemini dans Chrome a été annoncé à Google I/O mais n’est pas sorti ; Claude dans Chrome et Copilot dans Edge ne montrent aucun support public. Les extensions peuvent appeler des outils via des scripts de contenu, et les développeurs à la main avec l’inspecteur de Chrome. Les applications de conversation classiques n’exécutent pas WebMCP.
Faut-il un serveur, une clé d’API ou OAuth ?
Non. Les outils tournent dans la page avec la session que la personne a déjà. C’est tout l’intérêt, et c’est aussi pourquoi WebMCP ne convient pas aux agents qui tournent sans navigateur : donnez-leur une API ou un serveur MCP.
WebMCP est-il sûr ?
Il réduit ce qu’un agent doit toucher, mais l’injection de prompt, les outils trompeurs et le détournement par des scripts tiers sont des risques réels, laissés en grande partie aux agents et aux navigateurs. Traitez les résultats comme des données, gardez les étapes engageantes pour la personne, et auditez les scripts de vos pages.
WebMCP aide-t-il le SEO ?
Aucun effet sur le classement n’a été annoncé. Les agents ne découvrent les outils qu’une fois la page chargée : être trouvé reste une affaire de recherche, où les liens comptent toujours (voir notre guide des backlinks et liens nofollow). Ce que WebMCP change, c’est ce qui se passe après le clic : un agent peut-il aller au bout de la tâche sur votre site ?
Faut-il utiliser l’API impérative ou déclarative ?
Commencez par l’impérative : c’est celle qu’utilisent les agents (environ 172 millions de déclarations contre 20 000 pour les formulaires pendant l’essai de Chrome) et la seule que ChatGPT prend en charge. Les attributs déclaratifs sont un gain rapide pour des formulaires simples, où la personne doit valider elle-même.
Peut-on essayer WebMCP sur cette page ?
Oui. Dans un navigateur compatible, ce guide déclare quatre outils : lister, lire et afficher un chapitre, et lister les sources. La ligne sous le titre vous dit si votre navigateur les expose.
Sources
D’où vient ce guide
Les citations sont traduites de l’anglais, depuis les enregistrements et documents ci-dessous, et abrégées. Chaque chiffre nomme qui l’a mesuré ; les chiffres d’éditeurs sont signalés comme tels.
- WebMCP, Community Group draftW3C Web Machine Learning CG · 30 sept. 2026
- Specification repository, issues and historyGitHub · 2025–2026
- WebMCP documentationChrome for Developers · 2026
- Secure WebMCP toolsChrome for Developers · 1 sept. 2026
- Standards position on WebMCP (oppose)WebKit · juin 2026
- Standards position on WebMCP (neutral)Mozilla · 2026
- Design review of WebMCPW3C TAG · 2026
- Accessibility review (APA WG)W3C, issue #65 · 27 août 2026
- Privacy reviewW3C Privacy WG, issue #313 · 21 sept. 2026
- An agent can complete the page’s own approval stepWebMCP issue #288 · 3 sept. 2026
- Web Model Context explainerMicrosoft Edge · 16 juil. 2025
- Site tools (WebMCP) in ChatGPTOpenAI · août 2026
- Checkout WebMCPShopify · sept. 2026
- document.modelContext usagewebstatus.dev · 1 oct. 2026
- Syntax #1037: WebMCP is here (and you should care)Syntax, with Sarah Drasner and Dominic Farolino · 9 sept. 2026
- Syntax #979: WebMCP, a new standard to expose your apps to AISyntax · 16 févr. 2026
- Why every developer needs to know about WebMCP nowAI Native Dev #99, with Maximiliano Firtman · 31 mars 2026
- From Hacker News to W3Calphalist.CTO #138, with Alex Nahas · 21 mai 2026
- WebMCP: agents on the web and in the browserArcade MCP MVP, with Alex Nahas · 11 févr. 2026
- The why and how of WebMCPCoffee with Developers, with Alex Nahas · 27 févr. 2026
- ShopTalk Show #729 (WebKit’s position, read on air)ShopTalk Show · 24 août 2026
- Don’t let AI agents push your buttons: use WebMCP insteadKhushal Sagar, Web AI Summit · nov. 2025
- WebMCP and the agentic webBlinkOn 21, with Dominic Farolino · avr. 2026
- WebMCP explainedAndrew Nolan, W3C Advisory Committee · 2026
- Build your website for the agentic eraKasper Kulikowski, Google I/O 2026 · mai 2026
- WebMCP: stop scraping the web, start calling itPatrick Brosset, dotAI 2026 · sept. 2026
- Build agent-ready sites with WebMCPOpenAI · août 2026
- WindTunnel benchmarknekuda (vendor) · 18 sept. 2026
- Beyond Browsing: API-based web agentsCarnegie Mellon, ACL Findings 2025 · 2025
- MCPWorld: tools against screen agentsarXiv 2506.07672 · juin 2025
- Tool injection attacks on WebMCP agentsarXiv 2606.06387 · juin 2026
- WebMCP and the same-origin policyEarlence Fernandes, UC San Diego · 30 avr. 2026
- webMCP: Web Machine Context & Procedure (a different proposal)arXiv 2508.09171 · août 2025
Autres guides
À lire ensuite
- SEO
Backlinks, nofollow, dofollow : tous les types de liens expliqués
Backlink, lien nofollow, dofollow, sponsored, UGC, maillage interne : ce que fait vraiment chaque lien en 2026, ce que dit Google, ce que montrent les tests, les sanctions et la loi.
- Naissance du nofollow
- 2005
- Des pages ont un lien nofollow
- 32,3 %
- Utilisent sponsored ou ugc
- 0,5 %
Mis à jour le 1er octobre 2026 · 22 min de lecture
Classement des agences SEO
Où se classe votre agence ?
Positions Google, citations dans les réponses IA de Google, technique du site : chaque critère est public et vérifiable.
Voir le classement- agences SEO listées
- 139
- classements publiés
- 4
- critères mesurés pour chacune
- 19