Uitleg · bijgewerkt 23 september 2026

Wat is WebMCP? Uitleg in het Nederlands

WebMCP is een voorgestelde open webstandaard waarmee een website eigen functies, zoals een afspraak plannen of een offerte aanvragen, als tools registreert in de browser. Een AI-agent roept die tools rechtstreeks aan binnen de sessie van de bezoeker, in plaats van knoppen en formulieren na te bootsen. De specificatie is nog een concept, geen afgeronde W3C-standaard.

Door , oprichter van WebMCP.nl. Elke claim op deze pagina verwijst naar een primaire bron of naar een kennisbankartikel waarin die bron staat.

Hoe werkt WebMCP?

Een pagina die WebMCP ondersteunt, registreert een of meer tools op document.modelContext. Elke tool heeft een naam, een feitelijke beschrijving, een inputSchema dat vastlegt welke invoer nodig is, en een execute-functie. Een ondersteunende browser-agent ziet welke tools de pagina aanbiedt, kiest op basis van de vraag van de gebruiker een passende tool en vult de argumenten in volgens het schema. De browser voert daarna de execute-functie uit in de pagina zelf. Die functie roept doorgaans dezelfde backend aan als je gewone formulier, met de sessie en rechten die de bezoeker al heeft. Het resultaat gaat terug naar de agent, die het aan de gebruiker meldt of een volgende stap zet. Zonder ondersteunende browser of agent verandert er niets: de feature-check slaat de registratie over en je site werkt zoals altijd. Daarom bouw je WebMCP als progressive enhancement bovenop je bestaande site.

Zo loopt een WebMCP-aanroepAgent naar browser naar geregistreerde tool naar backend van de site, en het resultaat terug naar de agent.AI-agentkiest een tool en vult argumenten inBrowserdocument.modelContextGeregistreerde toolexecute() draait in de paginaBackend van je sitebestaande API, sessie en rechtenresultaat terug
De agent bedient geen knoppen, maar roept een functie aan die jouw pagina zelf aanbiedt.

Het verschil met een agent die je site ‘gewoon’ bedient, zit in die expliciete afspraak. Zonder WebMCP moet een agent je interface afleiden: welk veld is de datum, welke knop verstuurt, wat betekent deze foutmelding? Met WebMCP vertelt je site zelf welke handeling er bestaat, welke invoer die verwacht en wat er terugkomt. Dat maakt een taak voorspelbaarder, maar niet vanzelf correct: een tool maakt bestaande bedrijfslogica niet betrouwbaarder. Als een prijsberekening fout is of een endpoint te ruime rechten accepteert, blijft dat probleem bestaan. De browserlaag maakt de functie toegankelijker voor een agent; jouw applicatie blijft verantwoordelijk voor het resultaat.

Wie staat erachter, en hoe ‘af’ is het?

WebMCP is een voorstel van de Web Machine Learning Community Group. Het document heeft de status Draft Community Group Report: geen W3C Standard en geen standards-track Recommendation. Microsoft is co-auteur van het voorstel; Google draait de eerste origin trial in Chrome. Het voorstel, de issues en de wijzigingsgeschiedenis staan openbaar in de repository webmachinelearning/webmcp op GitHub.

