CrawlCheck
Para agentes de IA · preguntar, verificar, citar

¿Qué debe saber un agente antes de actuar en un sitio?

En una frase

CrawlCheck da a un agente de IA una respuesta firmada sobre un sitio web antes de que lo lea, lo cite, se conecte a él o transaccione con él: qué recibió de verdad cada rastreador, qué declara el sitio, quién ha demostrado que lo opera, si imita una marca conocida, y una decisión por acción a partir de reglas publicadas — gratis, sin clave, verificable sin conexión.

Antes de que un agente lea, cite, se conecte o realice una transacción con un dominio, pregunta a CrawlCheck qué afirma el dominio, qué sirve, quién lo controla, qué es seguro hacer, qué cambió y qué pruebas lo demuestran.

Cada respuesta está firmada, registrada y es verificable sin conexión, así que un agente puede confiar en ella y citarla sin fiarse de CrawlCheck. No hace falta clave. La respuesta se construye a partir de la misma medición que un propietario de sitio ve en un informe: qué recibió de verdad cada identidad de rastreador, qué declara el sitio, quién ha demostrado que lo opera, si imita una marca conocida, y una decisión por acción a partir de reglas publicadas.

GET https://crawlcheck.io/api/v1/resolve?domain=example.com

Pagar nunca cambia una medición. Inicio rápido · Protocolo Resolve · SDK · Cifras en vivo

Tres caminos hacia abajo

Preguntar. Verificar. Citar.

Preguntar

Una llamada, sin clave.

GET /api/v1/resolve?domain= devuelve la respuesta firmada; POST /api/v1/preflight devuelve una decisión para una acción, con un recibo que el sitio puede comprobar. SDK tipados en npm y PyPI, y un servidor MCP en el registro oficial.

Inicio rápido · Resolve · SDK

Verificar

Compruébalo sin confiar en nosotros.

Cada respuesta está firmada con Ed25519 y una clave publicada, y se verifica sin conexión con un solo script sin dependencias. Cualquier informe se descarga como un paquete de pruebas: el manifiesto firmado de lo que recibió cada rastreador, el resumen del registro, su ruta hasta la raíz sellada del día y la marca de tiempo en Bitcoin.

Verificar un registro · Claves de firma · Prueba

Mencionar

Una dirección permanente para cada respuesta.

El enlace rel="cite-as" de una respuesta nombra el dominio, la hora y el resumen, y más tarde resuelve exactamente a esa respuesta. Atribuye CrawlCheck cuando una respuesta se muestre a personas; la instantánea diaria es CC BY 4.0.

Formato de cita · Términos de la API · Disputas

La medición

Lo que 14 identidades de rastreador recibieron de denverpost.com

Un sitio real, escaneado hace 12 días — 1 identidad fue rechazada, 10 recibieron bytes distintos a los del navegador, cada una con las mismas 2.061 palabras. Abrir el registro completo o ver qué se le dice a un agente sobre cualquier dominio.

IDENTITYSTATUSPALABRAS RECIBIDASFRENTE AL NAVEGADORCliente sin nombre2002.061la referenciaGPTBot2002.061mismas palabras, bytes distintosClaudeBot2002.061mismas palabras, bytes distintosOAI-SearchBot2002.061mismas palabras, bytes distintosClaude-SearchBot2002.061mismas palabras, bytes distintosPerplexityBot2002.061mismas palabras, bytes distintosGooglebot2002.061mismas palabras, bytes distintosNavegador móvil2002.061idénticoBingbot2002.061mismas palabras, bytes distintosApplebot2002.061mismas palabras, bytes distintosAmazonbot2002.061idénticoBytespider4035rechazadoMeta-ExternalAgent2002.061mismas palabras, bytes distintosCCBot2002.061mismas palabras, bytes distintosnavegador de controlidénticomismas palabras, bytes distintosmenos palabrasrechazado15 peticiones, 14 mostradas. Barra: palabras recibidas, frente a la respuesta más larga.

Tres llamadas

