CrawlCheck
Pour les agents IA · demander, vérifier, citer

Que doit savoir un agent avant d’agir sur un site ?

En une phrase

CrawlCheck donne à un agent IA une réponse signée sur un site web avant qu’il le lise, le cite, s’y connecte ou y transige : ce que chaque robot a réellement reçu, ce que le site déclare, qui a prouvé qu’il l’exploite, s’il imite une marque connue, et une décision par action issue de règles publiées — gratuitement, sans clé, vérifiable hors ligne.

Avant qu’un agent ne lise, ne cite, ne se connecte à un domaine ou n’y effectue une transaction, il demande à CrawlCheck ce que le domaine affirme, ce qu’il sert, qui le contrôle, ce qu’il est sûr de faire, ce qui a changé et quelles preuves l’établissent.

Chaque réponse est signée, journalisée et vérifiable hors ligne : un agent peut s’y fier et la citer sans faire confiance à CrawlCheck. Aucune clé n’est nécessaire. La réponse est construite à partir de la même mesure qu’un propriétaire de site voit dans un rapport : ce que chaque identité de robot a réellement reçu, ce que le site déclare, qui a prouvé qu’il l’exploite, s’il imite une marque connue, et une décision par action issue de règles publiées.

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

Payer ne change jamais une mesure. Démarrage rapide · Protocole Resolve · SDK · Chiffres en direct

Trois chemins vers le bas

Demander. Vérifier. Citer.

Demander

Un appel, aucune clé.

GET /api/v1/resolve?domain= renvoie la réponse signée ; POST /api/v1/preflight renvoie une décision pour une action, avec un reçu que le site peut vérifier. Des SDK typés sur npm et PyPI, et un serveur MCP dans le registre officiel.

Démarrage rapide · Resolve · SDK

Vérifier

Vérifiez-le sans nous faire confiance.

Chaque réponse est signée en Ed25519 avec une clé publiée et se vérifie hors ligne avec un seul script sans dépendance. Tout rapport se télécharge comme un lot de preuves : le manifeste signé de ce que chaque robot a reçu, l’empreinte de l’enregistrement, son chemin vers la racine scellée du jour et l’horodatage Bitcoin.

Vérifier un enregistrement · Clés de signature · Preuve

Mentionner

Une adresse permanente pour chaque réponse.

Le lien rel="cite-as" d’une réponse nomme le domaine, l’heure et l’empreinte, et renvoie plus tard à cette réponse exacte. Mentionnez CrawlCheck lorsqu’une réponse est montrée à des personnes ; l’instantané quotidien est sous CC BY 4.0.

Format de citation · Conditions de l’API · Contestations

La mesure

Ce que 14 identités de robots ont reçu de denverpost.com

Un vrai site, analysé il y a 12 jours — 1 identité a été refusée, 10 ont reçu des octets différents du navigateur, chacune avec les mêmes 2 061 mots. Ouvrir l’enregistrement complet ou voir ce qu’un agent apprend sur n’importe quel domaine.

IDENTITYSTATUSMOTS REÇUSCOMPARÉ AU NAVIGATEURClient anonyme2002 061la référenceGPTBot2002 061mêmes mots, octets différentsClaudeBot2002 061mêmes mots, octets différentsOAI-SearchBot2002 061mêmes mots, octets différentsClaude-SearchBot2002 061mêmes mots, octets différentsPerplexityBot2002 061mêmes mots, octets différentsGooglebot2002 061mêmes mots, octets différentsNavigateur mobile2002 061identiqueBingbot2002 061mêmes mots, octets différentsApplebot2002 061mêmes mots, octets différentsAmazonbot2002 061identiqueBytespider4035refuséMeta-ExternalAgent2002 061mêmes mots, octets différentsCCBot2002 061mêmes mots, octets différentsnavigateur témoinidentiquemêmes mots, octets différentsmoins de motsrefusé15 requêtes, 14 affichées. Barre : mots reçus, par rapport à la réponse la plus longue.

