A resposta curta
Um site pronto para agentes faz três coisas. Os agentes de IA conseguem acessá-lo. Conseguem lê-lo sem atravessar menus, banners e scripts. E, quando faz sentido, conseguem chamar algumas ferramentas declaradas em vez de adivinhar qual botão apertar.
Implementamos as três no dardo.studio no início de outubro de 2026. Aqui está o que lançamos e quanto disso as principais plataformas de IA documentam usar, conferido no site no ar em 8 de outubro de 2026.
O resumo é menos empolgante que a maioria dos checklists de "pronto para IA". As camadas mais antigas pesam mais: acesso dos crawlers e HTML semântico e limpo. Cópias em Markdown e llms.txt são conveniências baratas. MCP, A2A e WebMCP são protocolos reais, com clientes funcionando, mas nenhuma das documentações de crawlers que citamos, da OpenAI, Anthropic, Perplexity ou Google, descreve seus assistentes encontrando por conta própria as ferramentas de um site.
Comece pelo acesso: robots.txt e a borda
Nosso robots.txt repete um mesmo grupo para o agente padrão (*) e para cada crawler de busca de IA e user fetcher que nomeamos:
User-agent: OAI-SearchBot
Allow: /
Disallow: /api/
Content-Signal: search=yes, ai-input=yesAs mesmas regras valem para ChatGPT-User, PerplexityBot, Perplexity-User, Claude-SearchBot, Claude-User e Bingbot. Apenas /api/ está fechado.
Crawlers de busca e de treinamento são separados
As principais empresas agora documentam tokens separados para busca e para treinamento:
- OpenAI. O OAI-SearchBot exibe sites na busca do ChatGPT. Sites que o bloqueiam ficam de fora das respostas de busca do ChatGPT, embora ainda possam aparecer como simples links de navegação. O GPTBot coleta dados de treinamento. (crawlers da OpenAI)
- Anthropic. O Claude-SearchBot indexa para busca, o ClaudeBot coleta dados de treinamento e o Claude-User acessa páginas quando uma pessoa pergunta algo ao Claude. (crawlers da Anthropic)
- Perplexity. O PerplexityBot exibe e linka sites nos resultados da Perplexity e não é usado para treinar modelos de fundação. (crawlers da Perplexity)
- Google. O Google-Extended é um token de controle para treinamento do Gemini e grounding em outros produtos do Google. Ele não afeta a inclusão nem o ranqueamento na Busca Google. (crawlers comuns do Google)
Os fetchers acionados pelo usuário são diferentes. A OpenAI diz que o robots.txt pode não se aplicar ao ChatGPT-User, porque uma pessoa inicia essas requisições. O Perplexity-User e os fetchers acionados pelo usuário do Google geralmente o ignoram. Esses fetchers agem por uma pessoa em tempo real; quando um bloqueio funciona, ele geralmente só impede o assistente dessa pessoa de ler sua página.
Nosso arquivo não nomeia os crawlers de treinamento, então eles caem em * e são permitidos. Essa é uma decisão de negócio, e os fornecedores a documentam como um controle separado: bloquear o GPTBot ou o ClaudeBot não é o mesmo que sair dos índices de busca deles.
Content Signals: uma linha, nenhum compromisso
A linha Content-Signal vem da Content Signals Policy da Cloudflare, que nomeia três usos: search, ai-input (alimentar um modelo com conteúdo no momento da resposta) e ai-train. Deixamos ai-train de fora, o que, pela política, não concede nem restringe esse uso. A Cloudflare diz que os sinais expressam preferências, não bloqueiam nada e podem ser ignorados. Nenhuma das páginas de crawlers citadas aqui os menciona. Custa uma linha; por enquanto, não espere nada.
Verifique a borda, não só o arquivo
O robots.txt declara uma política; quem decide o que acontece é a sua CDN. Quando testamos em 2 de outubro, o Browser Integrity Check da Cloudflare respondeu com 403 ao cliente HTTP padrão do Python (Python-urllib) e ao libwww-perl, enquanto o robots.txt permitia tudo. Scripts escritos por agentes de programação costumam usar a biblioteca padrão do Python sem alterações.
Adicionamos uma regra de configuração na Cloudflare que isenta requisições GET e HEAD para conteúdo público; /api/ continua respondendo 403. A mesma revisão mostrou que nossos arquivos .txt estavam sem charset, então alguns clientes liam "Bogotá" como "Bogotá". A correção foi um único header: charset=utf-8.
Teste com requisições reais sob cada user agent. Isso mostra que nada bloqueia o nome; não prova que o crawler de verdade visitou o site.
HTML simples e semântico: a camada da qual todo agente depende
O guia de otimização para IA do Google descreve agentes de navegador que analisam capturas de tela, inspecionam o DOM e interpretam a árvore de acessibilidade. Ele indica aos donos de sites a orientação para sites amigáveis a agentes do web.dev, que é em sua maior parte trabalho de acessibilidade: use <button> e <a> em vez de <div>s estilizados, conecte cada label ao seu input e evite que o layout se desloque durante uma captura de tela.
No dardo.studio, cada página tem um único <main> e landmarks <nav> com rótulo. Os botões de menu e de tema são botões de verdade que informam seu estado com aria-expanded e aria-pressed, e os menus fechados são inert. Cada campo do formulário de contato fica dentro do seu <label>, o que lhe dá um nome acessível. O web.dev sugere o atributo for; envolver o input faz o mesmo trabalho.
Isso já ajuda hoje quem usa leitores de tela, o que por si só é motivo suficiente.
Uma cópia limpa em Markdown de cada página
Agentes pagam por cada token que leem, e uma página renderizada carrega navegação, banner de cookies, scripts e gráficos decorativos. Antes deste trabalho, requisitar nossas páginas com Accept: text/markdown devolvia tudo isso em HTML.
Agora, uma etapa de build gera um index.md ao lado de cada página indexável. Ele começa com o front matter (título, descrição, URL canônica, idioma, a versão no outro idioma e a data de atualização) e segue com o conteúdo de <main> da página, sem scripts, botões, imagens decorativas nem o índice interno. As respostas das perguntas frequentes permanecem. Os formulários viram uma lista de campos e opções, para que um agente possa dizer a uma pessoa o que nosso formulário de contato pergunta, sem precisar usá-lo.
Há três formas de obter a cópia:
- Envie
Accept: text/markdownpara a URL normal. Essas respostas incluemVary: Accept, para que os caches mantenham as versões separadas. - Peça o arquivo:
/en/services/seo/index.md. - Acrescente
.mdao caminho da página (/en/services/seo.md). Para URLs que terminam em barra, a proposta do llms.txt usaindex.md, a forma descrita acima.
Toda página HTML também aponta para sua cópia com <link rel="alternate" type="text/markdown">.
Aponte os buscadores de volta para o HTML
O guia do Google informa que ele consegue rastrear e indexar muitos tipos de arquivo além de HTML, sem tratá-los de forma especial. Uma cópia em markdown poderia competir com a própria página, por isso toda resposta em markdown indica a página HTML como canônica:
$ curl -sI https://dardo.studio/en/services/seo/index.md
content-type: text/markdown; charset=utf-8
link: <https://dardo.studio/en/services/seo/>; rel="canonical", ...Quem lê essas cópias? A Cloudflare criou o Markdown for Agents para converter HTML na borda em requisições que preferem markdown, o que sugere que os agentes pedem esse formato. Ela não diz quais clientes enviam o cabeçalho, e nós também não temos uma lista verificada. Se você usa o recurso da Cloudflare, ele adiciona Content-Signal: ai-train=yes, search=yes, ai-input=yes, a menos que sua origem defina o próprio valor. Geramos nossas cópias no build para que correspondam exatamente à página.
llms.txt: um índice útil, sem efeito na busca
O llms.txt é uma proposta de Jeremy Howard, publicada pela primeira vez em setembro de 2024 e ainda aberta a contribuições da comunidade: um arquivo markdown em /llms.txt com o nome do site, um breve resumo e listas de links que um agente pode querer.
O nosso, em /llms.txt e /es/llms.txt, é gerado a partir dos mesmos dados das páginas, então não fica desatualizado. Ele traz os fatos do estúdio (Bogotá, fundado em 2026, equipe de três pessoas, como os projetos são precificados, canais de contato), lista serviços e trabalhos e explica como obter as cópias em markdown. O llms-full.txt reúne o texto completo das páginas do estúdio, de serviços, de trabalhos e de contato.
Uma linha cita empresas de nome parecido que não somos nós. Quando verificamos, em 2 de outubro, elas lideravam os resultados de busca por "dardo studio". Essa linha talvez seja a mais útil do arquivo.
A situação, sem rodeios:
- O Google diz que você não precisa do llms.txt para aparecer na Busca ou nos recursos de IA, que a Busca o ignora e que mantê-lo não ajuda nem prejudica.
- OpenAI, Anthropic e Perplexity não dizem, na documentação de seus rastreadores, que seus bots leem o llms.txt de outros sites. Os sites de documentação da OpenAI, da Anthropic e da Perplexity publicam um, para agentes que leem seus documentos.
Mantenha um se ele for gerado automaticamente e estiver correto. Ele ajuda agentes de programação e ferramentas que o procuram. Não é uma alavanca de visibilidade.
Ferramentas que agentes podem chamar: MCP, A2A e o catálogo de APIs
Publicamos duas ferramentas somente leitura:
list_servicesretorna nossos serviços publicados, escopo, entregáveis e URLs de origem em inglês ou espanhol, filtrados por uma palavra-chave opcional.get_project_briefretorna as perguntas a responder antes de falar conosco e o link de contato localizado para esse serviço.
Uma única implementação atende vários pontos de entrada:
| Ponto de entrada | Endereço em dardo.studio | Padrão e status |
|---|---|---|
| Servidor MCP | /mcp, card em /.well-known/mcp/server-card.json | MCP Streamable HTTP; o server card é uma proposta em rascunho |
| Agente A2A | /a2a, card em /.well-known/agent-card.json | A2A 1.0, JSON-RPC |
| Endpoint JSON | /agent/services.json, descrito em OpenAPI | HTTP simples |
| Catálogo de APIs | /.well-known/api-catalog | RFC 9727, IETF Standards Track |
Toda resposta HTML e markdown envia um cabeçalho Link apontando para o catálogo, o índice de agent skills e os dois cards, de modo que qualquer página leva ao restante.
Regras de design que repetiríamos
- Somente leitura e público. As ferramentas MCP declaram
readOnlyHint: truee leem o mesmo catálogo publicado do HTML, sem banco de dados por trás. Oget_project_briefnão envia, não agenda nem orça; uma pessoa revisa e envia. - Entrada limitada. Os corpos das requisições são limitados a 8 KiB, os cabeçalhos
Origindo navegador são verificados (a especificação do MCP exige isso) e as chamadas têm limite de taxa próprio. - Sem estado. O agente A2A responde na hora, não guarda tarefas, mantém o streaming desativado e não busca arquivos nem URLs enviados a ele.
- Termos claros. /auth.md diz que não são necessárias credenciais e que ler dados públicos não autoriza enviar uma mensagem nem fazer um pagamento.
Também deixamos coisas de fora. Os scanners de prontidão verificam protocolos de comércio e descoberta de OAuth. Não vendemos nada por checkout e não protegemos recursos, então publicá-los descreveria capacidades que não existem.
Quem usa essas ferramentas hoje: clientes MCP que alguém conectou a /mcp e clientes A2A que receberam nosso card. Para um estúdio, o valor é modesto: uma resposta precisa para "o que a Dardo faz e o que devo enviar a eles?" O caso é mais forte para um site com dados em tempo real sobre os quais as pessoas perguntam, como estoque, disponibilidade ou documentação de produto. Agentes que gravam dados precisam de autenticação e etapas de revisão; isso já é trabalho de automação com IA.
WebMCP: as mesmas ferramentas dentro do navegador
O WebMCP permite que uma página registre ferramentas que um agente de IA no navegador pode chamar. É um Draft Community Group Report do W3C Web Machine Learning Community Group e afirma que não é um padrão do W3C. O web.dev diz que ele está em desenvolvimento ativo, pode mudar e pode ser testado no Chrome por meio de um origin trial.
Nossas páginas registram as mesmas duas ferramentas por meio de document.modelContext (ou navigator.modelContext nas prévias mais antigas). Sem a API, o navegador não executa nada extra. Como as ferramentas já existiam, isso levou cerca de 40 linhas. Trate como um experimento.
Cada camada e se vale a pena
| Camada | O que é | Quem lê hoje | Vale a pena? |
|---|---|---|---|
| HTML semântico e formulários com rótulos | Botões, links, landmarks e rótulos de verdade | Navegadores, tecnologias assistivas e agentes de navegador | Sim. Comece por aqui |
| robots.txt para busca e user agents | Regras por crawler que separam busca de treinamento | OpenAI, Anthropic, Perplexity e Google documentam seus tokens | Sim. Depois teste na CDN |
| Content Signals | Preferências search, ai-input, ai-train no robots.txt | Nenhuma empresa de IA que verificamos documenta que as respeita | Uma linha. Não espere nada |
| Cópias em markdown com cabeçalhos canônicos | Uma versão limpa em texto de cada página | Agentes que pedem markdown; não há lista publicada de quais são | Sim, com o cabeçalho canônico |
| llms.txt e llms-full.txt | Um índice selecionado e o texto completo para agentes | O Google Search ignora; nenhuma documentação de crawler diz que o lê | Mantenha se for gerado automaticamente. Não é uma alavanca de visibilidade |
| Servidor MCP (somente leitura) | Ferramentas declaradas que os agentes podem chamar | Clientes MCP que uma pessoa conecta | Só com dados ou ações que valham a chamada |
| Agent card A2A | Uma descrição de um agente legível por máquina | Clientes A2A apontados para ele | Especulativo para a maioria dos sites |
| Catálogo de APIs (RFC 9727) | Uma lista well-known das suas APIs públicas | Ferramentas que o procuram | Barato se você já tem APIs |
| WebMCP | Ferramentas que a página registra no navegador | Chrome, por meio de um origin trial | Experimento |
O que construiríamos de novo
Em ordem: HTML semântico, acesso de crawlers testado, cópias em markdown com cabeçalhos canônicos, um llms.txt gerado e ferramentas só quando houver algo que valha a chamada. Depois, meça. Os logs do servidor mostram quais agentes buscam as cópias em markdown ou chamam /mcp. Uma busca não é uma citação, e nada disso garante que um sistema de IA vá mencionar você.
A preparação para agentes faz parte do nosso trabalho de otimização para busca com IA, junto com o conteúdo e a medição que decidem se as respostas de IA citam você. Para incluir isso no seu site, conte para a gente sobre o projeto.