1 · PreguntarGET https://crawlcheck.io/api/v1/resolve?domain=example.com
Sin clave, sin cuenta. Una respuesta JSON: qué afirma el dominio, qué sirve a los rastreadores nombrados, quién lo controla, una decisión para leer, citar, conectar y transaccionar, qué cambió y las pruebas detrás de cada punto.
2 · Verificarnode crawlcheck-verify.mjs answer.json --online
Cada respuesta está firmada con Ed25519 contra una clave publicada y anotada en un registro de transparencia de solo adición. El verificador es un único archivo sin dependencias; los SDK llevan la misma comprobación (npm i @crawlcheck/sdk, pip install crawlcheck).
3 · CitarLink: <https://crawlcheck.io/api/v1/resolve?domain=example.com&as_of=…>; rel="cite-as"
Cada respuesta lleva una URL permanente a esa respuesta exacta (cite-as, RFC 8574). Devuelve la respuesta vigente en ese momento, firmada tal como estaba entonces, con su lugar en el registro.

Formato de cita

CrawlCheck. Resolve record for {domain}, answered {answered_at} (sha256 {sha256}). {cite_as}

Ejemplo:

CrawlCheck. Resolve record for github.com, answered 2026-10-09T15:37:51.090Z (sha256 a29fb7d9…). https://crawlcheck.io/api/v1/resolve?domain=github.com&as_of=2026-10-09T15:37:51.090Z

La URL es el enlace rel="cite-as" de la respuesta. Atribuye CrawlCheck cuando muestres una respuesta a personas (términos de la API). La instantánea diaria es CC BY 4.0.

Otras formas de preguntar

Antes de una acciónPOST /api/v1/preflight
allow, warn, require_confirmation o block para una acción, con un recibo firmado que el sitio visitado puede comprobar
Desde un cliente MCPhttps://crawlcheck.io/mcp
las herramientas resolve_domain, preflight y mcp_servers; las mismas respuestas firmadas
Por DNSexample.com._v.crawlcheck.io TXT
un veredicto firmado compacto mediante DNS sobre HTTPS en /dns-query
Desde el propio sitiohttps://example.com/.well-known/crawlcheck-staple.json
el veredicto firmado servido por el propio sitio, sin necesidad de llamar a CrawlCheck
Sin revelar el sitioGET /api/v1/resolve-prefix/{2-8 hex of sha256(domain)}
todas las respuestas del cubo; eliges la tuya en local
Totalmente sin conexiónGET /api/v1/snapshot
la instantánea diaria firmada, una respuesta firmada por línea, CC BY 4.0
Los propios datos de una empresaGET /api/v1/business/record?domain=
el registro firmado y versionado de lo que la empresa publica sobre sí misma
Qué cambióGET /api/v1/changes
el feed de cambios, también como flujo

Qué cuenta

Medido por acciones de agentes verificadas, respaldadas por un registro Resolve firmado y reciente, por tipo de acción (leer · citar · conectar · transaccionar), con falsos positivos, disputas, desconocidos y reversiones contados. Ver las cifras en vivo · Cuota de preflight.

Qué cubre una decisión de cita

Una decisión de cita cubre acceso, permisos, identidad y procedencia: si la página puede leerse y atribuirse, bajo qué derechos declarados, de quién, observada cuándo. No garantiza que el contenido sea cierto.

Verificar un sitio antes de que un agente actúe

Qué cubre la respuesta, acción por acción.

Antes de que un agente lea, cite, se conecte o compre en un sitio, CrawlCheck da una respuesta sobre él: qué recibió de verdad cada rastreador de IA, qué declara el sitio sobre sí mismo, quién ha demostrado que lo opera, si imita una marca conocida, y una decisión para cada acción — permitir, advertir, preguntar a un humano o bloquear. Cada respuesta está firmada y puede comprobarse sin conexión.

Qué reciben de verdad los agentes

Cada identidad de rastreador de IA obtenida en el mismo segundo que un navegador normal: rechazada, con desafío, más pobre o la misma página.

Ver esta sección en un informe real: Permisos de rastreadores →

Qué afirma el sitio

