indsigt

Formularer, en agent kan udfylde: hvad WebMCP ændrer

Core Purpose Tech7 min. læsning

Svaret først

En agent, der udfylder en formular i dag, læser den viste side og gætter. WebMCP lader siden erklære samme handling som et navngivet værktøj med et skema. To attributter på formularen, én pr. felt, og ingen JavaScript. Demonstrationen nedenfor kører inde i artiklen.

En agent, der skal udfylde en formular, gør det, som et menneske ville gøre, hvis det ikke kunne læse: den tager den viste side, gætter ud fra ledetekst, felttype og rækkefølge, hvad hvert felt er, skriver og trykker på det, der ligner en send-knap. Det virker for det meste. Det holder op med at virke den dag, en ledetekst bliver skrevet om, og det sker lydløst, for intet i siden har nogensinde lovet, hvad det tredje felt var til.

WebMCP er Chromes forslag til at fjerne gætteriet. Siden erklærer, hvad den kan, som navngivne værktøjer med typede parametre, og agenten kalder et af dem i stedet for at fortolke et layout. For en formular er erklæringen to HTML-attributter på formularen og én pr. felt. Ingen JavaScript, og browsere uden WebMCP ser bort fra det hele.

Hvad attributterne gør

<form id="contact-form"
      toolname="draft_project_inquiry"
      tooldescription="Udfyld kontaktformularen med en
        henvendelse. Sender ikke.">

  <label for="email">E-mail</label>
  <input id="email" name="email" type="email" required
         autocomplete="email"
         toolparamdescription="Arbejdsmail, der kan svares på.">
</form>

<!-- Uden for formular-elementet, altså ikke parametre. -->
<label><input type="checkbox"> Jeg samtykker...</label>
<button type="submit" form="contact-form">Send</button>
toolname og tooldescription gør formularen til et værktøj. Formular-elementet er samtidig grænsen: det, der ligger indenfor, er en parameter, og det, der ligger udenfor, er ikke.

Browseren udleder skemaet fra felterne: name-attributten bliver parameterens navn, required bliver en påkrævet parameter, og en select bliver en opregning af sine muligheder. Dermed bliver selve formular-elementet en grænse, det er værd at vælge bevidst. Alt indenfor er noget, en agent må levere. Det, man ikke vil have leveret, hører udenfor, og det er der, vores samtykkefelter, vores honeypot og vores send-knap nu ligger. Knappen virker fint derfra med en form-attribut, der peger på formularen.

Én valgfri attribut betyder mere end de andre. Med toolautosubmit sender browseren formularen på agentens vegne. Uden den udfylder browseren felterne, ruller formularen frem og stopper. At udfylde og at sende er to forskellige handlinger, og attributten er stedet, hvor man vælger, hvilken af dem man uddelegerer.

At annotere en formular tvinger dig til at gennemgå den

Vi annoterede vores kontaktformular, åbnede DevTools, og Chrome meldte om to problemer med det samme. Det ene skjulte felt havde et navn, men intet, der beskrev det. Det andet havde slet intet navn. Ingen af dem var et felt, nogen havde skrevet den uge.

Det første var honeypot-feltet, som har ligget der i månedsvis: et tekstfelt ved navn website, skjult for mennesker, hvis eneste opgave er at blive udfyldt af noget, der ikke er en person. Det andet kom fra vores checkbox-komponent, som viser kontrollen som en knap og spejler dens tilstand ned i et skjult felt, så en formularafsendelse bærer en værdi. Begge var på vej til at blive parametre i et skema, der bliver rakt til agenter, det ene uden navn, og en agent, der udfyldte honeypot-feltet, ville have fået en reel henvendelse afvist som spam.

Løsningen var ikke at beskrive dem bedre. Den var at flytte dem ud af formular-elementet, hvor de i øvrigt hører hjemme: ingen af dem er noget, et menneske skriver. Det er værd at vide, før man annoterer noget som helst. Skemaet udledes af markup, man ikke har set på i et stykke tid, og gennemgangen er den nyttige del.

Prøv det inde i artiklen

Seks trin: formularen som den er, hvad en agent skal gætte ud fra den, annoteringen, skemaet browseren udleder, kaldet, og til sidst en formular, du selv kan bruge. Sidste trin spørger din egen browser, om den har WebMCP, og fortæller, hvad den fandt.

Trin 1 af 6: En almindelig formular

Fire felter, et samtykkefelt og en knap. Intet i den fortæller, hvad noget af det er til. Det er formularen på vores egen kontaktside, og det er formularen på det meste af nettet.

KontaktformularDemo
Navn *

 

E-mail *

 

Organisation

 

Kort om opgaven *

 

Jeg har læst privatlivspolitikken (påkrævet)
Send henvendelse

Rul for at gå gennem trinene. Formularen i sidste trin er annoteret for alvor og sender ingenting.

Hvad det ikke løser

Skemaet siger, hvad et felt hedder, og hvilken type det holder. Det siger ikke, om indholdet er sandt. En agent, der skriver en opgavebeskrivelse på nogens vegne, skriver på nogens vegne, og en velbeskrevet parameter gør det lettere, ikke mere ansvarligt.

Det afgør heller ikke samtykket. Et felt om samtykke til behandling af persondata er en erklæring fra et menneske om dets egne data, og et værktøjskald, der sætter fluebenet, har forvandlet en retlig handling til en parameter. Det er et designvalg, ikke en fejl i platformen, og det er grunden til at undlade toolautosubmit på enhver formular, hvor et sådant felt optræder.

Almindeligt autofyld er stadig den største gevinst

