{
 "id": "verify-crawler",
 "endpoint": "https://www.pathwren.workers.dev/tools/verify-crawler",
 "title": "Does this address really belong to the crawler it claims to be?",
 "what": "Check one or more IP addresses against every crawler prefix the operators themselves publish (Google, OpenAI, Anthropic, Microsoft, Apple, Perplexity, Amazon and the rest, remirrored every six hours), and — when you name the crawler the client claimed to be — say whether the range that contains it belongs to that operator or to a different one.",
 "auth": "none — no account, no key, no handshake, no session",
 "method": "GET",
 "cors": "*",
 "cache_seconds": 300,
 "parameters": [
  {
   "name": "ip",
   "aliases": [
    "address",
    "addresses"
   ],
   "required": true,
   "repeatable": true,
   "what": "IPv4 or IPv6 address. Repeat the parameter, or send a comma/space separated list. Up to 500 per call.",
   "becomes": "addresses[].ip"
  },
  {
   "name": "ua",
   "aliases": [
    "claim",
    "user_agent"
   ],
   "required": false,
   "repeatable": false,
   "what": "The crawler the client claimed to be — a product token like GPTBot or a whole User-Agent header. Applied to every address in the call.",
   "becomes": "addresses[].claim"
  }
 ],
 "example": {
  "url": "https://www.pathwren.workers.dev/tools/verify-crawler?ip=66.249.66.1&ua=Googlebot&s=client-dossiers",
  "curl": "curl -s 'https://www.pathwren.workers.dev/tools/verify-crawler?ip=66.249.66.1&ua=Googlebot&s=client-dossiers'",
  "what_it_answers": "An address inside a range Google publishes, with a claim that matches it: verdict in-a-published-range, claim_check.consistent_with_the_ranges true."
 },
 "same_answer_over_mcp": {
  "server": "crawler-ip-verifier",
  "endpoint": "https://www.pathwren.workers.dev/mcp/netcheck",
  "method": "tools/call",
  "tool": "verify_batch",
  "note": "The GET endpoint calls this tool in-process through the MCP server's own JSON-RPC envelope. One implementation, two doors."
 },
 "caveats": [
  "A published prefix is the operator's network, not a signature: presence is consistent with the claim, absence proves nothing at all. Of the crawlers in this index only a minority publish ranges; several document reverse DNS instead, and the rest publish no verification method.",
  "No DNS lookup is performed here and no request leaves this host. Reverse-DNS verification is handed back as the exact command to run, never as a result — ask /tools/verification-methods which case a crawler is in."
 ],
 "docs": "https://www.pathwren.workers.dev/tools/verify-crawler.html?s=client-dossiers",
 "catalogue": "https://www.pathwren.workers.dev/tools/index.json?s=client-dossiers",
 "license": "CC0-1.0",
 "independent": true
}