Nombre, teléfono, dirección y las afirmaciones de la página, cotejadas con sus propios datos estructurados y con los directorios que lo listan.

Ver esta sección en un informe real: Coherencia de las afirmaciones →

Quién dice ser

La identidad en sus datos estructurados y su mapa de entidades, y si los perfiles que enlaza apuntan de vuelta.

Ver esta sección en un informe real: Datos estructurados →

Qué declara a las máquinas

robots.txt, sitemap, llms.txt, agents.md y cualquier superficie MCP o API que publique, cada una leída y comprobada, nunca invocada más allá de la solo lectura.

Ver esta sección en un informe real: Sitemap →

Con qué frecuencia un agente recibe algo distinto que una persona
Un motor de respuestas es rechazadoANSWER_ENGINE_REFUSED5,6%Una página de desafío servida como 200CHALLENGE_SERVED_2000,5%Todos los rastreadores rechazados por igualUNIFORM_REFUSAL8,5%Dos empresas reclaman una misma identidadENTITY_COLLISION3,2%Proporción de los 3.873 escaneos del conjunto de datos público que tenían el hallazgo. En vivo; las mismas cifras que en /data.

¿Tu sitio es uno de ellos? Compruébalo gratis → Las 58 tasas →

El flujo de trabajo

  1. Pregunta por un dominioGET /api/v1/resolve?domain=example.com. Sin clave, sin cuenta. Un sitio nunca visto obtiene una primera respuesta en aproximadamente un segundo, marcada como parcial.
  2. Lee la decisión para tu acciónleer, citar, conectar, transaccionar y administrar llevan cada una allow, warn, require_confirmation, block o unsupported, con el motivo y las pruebas.
  3. Verifica la firmaLa respuesta está firmada con una clave Ed25519 publicada. Un script la comprueba sin conexión, así que el agente nunca tiene que confiar en la red por la que llegó.
  4. Pregunta antes de cada acciónPOST /api/v1/preflight devuelve una decisión y un recibo que el sitio visitado puede comprobar, de modo que ambas partes pueden mostrar qué se sabía cuando el agente actuó.
La web agéntica

Qué hacen los agentes de IA en los sitios web y qué necesita un sitio para estar listo.

La web agéntica es la parte de la web que usan agentes de IA en lugar de personas: rastreadores que leen páginas para búsqueda y entrenamiento, asistentes que obtienen una página porque alguien lo pidió, y navegadores agénticos como Perplexity Comet, ChatGPT Atlas y el modo Copilot de Microsoft Edge que hacen clic, rellenan formularios y compran en nombre de una persona. Un sitio está listo cuando los agentes pueden alcanzarlo, leerlo, saber qué permite y verificar quién lo opera.

¿Pueden alcanzarlo los agentes?

La página tal como la recibe cada identidad de rastreador y asistente de IA, comparada con un navegador: rechazada, con desafío, más pobre o idéntica.

Ver esta sección en un informe real: Permisos de rastreadores →

Qué se le dice a un agente

La respuesta firmada que un agente obtiene sobre el sitio antes de actuar: una decisión para leer, citar, conectar y transaccionar.

Ver esta sección en un informe real: Qué recibe cada rastreador →

Qué declara

robots.txt, llms.txt, agents.md, el sitemap y cualquier tarjeta MCP o API, cada uno leído y comprobado.

Ver esta sección en un informe real: Archivos para máquinas →

Instrucciones a los agentes

Qué le dicen los archivos del sitio a un agente que haga, y si algo de ello contradice a robots.txt.

Ver esta sección en un informe real: Instrucciones para agentes →

Qué hace un sitio al respecto

  1. Ser alcanzableAsegúrate de que los rastreadores y asistentes de IA que quieres reciben la misma página que un navegador. La protección contra bots es el motivo más común de que no sea así.
  2. Ser legiblePon el contenido en el HTML, no solo en JavaScript, y publica llms.txt para que un agente encuentre las páginas que importan.
  3. Declarar lo que permitesrobots.txt para rastreadores, y agents.md o una tarjeta MCP para los agentes que actúan, de modo que haya una única política declarada.
  4. Ser verificableRegistra el sitio gratis y los agentes que pregunten por él sabrán, en una respuesta firmada que pueden comprobar, que su propietario está verificado.