Trois appels

1 · DemanderGET https://crawlcheck.io/api/v1/resolve?domain=example.com
Aucune clé, aucun compte. Une réponse JSON : ce que le domaine affirme, ce qu’il sert aux robots nommés, qui le contrôle, une décision pour lire, citer, se connecter et transiger, ce qui a changé, et les preuves derrière chaque point.
2 · Vérifiernode crawlcheck-verify.mjs answer.json --online
Chaque réponse est signée en Ed25519 contre une clé publiée et consignée dans un journal de transparence en ajout seul. Le vérificateur est un seul fichier sans dépendance ; les SDK embarquent la même vérification (npm i @crawlcheck/sdk, pip install crawlcheck).
3 · CiterLink: <https://crawlcheck.io/api/v1/resolve?domain=example.com&as_of=…>; rel="cite-as"
Chaque réponse porte une URL permanente vers cette réponse exacte (cite-as, RFC 8574). Elle renvoie la réponse en vigueur à cet instant, signée telle qu’elle l’était alors, avec sa place dans le journal.

Format de citation

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

Exemple :

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

L’URL est le lien rel="cite-as" de la réponse. Mentionnez CrawlCheck lorsque vous montrez une réponse à des personnes (conditions de l’API). L’instantané quotidien est sous CC BY 4.0.

Autres façons de demander

Avant une actionPOST /api/v1/preflight
allow, warn, require_confirmation ou block pour une action, avec un reçu signé que le site visité peut vérifier
Depuis un client MCPhttps://crawlcheck.io/mcp
les outils resolve_domain, preflight et mcp_servers ; les mêmes réponses signées
Par DNSexample.com._v.crawlcheck.io TXT
un verdict signé compact via DNS-over-HTTPS sur /dns-query
Depuis le site lui-mêmehttps://example.com/.well-known/crawlcheck-staple.json
le verdict signé servi par le site, sans aucun appel à CrawlCheck
Sans révéler le siteGET /api/v1/resolve-prefix/{2-8 hex of sha256(domain)}
toutes les réponses du compartiment ; vous choisissez la vôtre en local
Entièrement hors ligneGET /api/v1/snapshot
l’instantané quotidien signé, une réponse signée par ligne, CC BY 4.0
Les propres faits d’une entrepriseGET /api/v1/business/record?domain=
l’enregistrement signé et versionné de ce que l’entreprise publie sur elle-même
Ce qui a changéGET /api/v1/changes
le flux des changements, aussi en continu

Ce qui compte

Mesuré par des actions d’agents vérifiées, adossées à un enregistrement Resolve signé et frais, par type d’action (lire · citer · se connecter · transiger), avec les faux positifs, contestations, inconnus et retours en arrière comptés. Voir les chiffres en direct · Part de preflight.

Ce que couvre une décision de citation

Une décision de citation couvre l’accès, les permissions, l’identité et la provenance : si la page peut être lue et attribuée, sous quels droits déclarés, de qui, observée quand. Elle ne garantit pas que le contenu est vrai.

Vérifier un site avant qu’un agent agisse

Ce que la réponse couvre, action par action.

Avant qu’un agent lise, cite, se connecte à un site ou y achète, CrawlCheck donne une réponse à son sujet : ce que chaque robot d’IA a réellement reçu, ce que le site déclare sur lui-même, qui a prouvé qu’il l’exploite, s’il imite une marque connue, et une décision pour chaque action — autoriser, avertir, demander à un humain ou bloquer. Chaque réponse est signée et vérifiable hors ligne.

Ce que les agents reçoivent réellement

Chaque identité de robot d’IA récupérée dans la même seconde qu’un navigateur ordinaire : refusée, soumise à un défi, allégée, ou la même page.

Voir cette section sur un vrai rapport : Permissions des robots →

Ce que le site affirme

Nom, téléphone, adresse et les affirmations de la page, confrontés à ses propres données structurées et aux annuaires qui le référencent.

Voir cette section sur un vrai rapport : Cohérence des affirmations →