Die geschiedenis laat zien dat de API nog beweegt. Op 5 maart 2026 verdwenen provideContext() en clearContext() uit de spec (PR #132). Op 26 maart 2026 kwam AbortSignal als manier om een registratie op te ruimen en verdween unregisterTool() (PR #147). Op 21 juli 2026 verhuisde de API-root naar document.modelContext; navigator.modelContext is sinds Chrome 150 deprecated maar werkt nog tijdens de origin trial. En Chrome markeert JSON-tekst als invoer voor executeTool vanaf versie 155 als verouderd, ten gunste van een JavaScript-object. Tutorials die een van die oude vormen gebruiken, zijn verouderd. Zo controleer je welke API-versie je code gebruikt.

Twee manieren om tools aan te bieden

Chrome documenteert twee routes: een JavaScript-route (de imperatieve API) en een declaratieve route via HTML-formulieren. Ze lossen hetzelfde probleem op, maar verschillen in controle, onderhoud en ondersteuning door agents.

De imperatieve API: registerTool()

Met document.modelContext.registerTool() registreer je een tool in JavaScript. Je bepaalt zelf de naam, de beschrijving, het invoerschema en wat execute doet. Doe eerst een feature-check, zodat bezoekers zonder ondersteuning niets merken, en koppel execute aan de bestaande backend-logica van je formulier:

javascript
// document.modelContext is de actuele API-root.
const mc = document.modelContext;

if (typeof mc?.registerTool === "function") {
  const controller = new AbortController();

  await mc.registerTool({
    name: "plan_afspraak",
    description: "Plan een afspraak. Retourneert bevestiging en tijdslot.",
    inputSchema: {
      type: "object",
      properties: {
        datum: { type: "string", format: "date" },
        tijd:  { type: "string" }
      },
      required: ["datum", "tijd"]
    },
    async execute({ datum, tijd }) {
      // Dezelfde backend als het gewone formulier.
      const res = await fetch("/api/afspraak", {
        method: "POST",
        body: JSON.stringify({ datum, tijd })
      });
      return { content: [{ type: "text", text: await res.text() }] };
    }
  }, { signal: controller.signal });

  // Verdwijnt deze view (bijv. navigatie in een SPA)? Dan:
  // controller.abort();
}

Drie ontwerpregels maken het verschil. Houd schema's strak, met types, enums en verplichte velden, zodat de agent niets hoeft te raden. Schrijf beschrijvingen feitelijk (wat doet de tool, wat komt terug) en nooit als instructiekanaal richting de agent. En geef in een single-page-app een AbortSignal mee, zodat je de tool opruimt wanneer de bijbehorende view verdwijnt. Alleen als je aantoonbaar Chrome 149 moet ondersteunen, is een aparte compatibiliteitslaag voor navigator.modelContext zinvol.

De declaratieve API: je bestaande formulier annoteren

Bij de declaratieve route voeg je attributen toe aan een bestaand HTML-formulier, zoals tooldescription op het formulier en toolparamdescription op de velden. De browser zet die om naar toolmetadata. Dat is aantrekkelijk als je al een goed, gelabeld formulier hebt:

html
<form id="offerte"
      toolname="vraag_offerte_aan"
      tooldescription="Vraag een vrijblijvende offerte aan. Plaatst geen opdracht.">
  <label for="dienst">Dienst</label>
  <input id="dienst" name="dienst"
         toolparamdescription="De gewenste dienst, bijvoorbeeld onderhoud">
  <label for="email">E-mail</label>
  <input id="email" name="email" type="email">
  <button type="submit">Offerte aanvragen</button>
</form>

Controleer de exacte attribuutnamen in de Chrome-documentatie over de declaratieve API; ook hier beweegt de spec nog. Een open issue gaat bijvoorbeeld over taal en tekstrichting van declaratieve metadata, relevant voor meertalige sites.

De declaratieve route heeft een meetbaar extraatje: bij een door een agent gestarte inzending zet de browser SubmitEvent.agentInvoked. Gebruik dat voor analytics, nooit voor toegang, en tel ‘onbekend’ apart:

javascript
const form = document.getElementById("offerte");

form?.addEventListener("submit", (event) => {
  const signal = typeof event.agentInvoked === "boolean"
    ? (event.agentInvoked ? "webmcp" : "not-marked")
    : "unknown";
  console.info("form-submit-observation", { formId: form.id, signal });
});

Welke kies je?

Let vooral op de agent die je wilt bedienen. ChatGPT Site Tools ondersteunt momenteel een subset: JavaScript-tools op de hoofdpagina, zonder declaratieve tools en zonder tools in iframes. Een geannoteerd formulier kan dus binnen de browser-API passen en toch niet door die client worden ontdekt. Wil je vandaag in ChatGPT werken, dan begin je imperatief. De declaratieve route blijft interessant voor eenvoudige formulieren en voor het agentInvoked-signaal, in browsers die de declaratieve API ondersteunen. Lees wat ChatGPT precies ondersteunt.

Browserstatus

WebMCP is geen afgeronde standaard, dus ‘ondersteuning’ betekent per partij iets anders. Onderstaande samenvatting komt uit onze browsersupport-matrix, waar elke claim naast zijn primaire bron staat (laatst gecontroleerd 23 september 2026).

Browser of agentStatusWat dat betekent
Chrome 149Origin trial (live)Sinds begin juni 2026, met een token test je op je echte site. De trial loopt van Chrome 149 tot en met Chrome 156. Geen afgeronde standaard: de API kan nog veranderen.
Edge 152Origin trial (live)Sinds 27 augustus 2026 (Edge 152 Stable). Registratie via Microsofts origin-trial-portaal; de trial loopt tot 17 november 2026. Een trial met registratie, geen native support. De WebMCP Explorer uit Microsofts blog van 21 september is testgereedschap, geen agent-ondersteuning.
FirefoxNeutraal standpuntMozilla nam in zijn standards-positions het standpunt ‘neutral’ in. Geen implementatietoezegging en geen bekend implementatiesignaal.
SafariAfwijzend standpuntWebKit nam in juni 2026 formeel een afwijzend standards-standpunt in over WebMCP.
ChatGPT Site ToolsOndersteund (live)Sinds 25 augustus 2026 in de ingebouwde browser van de ChatGPT-desktopapp, wanneer Site Tools beschikbaar zijn voor account en model. Declaratieve tools en tools in iframes worden nog niet ondersteund.
Gemini in ChromeAangekondigdGoogle positioneerde de agentrol op I/O 2026 bij Gemini in Chrome. Een brede uitrol waarin Gemini WebMCP-tools van willekeurige sites aanroept, is er volgens de primaire bronnen nog niet.

Voor je planning betekent dit: bouw voor wat vandaag echt kan (Chrome en Edge via de origin trial, ChatGPT Site Tools in de desktopapp) en zorg dat elke andere browser gewoon je normale site ziet. Trialdeelname, browserondersteuning en ondersteuning door een agent zijn drie aparte voorwaarden; test ze afzonderlijk.

WebMCP vs MCP vs llms.txt

De namen lijken op elkaar, maar lossen verschillende problemen op. Kort: llms.txt wijst informatie aan, MCP koppelt je backend en WebMCP maakt je site bedienbaar.

  • llms.txt is een voorstel voor een tekstbestand dat bruikbare informatie aanwijst. Leesvoer, geen loket, en een voorstel, geen standaard; Google Search heeft het niet nodig.
  • MCP (Model Context Protocol) verbindt een AI-applicatie via een server met tools en data. Jij regelt authenticatie en rechten; agents kunnen erbij, ook als niemand op je site is.
  • WebMCP brengt dat idee naar de browser: je pagina biedt tools aan die een agent gebruikt binnen de sessie van je bezoeker, met diens rechten.

Je hebt ze niet automatisch alle drie nodig. De beslisregel: wil je agents systeem-tot-systeem bedienen, dan past een MCP-server; wil je dat de agent van je bezoeker je formulieren betrouwbaar kan gebruiken, dan registreer je WebMCP-tools. Vaak delen ze dezelfde backend-logica. De volledige vergelijking, met tabel en veelgestelde vragen, staat op WebMCP vs MCP vs llms.txt. Heb je al een API, lees dan ook wanneer WebMCP daar iets aan toevoegt.

Veiligheid

Een tool geeft een agent macht over je site, dus begrens die macht. De belangrijkste maatregelen uit onze kennisbank en de Chrome-beveiligingsgids:

  • Schakel WebMCP uit waar je het niet nodig hebt. De conceptspecificatie documenteert sinds 15 september 2026 (PR #275) expliciet de responseheader Permissions-Policy: tools=(). Die blokkeert de API voor het document en alle onderliggende frames. Controleer de werking in je doelbrowser.
  • Houd je browser bij. Chrome 153 (Stable op 8 september 2026) repareerde CVE-2026-87521, een informatielek in WebMCP dat een al gecompromitteerd rendererproces veronderstelde.
  • Reken op indirecte promptinjectie. Tekst die een tool teruggeeft, bijvoorbeeld een supportticket, kan instructies bevatten. Geef een leestool daarom geen verzendrechten en lever alleen de data die de taak vraagt.
  • Autoriseer op de server, bij iedere actie. Een bestaande sessie is geen toestemming voor elk dossier, en een door de agent meegegeven account-ID mag nooit de autorisatie bepalen.
  • Annotaties zijn uitleg, geen beveiligingsgrens. untrustedContentHint en consequentialHint helpen de client risico's te herkennen, maar vervangen geen controles in je applicatie.
  • Uitsluiten is niet hetzelfde als maskeren. Een gemaskeerd toolresultaat bewijst niet dat een gevoelige waarde buiten het model bleef. Heeft de agent een waarde niet nodig, ontwerp dan dat hij haar niet ontvangt.

Verder lezen: WebMCP beveiligen en gevoelige velden uitsluiten of maskeren.

Aan de slag

Begin klein, met één taak waarvan je de uitkomst eenvoudig kunt controleren, en bouw pas daarna tools met klantgegevens of gevolgen. Een verstandige volgorde:

  1. Meet waar je staat. De gratis AI-Ready Scan laat zien of je site al tools registreert en hoe de technische basis eromheen ervoor staat.
  2. Kies de juiste tools. Begin bij het doel van de gebruiker, niet bij je formulieren: van klantdoel naar toetsbare toolset.
  3. Test lokaal en daarna in de origin trial. Het stappenplan begint met een alleen-lezen demo en scheidt een lokale test van een test met een echte agent.
  4. Controleer het resultaat, niet alleen de aanroep. Testen vanuit de terminal met agent-browser laat zien waarom een geslaagde uitvoering nog geen correct resultaat is.
  5. Betrek je webbouwer. Stuur de technische one-pager door: actuele spec-surface, origin trial, valkuilen en voorbeeldcode.

Verdieping: alle WebMCP-artikelen per onderwerp

De kennisbank gaat per onderwerp dieper in op WebMCP. Elk artikel heeft een eigen bronnenlijst en een zichtbare wijzigingsdatum.

Implementeren & ondersteuning

Van eerste lokale test tot origin trial, en welke browsers en clients meedoen.

  • Je eerste WebMCP-tool testen: van lokale demo naar origin trialBegin met een alleen-lezen tool. Controleer achtereenvolgens API-toegang, registratie, uitvoering en gebruik door de beoogde agent. Een lokale testflag bewijst niet dat je publieke trialconfiguratie werkt.
  • WebMCP in Chrome 149: wat de origin trial beschikbaar maaktDe origin trial laat deelnemende sites een experimentele browser-API testen. Dat is iets anders dan een afgeronde webstandaard of ondersteuning door iedere AI-assistent.
  • Edge 152 krijgt een WebMCP-origin trial: wat moet je apart testen?Test browsertoegang, tooluitvoering en agentkeuze afzonderlijk. Microsoft verwijst nu naar WebMCP Explorer: een experimentele extensie waarmee je tools handmatig kunt aanroepen en daarna een agent kunt laten werken. Gebruik haar alleen op vertrouwde sites; een lokale test bewijst niet dat je publieke origin trial werkt.
  • WebMCP-code bijwerken: controleer API-versie en toollevensduurChrome markeert JSON-tekst als invoer voor executeTool vanaf versie 155 als verouderd: geef in de nieuwe aanroep een JavaScript-object door. Controleer afzonderlijk je browserversie, eventuele wrapper en registratielevensduur. Een foutmelding is geen reden om een schrijvende tool automatisch opnieuw aan te roepen.
  • ChatGPT kan WebMCP-tools gebruiken: welke ondersteuning heeft je site nodig?ChatGPT's ingebouwde browser kan WebMCP-tools gebruiken, maar ondersteunt een subset: JavaScript-tools op de hoofdpagina, zonder declaratieve of iframe-tools. Voor een website is die concrete compatibiliteit belangrijker dan de Challenge eromheen. De inzendingen voor die Challenge zijn inmiddels gesloten.

Toolontwerp & betrouwbaarheid

Welke tools je bouwt en hoe ze zich gedragen als het niet meteen lukt.

  • Welke WebMCP-tools moet je bouwen? Van klantdoel naar toetsbare toolsetChrome publiceerde op 26 augustus een ontwerpkader dat begint bij het doel van de gebruiker. Werk één gesprek uit, bepaal welke informatie en acties nodig zijn en vertaal dat naar tools en acceptatietests. Het offertevoorbeeld hieronder laat zien hoe je dat concreet doet.
  • Een WebMCP-tool zegt nee: maak van een weigering geen storingEen WebMCP-tool kan correct weigeren iets te wijzigen. Maak dat onderscheid zichtbaar in het resultaat: verkeerde invoer vraagt om herstel, verouderde gegevens om opnieuw lezen en ontbrekende toestemming om een menselijke beslissing. Een technisch voltooide aanroep is nog geen uitgevoerde klanttaak.
  • Een WebMCP-tool geeft een timeout: is de boeking mislukt?Een timeout vertelt niet of een boeking is opgeslagen. Maak de status van de aanvraag opvraagbaar en bescherm herhalingen aan de serverkant met één sleutel voor dezelfde bedoelde actie. Zo voorkom je dat een agent of gebruiker door opnieuw proberen een dubbele boeking maakt.
  • WebMCP voor meertalige sites: behoud de betekenis van je toolbeschrijvingenEen open WebMCP-issue vraagt hoe taal en tekstrichting van declaratieve toolmetadata behouden blijven. Controleer bij meertalige sites nu al of de beschrijving in elke taal dezelfde actie, voorwaarden en gevolgen uitdrukt. Vertaalde woorden alleen bewijzen dat nog niet.
  • Een WebMCP-taak herhalen: wat controleer je vóór de volgende uitvoering?Een opgeslagen agenttaak is een plan voor een volgende uitvoering. Controleer dan opnieuw de beschikbare tool, het account, de invoer en de gevolgen. Hieronder zie je aan een fictieve trainingsboeking welke gegevens je kunt bewaren en wanneer een routine moet stoppen.

Testen & meten

Technische checks, taaktests en wat je in je analytics wel en niet ziet.

Security

Rechten begrenzen, gevoelige gegevens buiten de agent houden en herkomst controleren.

  • WebMCP beveiligen: houd je browser bij en begrens je toolsSchakel WebMCP uit op pagina’s die het niet nodig hebben: de conceptspecificatie beschrijft daarvoor nu expliciet Permissions-Policy: tools=(). Controleer de werking in je doelbrowser. Waar je wél tools aanbiedt, blijven browserupdates, beperkte rechten en servercontroles noodzakelijk.
  • Gevoelige velden in WebMCP: maskeren is niet hetzelfde als uitsluitenEen gemaskeerd toolresultaat bewijst niet dat een gevoelige waarde buiten het model is gebleven. Controleer ook het invoerschema, standaardwaarden, toolargumenten en foutmeldingen. Een nieuwe formulierbibliotheek laat concreet zien waarom uitsluiten en maskeren verschillende ontwerpkeuzes zijn.
  • WebMCP-tools gevonden? Controleer wie ze heeft gebouwdEen agent kan WebMCP-tools voor een website bouwen zonder de broncode van die website te wijzigen. DeepDeck maakt het onderscheid tussen gevonden paginatools en zelfgebouwde tools zichtbaar. Controleer bij een demo daarom niet alleen de uitkomst, maar ook wie de integratie levert en onderhoudt.

Vergelijken & beslissen

Wanneer WebMCP iets toevoegt, en hoe je een verantwoorde eerste stap zet.

  • Je hebt al een API. Wanneer voegt WebMCP dan iets toe?WebMCP biedt tools vanuit een browserpagina en kan bestaande API's hergebruiken. Die browser hoeft geen zichtbaar venster te hebben: headless gebruik is expliciet in scope. De architectuurkeuze draait daarom om de benodigde paginacontext, niet alleen om de vraag of een gebruiker meekijkt.
  • Wanneer is een WebMCP-pilot de investering waard?Een WebMCP-pilot is zinvol als je vooraf kunt benoemen welke klanttaak verbetert en hoe je dat toetst. Kies een afgebakende taak, controleer of de bedoelde agent hem ondersteunt en spreek doorgaan- en stopcriteria af. Een succesvolle demo alleen is nog geen reden om breed uit te rollen.
  • WebMCP bij een schademelding: verbeter de intake, bewijs de winstEen agent kan helpen gegevens voor een schademelding te verzamelen. Dat bewijst nog geen snellere afhandeling of hogere STP. Test eerst volledigheid, correcties en de controle van de klant.
  • GPT-Live en WebMCP: wat een indrukwekkende stem betekent voor je klantreisNa de release van GPT-Live-1 nam ik de proef op de som met collega’s en vrienden. Hun reacties liepen uiteen van bewondering tot ongemak. In combinatie met WebMCP kan zo’n spraakagent niet alleen praten, maar ook klanttaken laten uitvoeren. Dat vraagt om een andere klantreis én duidelijke grenzen.

Bronnen

WebMCP gaat over bruikbaar zijn voor agents. Wil je eerst weten of AI-assistenten je überhaupt vinden en citeren, lees dan over AI-vindbaarheid.

Doe de gratis AI-Ready ScanStuur dit naar je webbouwer