{
 "tool": "verify-crawler",
 "endpoint": "https://www.pathwren.workers.dev/tools/verify-crawler",
 "asked": {
  "ip": "20.171.206.5"
 },
 "summary": "1 address(es) checked against 1987 IPv4 + 1062 IPv6 prefixes from 15 operator sources (mirrored 2026-09-06T02:46:29+00:00).\n1 inside a published range, 0 not, 0 invalid.\n\n20.171.206.5: 20.171.206.0/24 (openai-gptbot)\n\nA published prefix is the operator's network, not a signature: presence means the address is inside a range the operator publishes for that crawler, and you should still check the user-agent. ABSENCE PROVES NOTHING — most indexed crawlers publish no ranges at all, and several document reverse DNS instead. Call verification_methods before concluding anything from a miss.",
 "answer": {
  "checked": 1,
  "matched": 1,
  "unmatched": 0,
  "invalid": 0,
  "by_source": {
   "openai-gptbot": 1
  },
  "results": [
   {
    "ip": "20.171.206.5",
    "valid": true,
    "verdict": "in-a-published-range",
    "matches": [
     {
      "prefix": "20.171.206.0/24",
      "source": "openai-gptbot",
      "operator_source_url": "https://openai.com/gptbot.json",
      "mirrored_at": "2026-09-06T02:46:24+00:00",
      "crawlers": [
       {
        "slug": "gptbot",
        "name": "GPTBot",
        "operator": "OpenAI",
        "expected_user_agent_substring": "GPTBot"
       }
      ]
     }
    ],
    "claim_check": null
   }
  ],
  "checked_against": {
   "sources": 15,
   "sources_ok": 15,
   "ipv4_prefixes": 1987,
   "ipv6_prefixes": 1062,
   "mirrored_at": "2026-09-06T02:46:29+00:00",
   "endpoint": "https://www.pathwren.workers.dev/ip-ranges/all.json",
   "refresh": "every 6 hours; each operator list is fetched, hashed and compared with the previous fetch"
  },
  "means": "A published prefix is the operator's network, not a signature: presence means the address is inside a range the operator publishes for that crawler, and you should still check the user-agent. ABSENCE PROVES NOTHING — most indexed crawlers publish no ranges at all, and several document reverse DNS instead. Call verification_methods before concluding anything from a miss.",
  "source": "https://www.pathwren.workers.dev/mcp/netcheck"
 },
 "answered_by": {
  "note": "The MCP tool itself answered this. One implementation, two doors — this endpoint holds no copy of it.",
  "server": "crawler-ip-verifier",
  "endpoint": "https://www.pathwren.workers.dev/mcp/netcheck",
  "tool": "verify_batch",
  "protocol": "MCP streamable-http, JSON-RPC 2.0 tools/call"
 },
 "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",
 "more": {
  "who actually crawls this host": "https://www.pathwren.workers.dev/bot/index.html?s=client-dossiers",
  "every named client as one file": "https://www.pathwren.workers.dev/data/observed-clients.json?s=client-dossiers"
 },
 "auth": "none — no account, no key, no handshake. CORS open, cacheable, CC0-1.0.",
 "license": "CC0-1.0",
 "independent": true,
 "_about": {
  "page": "https://www.pathwren.workers.dev/bot/claudebot.html?s=client-dossiers",
  "what": "What this host recorded about the client that made this request — the requests, the status codes and the user-agent string, from its own log. Nothing else: no address is published, nothing is looked up anywhere, and there is no account to close.",
  "matched_on": "the User-Agent header you sent. If we have no page for it yet this points at the index of all of them.",
  "index": "https://www.pathwren.workers.dev/bot/index.html?s=client-dossiers"
 }
}
