Handleiding

Hoe maak je een website agent-klaar

"Agent-klaar" betekent drie verschillende dingen voor drie verschillende soorten AI-agent — en ze stapelen op. Hier is precies hoe we deze validator agent-klaar hebben gemaakt, met de code die we hebben uitgerold, zodat je het patroon kunt kopiëren.

Er zijn drie onafhankelijke lagen. Gebruik er gerust één op zichzelf; samen dekken ze een crawler die je site leest, een agent die je UI in de browser bestuurt, en een andere agent die je via het netwerk aanroept.

Laag 1 — llms.txt: context voor crawlers

De basis. Een platte tekst llms.txt in je root vertelt een AI-crawler wat je site is en welke pagina's belangrijk zijn, in volgorde van prioriteit. Het wordt gelezen op het moment van ophalen — geen JavaScript, geen protocol. Begin hier: hoe maak je er een.

Laag 2 — WebMCP: tools voor in-browser agents

WebMCP laat een pagina aanroepbare tools beschikbaar stellen aan een AI-agent die in de browser draait, zodat de agent een getypeerde actie uitvoert in plaats van te raden naar je formulier. Er zijn twee manieren, en wij leveren beide.

Declaratief — annoteer een bestaand formulier en de browser synthetiseert er een tool van:

<form toolname="open_llms_txt_report"
      tooldescription="Validate a site's llms.txt and open its report.">
  <input name="url" toolparamdescription="Domain or URL to validate">
</form>

Imperatief — registreer een tool in JavaScript die direct gestructureerde data retourneert:

navigator.modelContext?.registerTool({
  name: "validate_llms_txt",
  description: "Validate a website's llms.txt; returns a 0-100 score and findings.",
  inputSchema: { type: "object", properties: { url: { type: "string" } }, required: ["url"] },
  execute: (input) => fetch("/api/validate?url=" + encodeURIComponent(input.url))
    .then(r => r.json())
    .then(data => ({ content: [{ type: "text", text: JSON.stringify(data) }] }))
});

Beveilig de imperatieve aanroep achter if (navigator.modelContext) zodat het een no-op is waar WebMCP ontbreekt. Het is vandaag een Chrome origin trial, dus het echte bereik is klein — beschouw het als een toekomstsignaal, niet als verkeer.

Laag 3 — A2A: een aanroepbare agent voor andere agents

Het Agent2Agent (A2A) protocol laat andere agents jouw service ontdekken en aanroepen. Je publiceert een agent card en ondersteunt deze met een JSON-RPC-eindpunt:

// GET /.well-known/agent-card.json
{
  "name": "llms.txt Validator",
  "url": "https://llms-txt-validator.dev/a2a",
  "skills": [{ "id": "validate_llms_txt", "name": "Validate llms.txt" }]
}

De url moet verwijzen naar een werkend eindpunt dat A2A spreekt — wij implementeren de synchrone message/send-methode, die dezelfde validatielogica als een skill omhult. De card is een contract, geen metatag.

De ene regel: publiceer geen signaal dat je niet kunt waarmaken

Het is verleidelijk om een lege agent card of nep-formulierannotaties toe te voegen om een audit groen te maken. Doe dat niet. Een agent die je card ophaalt en een dood eindpunt aanroept — of een tool aanroept die niets doet — vertrouwt je daarna minder. Elk signaal hier moet verwijzen naar iets echts. Daarom rapporteert deze validator een WebMCP- of A2A-signaal alleen als "aanwezig" wanneer er een werkende implementatie achter zit.

Hoe verifieer je elke laag

Verder lezen

Valideer je llms.txt →