Guide

Comment rendre un site prêt pour les agents

« Prêt pour les agents » signifie trois choses différentes pour trois types d'agents IA différents — et elles se combinent. Voici exactement comment nous avons rendu ce validateur prêt pour les agents, avec le code livré, afin que vous puissiez reproduire le schéma.

Il existe trois couches indépendantes. Adoptez-en une seule de façon autonome ; ensemble elles couvrent un crawler qui lit votre site, un agent qui pilote votre interface dans le navigateur, et un autre agent qui vous appelle sur le réseau.

Couche 1 — llms.txt : contexte pour les crawlers

La base. Un fichier llms.txt en texte brut à la racine de votre site indique à un crawler IA ce qu'est votre site et quelles pages comptent, par ordre de priorité. Il est lu au moment de la récupération — sans JavaScript, sans protocole. Commencez ici : comment en créer un.

Couche 2 — WebMCP : outils pour les agents en navigateur

WebMCP permet à une page d'exposer à un agent IA s'exécutant dans le navigateur des outils appelables, afin que l'agent invoque une action typée plutôt que de deviner votre formulaire. Il existe deux approches, et nous les livrons toutes les deux.

Déclarative — annotez un vrai formulaire et le navigateur synthétise un outil à partir de celui-ci :

<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>

Impérative — enregistrez un outil en JavaScript qui retourne directement des données structurées :

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) }] }))
});

Protégez l'appel impératif derrière if (navigator.modelContext) pour qu'il soit sans effet là où WebMCP est absent. C'est aujourd'hui un essai d'origine Chrome, donc la portée réelle est faible — traitez-le comme un signal d'avenir, pas comme du trafic.

Couche 3 — A2A : un agent appelable par d'autres agents

Le protocole Agent2Agent (A2A) permet à d'autres agents de découvrir et d'appeler votre service. Vous publiez une carte d'agent et la soutenez avec un endpoint JSON-RPC :

// 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" }]
}

L'url doit pointer vers un endpoint fonctionnel qui parle A2A — nous implémentons la méthode synchrone message/send, en encapsulant la même logique de validation comme une compétence. La carte est un contrat, pas une balise meta.

La règle unique : ne publiez pas un signal que vous ne pouvez pas honorer

Il est tentant de déposer une carte d'agent vide ou de fausses annotations de formulaire pour rendre un audit vert. Ne le faites pas. Un agent qui récupère votre carte et appelle un endpoint mort — ou invoque un outil qui ne fait rien — vous fait moins confiance ensuite. Chaque signal ici doit résoudre vers quelque chose de réel. C'est pourquoi ce validateur signale un signal WebMCP ou A2A comme « présent » uniquement lorsqu'une implémentation fonctionnelle le soutient.

Comment vérifier chaque couche

Poursuivre la lecture

Validez votre llms.txt →