Alle browsere i brug i dag udfylder allerede formularer ved hjælp af autocomplete-attributten, og de fleste formularer giver dem mindre at arbejde med, end de kunne. Et felt uden name-attribut kan ikke udfyldes. Et felt med en værdi, browseren ikke kender, bliver sprunget over. Et e-mailfelt, der sætter stort begyndelsesbogstav, forvandler en korrekt adresse til en, der fejler valideringen, og på en telefon koster den forkerte inputmode brugeren @-tasten.

Det samme skjulte felt er en fælde i den anden retning. En adgangskodeadministrator, der udfylder efter feltnavn, skriver gladeligt en URL i et felt, der hedder website, henvendelsen bliver afvist som robot, og personen, der skrev den, får en fejl, de ikke kan gøre noget ved. Skjulte felter har brug for de særlige ignore-attributter, ikke bare at være skjulte.

Hvad vi har ændret her

  • Autofyld-værdier og tastaturhint pr. felt på kontakt- og nyhedsbrevsformularen, så et enkelt klik udfylder hele formularen i stedet for halvdelen
  • Ignore-attributter på begge honeypots, så en adgangskodeadministrator ikke kan få en reel henvendelse afvist
  • name-attributten på feltet med opgavebeskrivelsen, som ikke havde nogen, så det nu både sendes og udfyldes under et navn
  • Deklarative WebMCP-annoteringer på kontaktformularen, nyhedsbrevstilmeldingen og tilmeldingen til caseopdateringer
  • Samtykkefelter, honeypots og send-knapper flyttet uden for det annoterede formular-element, så de ikke er parametre, en agent kan nå
  • Ingen toolautosubmit nogen steder, bevidst: en agent må udfylde vores formularer og må ikke sende dem
Annoteringen koster en eftermiddag og udløber harmløst, hvis standarden ændrer sig. At uddelegere afsendelsen koster muligheden for at sige, at et menneske mente det.

Hvad vi anbefaler

Ret autofyldet først. Det betaler sig i alle browsere i dag, arbejdet er det samme alligevel, og en formular med ordentligt navngivne og beskrevne felter er størstedelen af det, WebMCP-annoteringen har brug for. Annotér derefter de formularer, du er tryg ved at lade en agent udfylde, og lad autosubmit ligge, indtil du kan svare på, hvad der sker, når kaldet var forkert.

For alt, der bærer et samtykke, en betaling eller en uigenkaldelig handling, er det nyttige spørgsmål ikke, om en agent kan nå det. Det er, hvilket trin man vil have et menneske til stede ved, og om formularen bagefter stadig kan se forskellen.

At beslutte, hvilke formularer en agent må udfylde, og hvilke der forbliver et menneskes alene, er en mindre udgave af et spørgsmål, der bliver sværere, jo mere af en drift der åbnes op for en agent: hvilken handling, hvis tilladelse, hvilket spor den efterlader. Det er det spørgsmål, en opgave om operationel AI starter med, uanset hvilken flade der åbnes op næste gang.

Hvad er WebMCP?
Et foreslået web-API, hvor en side erklærer, hvad den kan, til en AI-agent som navngivne værktøjer med typede parametre, i stedet for at lade agenten læse den viste DOM og gætte. Formularer kan annoteres deklarativt med HTML-attributter; andre handlinger registreres i JavaScript.
Ødelægger WebMCP-attributterne browsere, der ikke understøtter det?
Nej. Det er ukendte HTML-attributter, og dem ser alle browsere bort fra. En formular, der er annoteret til WebMCP, er en almindelig formular alle andre steder, og intet ved afsendelsen ændrer sig.
Må en agent sende en formular?
At udfylde og at sende er to beslutninger, og attributten toolautosubmit er stedet, hvor den anden træffes. Undlad den, hvor formularen indhenter samtykke, tager en betaling eller gør noget, der ikke kan gøres om, så den sidste handling bliver hos personen ved tastaturet.
Erstatter det autocomplete-attributten?
Nej, og autocomplete betyder mest i dag, fordi alle browsere følger den. De to overlapper i, hvad de kræver af markup: navngivne felter, korrekte typer og ærlige beskrivelser. At gøre autofyldet ordentligt er størstedelen af forberedelsen til agentdelen.
  1. WebMCP, overblikChrome for Developers
  2. WebMCP, det deklarative APIChrome for Developers
  3. WebMCP, anvendelser, herunder udfyldning af formularerChrome for Developers
  4. Autofyld: autocomplete-attributtenHTML Standard, WHATWG

Nyhedsbrev

Noter om at bygge systemer, der holder

En kort mail, når vi udgiver noget, der er din tid værd. Arkitektur, integration og operationel AI i regulerede organisationer. Ingen løfter om kadence, og din adresse bliver ikke givet videre.

læs videre

Relaterede indsigter

  • The AI code trust gap: adoption is settled, ownership is not

    Around 90% of developers use AI daily, more distrust its accuracy than trust it, and its security pass rate has not moved in a year. Read together, the 2025-2026 evidence says the constraint has shifted from writing software to owning it, and that is a specification and accountability problem rather than a tooling one.

  • WebMCP and the dual-mode website: what leadership actually decides

    There is a widely held expectation that web pages end up as a prompt box. WebMCP is the more modest version of that future: the application stays visible, and a prompt is added as a second way to operate it. Two things have to exist for that to work. Only one of them is yours to build, and whether you build the second one as well is the decision about who controls the agent.

Kompetencer

  • Systems Architecture

    Designing architectural foundations that allow complex organizations to operate reliably and evolve safely.

  • Operational AI

    AI systems that integrate with existing platforms and workflows, with control, traceability, and operational reliability.