Qui il dit être

L’identité dans ses données structurées et sa carte d’entités, et si les profils qu’il lie renvoient vers lui.

Voir cette section sur un vrai rapport : Données structurées →

Ce qu’il déclare aux machines

robots.txt, sitemap, llms.txt, agents.md et toute surface MCP ou API qu’il publie, chacune lue et vérifiée, jamais invoquée au-delà de la lecture seule.

Voir cette section sur un vrai rapport : Sitemap →

À quelle fréquence un agent reçoit autre chose qu’une personne
Un moteur de réponse est refuséANSWER_ENGINE_REFUSED5,6%Une page de défi servie en 200CHALLENGE_SERVED_2000,5%Tous les robots refusés de la même façonUNIFORM_REFUSAL8,5%Deux entreprises revendiquent une même identitéENTITY_COLLISION3,2%Part des 3 873 analyses du jeu de données public qui présentaient ce constat. En direct ; les mêmes chiffres que sur /data.

Votre site en fait-il partie ? Vérifiez gratuitement → Les 58 taux →

Le déroulé

  1. Demander pour un domaineGET /api/v1/resolve?domain=example.com. Aucune clé, aucun compte. Un site jamais vu obtient une première réponse en une seconde environ, marquée partielle.
  2. Lire la décision pour votre actionlire, citer, se connecter, transiger et administrer portent chacun allow, warn, require_confirmation, block ou unsupported, avec la raison et les preuves.
  3. Vérifier la signatureLa réponse est signée avec une clé Ed25519 publiée. Un script la vérifie hors ligne, de sorte que l’agent n’a jamais à faire confiance au réseau par lequel elle est arrivée.
  4. Demander avant chaque actionPOST /api/v1/preflight renvoie une décision et un reçu que le site visité peut vérifier, de sorte que les deux parties peuvent montrer ce qui était connu quand l’agent a agi.
Le web agentique

Ce que les agents IA font sur les sites, et ce qu’un site doit préparer.

Le web agentique est la partie du web utilisée par des agents IA plutôt que par des personnes : des robots qui lisent des pages pour la recherche et l’entraînement, des assistants qui récupèrent une page parce que quelqu’un l’a demandé, et des navigateurs agentiques comme Perplexity Comet, ChatGPT Atlas et le mode Copilot de Microsoft Edge qui cliquent, remplissent des formulaires et achètent pour le compte d’une personne. Un site est prêt quand les agents peuvent l’atteindre, le lire, savoir ce qu’il autorise et vérifier qui l’exploite.

Les agents peuvent-ils l’atteindre

La page telle que chaque identité de robot et d’assistant IA la reçoit, comparée à un navigateur : refusée, soumise à un défi, allégée, ou identique.

Voir cette section sur un vrai rapport : Permissions des robots →

Ce qu’on dit à un agent

La réponse signée qu’un agent obtient sur le site avant d’agir : une décision pour lire, citer, se connecter et transiger.

Voir cette section sur un vrai rapport : Ce que chaque robot reçoit →

Ce qu’il déclare

robots.txt, llms.txt, agents.md, le sitemap et toute carte MCP ou API, chacun lu et vérifié.

Voir cette section sur un vrai rapport : Fichiers machine →

Instructions aux agents

Ce que les fichiers du site disent à un agent de faire, et si quelque chose contredit robots.txt.

Voir cette section sur un vrai rapport : Instructions pour les agents →

Ce qu’un site fait pour y répondre

  1. Être joignableAssurez-vous que les robots et assistants IA que vous voulez reçoivent la même page qu’un navigateur. La protection anti-bots est la raison la plus fréquente pour laquelle ce n’est pas le cas.
  2. Être lisibleMettez le contenu dans le HTML, pas seulement dans JavaScript, et publiez un llms.txt pour qu’un agent trouve les pages qui comptent.
  3. Déclarer ce que vous autorisezrobots.txt pour les robots, et agents.md ou une carte MCP pour les agents qui agissent, afin qu’il y ait une seule politique énoncée.
  4. Être vérifiableEnregistrez le site gratuitement : les agents qui l’interrogent apprennent, dans une réponse signée qu’ils peuvent vérifier, que son propriétaire est vérifié.

