Guia

Como tornar um site pronto para agentes

"Pronto para agentes" significa três coisas diferentes para três tipos diferentes de agente de IA — e elas se complementam. Veja exatamente como tornamos este validador pronto para agentes, com o código que implementamos, para que você possa copiar o padrão.

Existem três camadas independentes. Adote qualquer uma por conta própria; juntas, elas cobrem um crawler lendo seu site, um agente operando sua interface no navegador e outro agente chamando você pela rede.

Camada 1 — llms.txt: contexto para crawlers

A base. Um llms.txt em texto simples na raiz do seu site informa a um crawler de IA o que é o seu site e quais páginas importam, em ordem de prioridade. É lido no momento da requisição — sem JavaScript, sem protocolo. Comece por aqui: como criar um.

Camada 2 — WebMCP: ferramentas para agentes no navegador

O WebMCP permite que uma página exponha ferramentas chamáveis a um agente de IA em execução dentro do navegador, para que o agente invoque uma ação tipada em vez de tentar adivinhar seu formulário. Há duas maneiras, e implementamos as duas.

Declarativa — anote um formulário real e o navegador sintetiza uma ferramenta a partir dele:

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

Imperativa — registre uma ferramenta em JavaScript que retorna dados estruturados diretamente:

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

Proteja a chamada imperativa com if (navigator.modelContext) para que seja uma operação sem efeito onde o WebMCP estiver ausente. Hoje é um origin trial do Chrome, portanto o alcance real é pequeno — trate-o como um sinal para o futuro, não como tráfego.

Camada 3 — A2A: um agente chamável por outros agentes

O protocolo Agent2Agent (A2A) permite que outros agentes descubram e chamem o seu serviço. Você publica um agent card e o suporta com um 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" }]
}

O url deve apontar para um endpoint funcional que fale A2A — implementamos o método síncrono message/send, encapsulando a mesma lógica de validação como uma skill. O card é um contrato, não uma meta tag.

A única regra: não publique um sinal que você não pode sustentar

É tentador inserir um agent card vazio ou anotações de formulário falsas para deixar uma auditoria verde. Não faça isso. Um agente que busca seu card e chama um endpoint morto — ou invoca uma ferramenta que não faz nada — passa a confiar menos em você depois disso. Cada sinal aqui deve resolver para algo real. É por isso que este validador reporta um sinal WebMCP ou A2A como "presente" somente quando uma implementação funcional o sustenta.

Como verificar cada camada

Continue lendo

Valide seu llms.txt →