Los propietarios de sitios empiezan por el escaneo gratuito: para sitios, robots.txt para rastreadores de IA, auditoría de llms.txt, el registro. El término en sí: web agéntica, definida.

Construido y publicado

Las capas en las que un agente puede confiar.

Cada tarjeta es un recuento en vivo o un artefacto publicado, con la página que permite comprobarlo.

Archivos

Cada archivo legible por máquina en crawlcheck.io, y cómo comprobarlo.

Cada archivo responde con el tipo de medio indicado. La comprobación es un comando que ejecuta usted mismo: los archivos firmados pasan por el verificador sin conexión, el resto por un analizador o un campo que debe estar presente. El verificador es /crawlcheck-verify.mjs.

FileServed asWhat it is, and the check
Discovery
/robots.txttext/plainCrawl rules for every named crawler plus Content Signals (search, ai-input, ai-train preferences).
curl -s 'https://crawlcheck.io/api/tool/robots?domain=crawlcheck.io' | jq '.tally, .shadowed_groups'
/sitemap.xmlalso /sitemap-pages.xml, /sitemap-glossary.xml, /sitemap-directory.xml, /sitemap-registry.xml, /sitemap-certificates.xmlapplication/xmlSitemap index: pages, glossary, directory, registry and certificates sitemaps.
curl -s https://crawlcheck.io/sitemap.xml | xmllint --noout - && echo valid
/llms.txttext/plainThe site for language models: what CrawlCheck is and every page worth reading, by door.
curl -s https://crawlcheck.io/llms.txt | sed -n '1p;3p'
/llms-full.txttext/markdownThe full technical guide for agents and developers in one Markdown file.
curl -s https://crawlcheck.io/llms-full.txt | grep -c '^## '
/agents.mdalso /AGENTS.mdtext/markdownHow an agent should use CrawlCheck: the core calls, the site by door, the rules.
curl -s https://crawlcheck.io/agents.md | head -1
/SKILL.mdalso /.well-known/agent-skills/crawlcheck/SKILL.mdtext/markdownAgent skill file: when to call CrawlCheck and how, with YAML front matter.
curl -s https://crawlcheck.io/SKILL.md | sed -n '2p'
/.well-known/agent-skills/index.jsonapplication/jsonAgent Skills discovery index pointing at SKILL.md.
curl -s https://crawlcheck.io/.well-known/agent-skills/index.json | jq -e '.skills[0].name'
/for-agents.mdtext/markdownThis page as Markdown. Any page also answers Accept: text/markdown.
curl -s -H 'Accept: text/markdown' https://crawlcheck.io/for-agents | head -1
APIs
/.well-known/api-catalogapplication/linkset+jsonAPI catalog (RFC 9727): every API with its description, docs and status links.
curl -s https://crawlcheck.io/.well-known/api-catalog | jq -e '.linkset | length'
/openapi.jsonalso /swagger.json, /.well-known/openapi.jsonapplication/jsonOpenAPI description of every documented operation, each with a worked example.
npx -y @redocly/cli lint https://crawlcheck.io/openapi.json
/openapi.yamlapplication/yamlThe same OpenAPI description for YAML tooling (JSON is valid YAML 1.2).
curl -s https://crawlcheck.io/openapi.yaml | python3 -c 'import sys,yaml;print(len(yaml.safe_load(sys.stdin)["paths"]))'
/.well-known/mcp/server-card.jsonalso /.well-known/mcp.jsonapplication/jsonMCP server card: the remote MCP endpoint, its tools and auth.
curl -s https://crawlcheck.io/.well-known/mcp/server-card.json | jq -e '.serverInfo.name'
/.well-known/agent-card.jsonalso /.well-known/agent.jsonapplication/jsonA2A agent card: skills, endpoint and protocol version.
curl -s https://crawlcheck.io/.well-known/agent-card.json | jq -e '.protocolVersion'
/schemas/resolve.jsonapplication/schema+jsonJSON Schema for a Resolve answer, to validate one before acting on it.
curl -s https://crawlcheck.io/schemas/resolve.json -o s.json && curl -s 'https://crawlcheck.io/api/v1/resolve?domain=example.com' -o a.json && npx -y ajv-cli validate --spec=draft2020 --strict=false -s s.json -d a.json
Signed
/.well-known/crawlcheck.jsonapplication/jsonThis page as a signed manifest: purpose, core calls, keys.
curl -s https://crawlcheck.io/.well-known/crawlcheck.json -o m.json && node crawlcheck-verify.mjs m.json --online
/.well-known/crawlcheck-staple.jsonapplication/jsoncrawlcheck.io's own signed Resolve answer, stapled so an agent needs no second call.
curl -s https://crawlcheck.io/.well-known/crawlcheck-staple.json | jq .answer > a.json && node crawlcheck-verify.mjs a.json --online
/crawlcheck-verify.mjstext/javascriptThe offline verifier: zero dependencies, Node 20+. Checks signatures, digests and log inclusion.
curl -sO https://crawlcheck.io/crawlcheck-verify.mjs && node crawlcheck-verify.mjs m.json --online
Keys and identity
/.well-known/http-message-signatures-directoryapplication/http-message-signatures-directory+jsonWeb Bot Auth key directory (Ed25519) for requests CrawlCheck signs. The response itself is signed.
curl -sD - https://crawlcheck.io/.well-known/http-message-signatures-directory | grep -i '^signature'
/.well-known/signature-agent-cardapplication/jsonSignature agent card: who signs, contact, the key directory.
curl -s https://crawlcheck.io/.well-known/signature-agent-card | jq -e '.client_name'
/.well-known/key-transparency.jsonapplication/jsonEvery signing key ever published, with when it was used.
curl -s https://crawlcheck.io/.well-known/key-transparency.json | jq '.entries | length'
/.well-known/security-key-rotation.jsonapplication/jsonKey rotation record: current key, previous keys, the rotation rule.
curl -s https://crawlcheck.io/.well-known/security-key-rotation.json | jq -e '.directory'
/.well-known/ips.jsonapplication/jsonThe IP ranges CrawlCheck crawls from (it owns none; it runs on Cloudflare's network).
curl -s https://crawlcheck.io/.well-known/ips.json | jq '.prefixes'
/.well-known/crawlcheck-observers.jsonapplication/jsonEvery observer that takes readings, with its class and status.
curl -s https://crawlcheck.io/.well-known/crawlcheck-observers.json | jq '.observers | length'
/.well-known/media-kit.jsonapplication/ld+jsonOrganization, people and brand as a schema.org graph (the media-kit standard).
curl -s https://crawlcheck.io/.well-known/media-kit.json | jq -e '."@graph"[0]."@type"'
/entitymap.jsonapplication/jsonEntityMap: the business, its identifiers and sameAs links. A readable copy is at /entitymap.html.
curl -s https://crawlcheck.io/entitymap.json | jq -e '.publisher.name'
/ns.jsonldapplication/ld+jsonThe CrawlCheck vocabulary: terms used in signed answers, as RDF.
curl -s https://crawlcheck.io/ns.jsonld | jq '."@context" | keys | length'
/.well-known/security.txtalso /security.txttext/plainSecurity contact and disclosure policy (RFC 9116), with an expiry date.
curl -s https://crawlcheck.io/.well-known/security.txt | grep -E '^(Contact|Expires):'
/.well-known/agentic-verify.txttext/plainA fixed domain-ownership token an outside directory asked us to publish.
curl -s https://crawlcheck.io/.well-known/agentic-verify.txt | wc -c
/subprocessors.jsonapplication/jsonEvery service that processes data for CrawlCheck, with its purpose and region.
curl -s https://crawlcheck.io/subprocessors.json | jq '.services | length'
Data
/feed.jsonapplication/feed+jsonEvery finding and guide as a JSON Feed, each item linking its Markdown copy.
curl -s https://crawlcheck.io/feed.json | jq '.items | length'
/feed.xmlapplication/atom+xmlThe same findings and guides as an Atom feed.
curl -s https://crawlcheck.io/feed.xml | xmllint --noout - && echo valid
/glossary.jsonapplication/ld+jsonThe whole glossary as a schema.org DefinedTermSet (CC BY 4.0).
curl -s https://crawlcheck.io/glossary.json | jq '.hasDefinedTerm | length'
/ai-crawlers.jsonapplication/jsonEvery AI and search crawler CrawlCheck tracks: token, operator, purpose, how to verify it.
curl -s https://crawlcheck.io/ai-crawlers.json | jq '.agents | length'
/directory.jsonapplication/jsonThe measured vendor directory: each vendor's own site, graded (CC BY 4.0).
curl -s https://crawlcheck.io/directory.json | jq '.measured_n'
/directory.csvtext/csvThe same directory as CSV, one row per vendor.
curl -s https://crawlcheck.io/directory.csv | head -1
/api/glossary/cadenceapplication/jsonGlossary terms added each week, and the weekly streak.
curl -s https://crawlcheck.io/api/glossary/cadence | jq '.this_week'

Legible por máquinas

Qué no es una respuesta

Una respuesta firmada dice qué midió y decidió CrawlCheck, y cuándo. No es una garantía sobre el sitio. Comprueba fresh_until: pasado ese momento, la respuesta está caducada. Las disputas y correcciones son públicas en /disputes.

Preguntas sobre esta página

Q¿Existe un servicio que diga a los agentes de IA si un sitio es de fiar?
Sí. CrawlCheck devuelve una respuesta firmada por sitio: qué recibió de verdad cada rastreador de IA, qué declara el sitio, si su propietario ha demostrado el control, si imita una marca conocida, y una decisión para cada acción — leer, citar, conectar, transaccionar y administrar. Es gratis, no necesita clave y puede comprobarse sin conexión.
Q¿Cómo puede un agente de IA verificar que un sitio es seguro antes de actuar en él?
Preguntar antes de actuar: GET /api/v1/resolve?domain= devuelve la respuesta firmada, y POST /api/v1/preflight devuelve una única decisión para una acción, con un recibo que el sitio puede comprobar. El agente verifica la firma con la clave publicada y después sigue la decisión — y trata los pagos, los inicios de sesión y todo lo irreversible como algo que necesita a un humano.
Q¿CrawlCheck dice que un sitio es seguro?
Dice qué se midió y cuándo, y decide por acción según reglas publicadas. Nunca certifica una transacción: cualquier acción financiera, de identidad o irreversible se marca para que la confirme un humano.
Q¿Cómo lo uso desde un agente?
Con HTTP simple, con los SDK de npm y PyPI, o con el servidor MCP en crawlcheck.io/mcp, listado en el registro MCP oficial. No hace falta clave para la respuesta firmada, la decisión de preflight ni el escaneo gratuito.
Q¿Qué es la web agéntica?
La web tal como la usan los agentes de IA que actúan por personas: rastreadores que leen páginas para búsqueda y entrenamiento, asistentes que obtienen una página porque alguien lo pidió, y navegadores agénticos como Perplexity Comet, ChatGPT Atlas y el modo Copilot de Microsoft Edge que hacen clic, rellenan formularios y completan tareas.
Q¿Cómo aparecen los navegadores agénticos ante un sitio web?
Normalmente como un navegador corriente basado en Chrome, porque eso es lo que son. Los grupos de robots.txt escritos para rastreadores nombrados como GPTBot no los alcanzan, y por eso un sitio que quiera saber si un agente está actuando necesita una comprobación que no dependa solo de la cadena user-agent.
QTengo un sitio web. ¿Cómo me aseguro de que los agentes confíen en él?
Asegúrate de que los rastreadores de IA reciben la misma página que un navegador, pon el contenido en el HTML, publica llms.txt y un robots.txt claro, declara cualquier interfaz para agentes y registra el sitio gratis para que cada respuesta firmada diga quién lo opera. El escaneo gratuito comprueba cada uno de estos puntos.