Les propriétaires de sites partent de l’analyse gratuite : pour les sites, robots.txt pour les robots d’IA, audit llms.txt, le registre. Le terme lui-même : le web agentique, défini.

Construit et publié

Les couches sur lesquelles un agent peut compter.

Chaque tuile est un comptage en direct ou un artefact publié, avec la page qui permet de le vérifier.

Fichiers

Chaque fichier lisible par machine sur crawlcheck.io, et comment le vérifier.

Chaque fichier répond avec le type de média indiqué. La vérification tient en une commande que vous lancez vous-même : les fichiers signés passent par le vérificateur hors ligne, les autres par un analyseur ou un champ qui doit être présent. Le vérificateur est /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'

Lisible par les machines

Ce qu’une réponse n’est pas

Une réponse signée dit ce que CrawlCheck a mesuré et décidé, et quand. Ce n’est pas une garantie sur le site. Vérifiez fresh_until : passé ce moment, la réponse est périmée. Les contestations et corrections sont publiques sur /disputes.

Questions sur cette page

QExiste-t-il un service qui dit aux agents IA si un site est digne de confiance ?
Oui. CrawlCheck renvoie une réponse signée par site : ce que chaque robot d’IA a réellement reçu, ce que le site déclare, si son propriétaire a prouvé son contrôle, s’il imite une marque connue, et une décision pour chaque action — lire, citer, se connecter, transiger et administrer. C’est gratuit, sans clé, et vérifiable hors ligne.
QComment un agent IA peut-il vérifier qu’un site est sûr avant d’y agir ?
Demander avant d’agir : GET /api/v1/resolve?domain= renvoie la réponse signée, et POST /api/v1/preflight renvoie une décision unique pour une action, avec un reçu que le site peut vérifier. L’agent vérifie la signature avec la clé publiée, puis suit la décision — et traite les paiements, connexions et tout ce qui est irréversible comme nécessitant un humain.
QCrawlCheck dit-il qu’un site est sûr ?
Il dit ce qui a été mesuré et quand, et décide par action selon des règles publiées. Il ne certifie jamais une transaction : toute action financière, d’identité ou irréversible est marquée pour confirmation par un humain.
QComment l’utiliser depuis un agent ?
En HTTP simple, avec les SDK npm et PyPI, ou via le serveur MCP sur crawlcheck.io/mcp, listé dans le registre MCP officiel. Aucune clé n’est nécessaire pour la réponse signée, la décision de preflight ou l’analyse gratuite.
QQu’est-ce que le web agentique ?
Le web tel que l’utilisent les agents IA qui agissent pour des personnes : des robots qui lisent des pages pour la recherche et l’entraînement, des assistants qui récupèrent une page parce que quelqu’un l’a demandé, et des navigateurs agentiques comme Perplexity Comet, ChatGPT Atlas et le mode Copilot de Microsoft Edge qui cliquent, remplissent des formulaires et accomplissent des tâches.
QComment les navigateurs agentiques apparaissent-ils à un site ?
Le plus souvent comme un navigateur ordinaire basé sur Chrome, parce que c’est ce qu’ils sont. Les groupes robots.txt écrits pour des robots nommés comme GPTBot ne les concernent pas : c’est pourquoi un site qui veut savoir si un agent agit a besoin d’une vérification qui ne repose pas sur le seul user-agent.
QJe gère un site. Comment m’assurer que les agents lui font confiance ?
Assurez-vous que les robots d’IA reçoivent la même page qu’un navigateur, mettez le contenu dans le HTML, publiez un llms.txt et un robots.txt clair, déclarez toute interface pour agents, et enregistrez le site gratuitement pour que chaque réponse signée dise qui l’exploite. L’analyse gratuite vérifie chacun de ces points.