Hoe maak je een website agent-klaar
Gepubliceerd:
"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
- llms.txt — plak je domein in de validator; streef naar 100/100 zonder gebroken links.
- WebMCP — schakel in Chrome 149+ de optie
chrome://flags/#enable-webmcp-testingin en voer de Agentic Browsing-audit van Lighthouse uit; je tools moeten worden weergegeven. - A2A — haal je
/.well-known/agent-card.jsonop, stuur dan een POST met eenmessage/send-aanroep naar de bijbehorendeurlen bevestig dat je een voltooide taak terugkrijgt.