{
 "tool": "verification-methods",
 "endpoint": "https://www.pathwren.workers.dev/tools/verification-methods",
 "asked": {
  "crawler": "google"
 },
 "summary": "26 crawler(s) matching \"google\".\n\nBy method: published ranges 24, reverse DNS 0, none 2.\n\nGoogle-Extended (Google): none — The operator publishes no verification method for this crawler. Neither a prefix check nor reverse DNS can confirm it; the user-agent is the only claim available, and it is only a claim.\n\nGooglebot (Google): published-ranges — Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/googlebot.json; this server mirrors it (170 IPv4 + 147 IPv6 prefixes, last fetched 2026-09-14T03:51:05+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.\n\nGoogleOther (Google): published-ranges — Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/special-crawlers.json; this server mirrors it (136 IPv4 + 136 IPv6 prefixes, last fetched 2026-09-14T03:51:05+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.\n\nGoogle-CloudVertexBot (Google): published-ranges — Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/special-crawlers.json; this server mirrors it (136 IPv4 + 136 IPv6 prefixes, last fetched 2026-09-14T03:51:05+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.\n\nGoogle-InspectionTool (Google): published-ranges — Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/special-crawlers.json; this server mirrors it (136 IPv4 + 136 IPv6 prefixes, last fetched 2026-09-14T03:51:05+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.\n\nGooglebot-Image (Google): published-ranges — Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/googlebot.json; this server mirrors it (170 IPv4 + 147 IPv6 prefixes, last fetched 2026-09-14T03:51:05+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.\n\nGooglebot-News (Google): published-ranges — Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/googlebot.json; this server mirrors it (170 IPv4 + 147 IPv6 prefixes, last fetched 2026-09-14T03:51:05+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.\n\nStorebot-Google (Google): published-ranges — Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/special-crawlers.json; this server mirrors it (136 IPv4 + 136 IPv6 prefixes, last fetched 2026-09-14T03:51:05+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.\n\nGooglebot-Video (Google): published-ranges — Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/googlebot.json; this server mirrors it (170 IPv4 + 147 IPv6 prefixes, last fetched 2026-09-14T03:51:05+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.\n\nGoogleOther-Image (Google): published-ranges — Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/special-crawlers.json; this server mirrors it (136 IPv4 + 136 IPv6 prefixes, last fetched 2026-09-14T03:51:05+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.\n\nGoogleOther-Video (Google): published-ranges — Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/special-crawlers.json; this server mirrors it (136 IPv4 + 136 IPv6 prefixes, last fetched 2026-09-14T03:51:05+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.\n\nAPIs-Google (Google): published-ranges — Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/special-crawlers.json; this server mirrors it (136 IPv4 + 136 IPv6 prefixes, last fetched 2026-09-14T03:51:05+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.\n\nAdsBot-Google (Google): published-ranges — Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/special-crawlers.json; this server mirrors it (136 IPv4 + 136 IPv6 prefixes, last fetched 2026-09-14T03:51:05+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.\n\nAdsBot-Google-Mobile (Google): published-ranges — Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/special-crawlers.json; this server mirrors it (136 IPv4 + 136 IPv6 prefixes, last fetched 2026-09-14T03:51:05+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.\n\nAdsBot-Google-Mobile-Apps (Google): published-ranges — Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/special-crawlers.json; this server mirrors it (136 IPv4 + 136 IPv6 prefixes, last fetched 2026-09-14T03:51:05+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.\n\nMediapartners-Google (Google): published-ranges — Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/special-crawlers.json; this server mirrors it (136 IPv4 + 136 IPv6 prefixes, last fetched 2026-09-14T03:51:05+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.\n\nGoogle-Safety (Google): none — The operator publishes no verification method for this crawler. Neither a prefix check nor reverse DNS can confirm it; the user-agent is the only claim available, and it is only a claim.\n\nFeedFetcher-Google (Google): published-ranges — Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/user-triggered-fetchers.json; this server mirrors it (529 IPv4 + 529 IPv6 prefixes, last fetched 2026-09-14T03:51:06+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.\n\nGoogle-Read-Aloud (Google): published-ranges — Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/user-triggered-fetchers.json; this server mirrors it (529 IPv4 + 529 IPv6 prefixes, last fetched 2026-09-14T03:51:06+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.\n\nGoogle-Site-Verification (Google): published-ranges — Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/user-triggered-fetchers.json; this server mirrors it (529 IPv4 + 529 IPv6 prefixes, last fetched 2026-09-14T03:51:06+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.\n\nGoogle-CWS (Google): published-ranges — Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/user-triggered-fetchers.json; this server mirrors it (529 IPv4 + 529 IPv6 prefixes, last fetched 2026-09-14T03:51:06+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.\n\nGoogle-Pinpoint (Google): published-ranges — Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/user-triggered-fetchers.json; this server mirrors it (529 IPv4 + 529 IPv6 prefixes, last fetched 2026-09-14T03:51:06+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.\n\nGoogleProducer (Google): published-ranges — Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/user-triggered-fetchers.json; this server mirrors it (529 IPv4 + 529 IPv6 prefixes, last fetched 2026-09-14T03:51:06+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.\n\nGoogleMessages (Google): published-ranges — Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/user-triggered-fetchers.json; this server mirrors it (529 IPv4 + 529 IPv6 prefixes, last fetched 2026-09-14T03:51:06+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.\n\nGoogle-GeminiNotebook (Google): published-ranges — Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/user-triggered-fetchers.json; this server mirrors it (529 IPv4 + 529 IPv6 prefixes, last fetched 2026-09-14T03:51:06+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.\n\nGoogle-Agent (Google): published-ranges — Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/user-triggered-agents.json; this server mirrors it (3 IPv4 + 1 IPv6 prefixes, last fetched 2026-09-14T03:51:08+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.",
 "answer": {
  "query": "google",
  "crawlers": [
   {
    "slug": "google-extended",
    "name": "Google-Extended",
    "operator": "Google",
    "verification_method": "none",
    "verification_label": "no published verification method",
    "how": "The operator publishes no verification method for this crawler. Neither a prefix check nor reverse DNS can confirm it; the user-agent is the only claim available, and it is only a claim.",
    "published_ip_ranges_url": null,
    "mirrored_prefixes": null,
    "respects_robots_txt": "n-a",
    "user_agent_substring": "(control token only — no crawler)"
   },
   {
    "slug": "googlebot",
    "name": "Googlebot",
    "operator": "Google",
    "verification_method": "published-ranges",
    "verification_label": "published IP ranges",
    "how": "Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/googlebot.json; this server mirrors it (170 IPv4 + 147 IPv6 prefixes, last fetched 2026-09-14T03:51:05+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.",
    "published_ip_ranges_url": "https://developers.google.com/static/search/apis/ipranges/googlebot.json",
    "mirrored_prefixes": {
     "ipv4": 170,
     "ipv6": 147,
     "mirrored_at": "2026-09-14T03:51:05+00:00"
    },
    "respects_robots_txt": "documented",
    "user_agent_substring": "Googlebot"
   },
   {
    "slug": "googleother",
    "name": "GoogleOther",
    "operator": "Google",
    "verification_method": "published-ranges",
    "verification_label": "published IP ranges",
    "how": "Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/special-crawlers.json; this server mirrors it (136 IPv4 + 136 IPv6 prefixes, last fetched 2026-09-14T03:51:05+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.",
    "published_ip_ranges_url": "https://developers.google.com/static/search/apis/ipranges/special-crawlers.json",
    "mirrored_prefixes": {
     "ipv4": 136,
     "ipv6": 136,
     "mirrored_at": "2026-09-14T03:51:05+00:00"
    },
    "respects_robots_txt": "documented",
    "user_agent_substring": "GoogleOther"
   },
   {
    "slug": "google-cloudvertexbot",
    "name": "Google-CloudVertexBot",
    "operator": "Google",
    "verification_method": "published-ranges",
    "verification_label": "published IP ranges",
    "how": "Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/special-crawlers.json; this server mirrors it (136 IPv4 + 136 IPv6 prefixes, last fetched 2026-09-14T03:51:05+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.",
    "published_ip_ranges_url": "https://developers.google.com/static/search/apis/ipranges/special-crawlers.json",
    "mirrored_prefixes": {
     "ipv4": 136,
     "ipv6": 136,
     "mirrored_at": "2026-09-14T03:51:05+00:00"
    },
    "respects_robots_txt": "documented",
    "user_agent_substring": "Google-CloudVertexBot"
   },
   {
    "slug": "google-inspectiontool",
    "name": "Google-InspectionTool",
    "operator": "Google",
    "verification_method": "published-ranges",
    "verification_label": "published IP ranges",
    "how": "Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/special-crawlers.json; this server mirrors it (136 IPv4 + 136 IPv6 prefixes, last fetched 2026-09-14T03:51:05+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.",
    "published_ip_ranges_url": "https://developers.google.com/static/search/apis/ipranges/special-crawlers.json",
    "mirrored_prefixes": {
     "ipv4": 136,
     "ipv6": 136,
     "mirrored_at": "2026-09-14T03:51:05+00:00"
    },
    "respects_robots_txt": "documented",
    "user_agent_substring": "Google-InspectionTool"
   },
   {
    "slug": "googlebot-image",
    "name": "Googlebot-Image",
    "operator": "Google",
    "verification_method": "published-ranges",
    "verification_label": "published IP ranges",
    "how": "Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/googlebot.json; this server mirrors it (170 IPv4 + 147 IPv6 prefixes, last fetched 2026-09-14T03:51:05+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.",
    "published_ip_ranges_url": "https://developers.google.com/static/search/apis/ipranges/googlebot.json",
    "mirrored_prefixes": {
     "ipv4": 170,
     "ipv6": 147,
     "mirrored_at": "2026-09-14T03:51:05+00:00"
    },
    "respects_robots_txt": "documented",
    "user_agent_substring": "Googlebot-Image"
   },
   {
    "slug": "googlebot-news",
    "name": "Googlebot-News",
    "operator": "Google",
    "verification_method": "published-ranges",
    "verification_label": "published IP ranges",
    "how": "Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/googlebot.json; this server mirrors it (170 IPv4 + 147 IPv6 prefixes, last fetched 2026-09-14T03:51:05+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.",
    "published_ip_ranges_url": "https://developers.google.com/static/search/apis/ipranges/googlebot.json",
    "mirrored_prefixes": {
     "ipv4": 170,
     "ipv6": 147,
     "mirrored_at": "2026-09-14T03:51:05+00:00"
    },
    "respects_robots_txt": "documented",
    "user_agent_substring": "Googlebot-News"
   },
   {
    "slug": "storebot-google",
    "name": "Storebot-Google",
    "operator": "Google",
    "verification_method": "published-ranges",
    "verification_label": "published IP ranges",
    "how": "Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/special-crawlers.json; this server mirrors it (136 IPv4 + 136 IPv6 prefixes, last fetched 2026-09-14T03:51:05+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.",
    "published_ip_ranges_url": "https://developers.google.com/static/search/apis/ipranges/special-crawlers.json",
    "mirrored_prefixes": {
     "ipv4": 136,
     "ipv6": 136,
     "mirrored_at": "2026-09-14T03:51:05+00:00"
    },
    "respects_robots_txt": "documented",
    "user_agent_substring": "Storebot-Google"
   },
   {
    "slug": "googlebot-video",
    "name": "Googlebot-Video",
    "operator": "Google",
    "verification_method": "published-ranges",
    "verification_label": "published IP ranges",
    "how": "Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/googlebot.json; this server mirrors it (170 IPv4 + 147 IPv6 prefixes, last fetched 2026-09-14T03:51:05+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.",
    "published_ip_ranges_url": "https://developers.google.com/static/search/apis/ipranges/googlebot.json",
    "mirrored_prefixes": {
     "ipv4": 170,
     "ipv6": 147,
     "mirrored_at": "2026-09-14T03:51:05+00:00"
    },
    "respects_robots_txt": "documented",
    "user_agent_substring": "Googlebot-Video"
   },
   {
    "slug": "googleother-image",
    "name": "GoogleOther-Image",
    "operator": "Google",
    "verification_method": "published-ranges",
    "verification_label": "published IP ranges",
    "how": "Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/special-crawlers.json; this server mirrors it (136 IPv4 + 136 IPv6 prefixes, last fetched 2026-09-14T03:51:05+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.",
    "published_ip_ranges_url": "https://developers.google.com/static/search/apis/ipranges/special-crawlers.json",
    "mirrored_prefixes": {
     "ipv4": 136,
     "ipv6": 136,
     "mirrored_at": "2026-09-14T03:51:05+00:00"
    },
    "respects_robots_txt": "documented",
    "user_agent_substring": "GoogleOther-Image"
   },
   {
    "slug": "googleother-video",
    "name": "GoogleOther-Video",
    "operator": "Google",
    "verification_method": "published-ranges",
    "verification_label": "published IP ranges",
    "how": "Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/special-crawlers.json; this server mirrors it (136 IPv4 + 136 IPv6 prefixes, last fetched 2026-09-14T03:51:05+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.",
    "published_ip_ranges_url": "https://developers.google.com/static/search/apis/ipranges/special-crawlers.json",
    "mirrored_prefixes": {
     "ipv4": 136,
     "ipv6": 136,
     "mirrored_at": "2026-09-14T03:51:05+00:00"
    },
    "respects_robots_txt": "documented",
    "user_agent_substring": "GoogleOther-Video"
   },
   {
    "slug": "apis-google",
    "name": "APIs-Google",
    "operator": "Google",
    "verification_method": "published-ranges",
    "verification_label": "published IP ranges",
    "how": "Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/special-crawlers.json; this server mirrors it (136 IPv4 + 136 IPv6 prefixes, last fetched 2026-09-14T03:51:05+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.",
    "published_ip_ranges_url": "https://developers.google.com/static/search/apis/ipranges/special-crawlers.json",
    "mirrored_prefixes": {
     "ipv4": 136,
     "ipv6": 136,
     "mirrored_at": "2026-09-14T03:51:05+00:00"
    },
    "respects_robots_txt": "own-token-only",
    "user_agent_substring": "APIs-Google"
   },
   {
    "slug": "adsbot-google",
    "name": "AdsBot-Google",
    "operator": "Google",
    "verification_method": "published-ranges",
    "verification_label": "published IP ranges",
    "how": "Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/special-crawlers.json; this server mirrors it (136 IPv4 + 136 IPv6 prefixes, last fetched 2026-09-14T03:51:05+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.",
    "published_ip_ranges_url": "https://developers.google.com/static/search/apis/ipranges/special-crawlers.json",
    "mirrored_prefixes": {
     "ipv4": 136,
     "ipv6": 136,
     "mirrored_at": "2026-09-14T03:51:05+00:00"
    },
    "respects_robots_txt": "own-token-only",
    "user_agent_substring": "AdsBot-Google"
   },
   {
    "slug": "adsbot-google-mobile",
    "name": "AdsBot-Google-Mobile",
    "operator": "Google",
    "verification_method": "published-ranges",
    "verification_label": "published IP ranges",
    "how": "Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/special-crawlers.json; this server mirrors it (136 IPv4 + 136 IPv6 prefixes, last fetched 2026-09-14T03:51:05+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.",
    "published_ip_ranges_url": "https://developers.google.com/static/search/apis/ipranges/special-crawlers.json",
    "mirrored_prefixes": {
     "ipv4": 136,
     "ipv6": 136,
     "mirrored_at": "2026-09-14T03:51:05+00:00"
    },
    "respects_robots_txt": "own-token-only",
    "user_agent_substring": "AdsBot-Google-Mobile"
   },
   {
    "slug": "adsbot-google-mobile-apps",
    "name": "AdsBot-Google-Mobile-Apps",
    "operator": "Google",
    "verification_method": "published-ranges",
    "verification_label": "published IP ranges",
    "how": "Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/special-crawlers.json; this server mirrors it (136 IPv4 + 136 IPv6 prefixes, last fetched 2026-09-14T03:51:05+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.",
    "published_ip_ranges_url": "https://developers.google.com/static/search/apis/ipranges/special-crawlers.json",
    "mirrored_prefixes": {
     "ipv4": 136,
     "ipv6": 136,
     "mirrored_at": "2026-09-14T03:51:05+00:00"
    },
    "respects_robots_txt": "own-token-only",
    "user_agent_substring": "AdsBot-Google-Mobile-Apps"
   },
   {
    "slug": "mediapartners-google",
    "name": "Mediapartners-Google",
    "operator": "Google",
    "verification_method": "published-ranges",
    "verification_label": "published IP ranges",
    "how": "Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/special-crawlers.json; this server mirrors it (136 IPv4 + 136 IPv6 prefixes, last fetched 2026-09-14T03:51:05+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.",
    "published_ip_ranges_url": "https://developers.google.com/static/search/apis/ipranges/special-crawlers.json",
    "mirrored_prefixes": {
     "ipv4": 136,
     "ipv6": 136,
     "mirrored_at": "2026-09-14T03:51:05+00:00"
    },
    "respects_robots_txt": "own-token-only",
    "user_agent_substring": "Mediapartners-Google"
   },
   {
    "slug": "google-safety",
    "name": "Google-Safety",
    "operator": "Google",
    "verification_method": "none",
    "verification_label": "no published verification method",
    "how": "The operator publishes no verification method for this crawler. Neither a prefix check nor reverse DNS can confirm it; the user-agent is the only claim available, and it is only a claim.",
    "published_ip_ranges_url": null,
    "mirrored_prefixes": null,
    "respects_robots_txt": "by-design-no",
    "user_agent_substring": "Google-Safety"
   },
   {
    "slug": "feedfetcher-google",
    "name": "FeedFetcher-Google",
    "operator": "Google",
    "verification_method": "published-ranges",
    "verification_label": "published IP ranges",
    "how": "Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/user-triggered-fetchers.json; this server mirrors it (529 IPv4 + 529 IPv6 prefixes, last fetched 2026-09-14T03:51:06+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.",
    "published_ip_ranges_url": "https://developers.google.com/static/search/apis/ipranges/user-triggered-fetchers.json",
    "mirrored_prefixes": {
     "ipv4": 529,
     "ipv6": 529,
     "mirrored_at": "2026-09-14T03:51:06+00:00"
    },
    "respects_robots_txt": "by-design-no",
    "user_agent_substring": "FeedFetcher-Google"
   },
   {
    "slug": "google-read-aloud",
    "name": "Google-Read-Aloud",
    "operator": "Google",
    "verification_method": "published-ranges",
    "verification_label": "published IP ranges",
    "how": "Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/user-triggered-fetchers.json; this server mirrors it (529 IPv4 + 529 IPv6 prefixes, last fetched 2026-09-14T03:51:06+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.",
    "published_ip_ranges_url": "https://developers.google.com/static/search/apis/ipranges/user-triggered-fetchers.json",
    "mirrored_prefixes": {
     "ipv4": 529,
     "ipv6": 529,
     "mirrored_at": "2026-09-14T03:51:06+00:00"
    },
    "respects_robots_txt": "by-design-no",
    "user_agent_substring": "Google-Read-Aloud"
   },
   {
    "slug": "google-site-verification",
    "name": "Google-Site-Verification",
    "operator": "Google",
    "verification_method": "published-ranges",
    "verification_label": "published IP ranges",
    "how": "Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/user-triggered-fetchers.json; this server mirrors it (529 IPv4 + 529 IPv6 prefixes, last fetched 2026-09-14T03:51:06+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.",
    "published_ip_ranges_url": "https://developers.google.com/static/search/apis/ipranges/user-triggered-fetchers.json",
    "mirrored_prefixes": {
     "ipv4": 529,
     "ipv6": 529,
     "mirrored_at": "2026-09-14T03:51:06+00:00"
    },
    "respects_robots_txt": "by-design-no",
    "user_agent_substring": "Google-Site-Verification"
   },
   {
    "slug": "google-cws",
    "name": "Google-CWS",
    "operator": "Google",
    "verification_method": "published-ranges",
    "verification_label": "published IP ranges",
    "how": "Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/user-triggered-fetchers.json; this server mirrors it (529 IPv4 + 529 IPv6 prefixes, last fetched 2026-09-14T03:51:06+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.",
    "published_ip_ranges_url": "https://developers.google.com/static/search/apis/ipranges/user-triggered-fetchers.json",
    "mirrored_prefixes": {
     "ipv4": 529,
     "ipv6": 529,
     "mirrored_at": "2026-09-14T03:51:06+00:00"
    },
    "respects_robots_txt": "by-design-no",
    "user_agent_substring": "Google-CWS"
   },
   {
    "slug": "google-pinpoint",
    "name": "Google-Pinpoint",
    "operator": "Google",
    "verification_method": "published-ranges",
    "verification_label": "published IP ranges",
    "how": "Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/user-triggered-fetchers.json; this server mirrors it (529 IPv4 + 529 IPv6 prefixes, last fetched 2026-09-14T03:51:06+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.",
    "published_ip_ranges_url": "https://developers.google.com/static/search/apis/ipranges/user-triggered-fetchers.json",
    "mirrored_prefixes": {
     "ipv4": 529,
     "ipv6": 529,
     "mirrored_at": "2026-09-14T03:51:06+00:00"
    },
    "respects_robots_txt": "by-design-no",
    "user_agent_substring": "Google-Pinpoint"
   },
   {
    "slug": "googleproducer",
    "name": "GoogleProducer",
    "operator": "Google",
    "verification_method": "published-ranges",
    "verification_label": "published IP ranges",
    "how": "Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/user-triggered-fetchers.json; this server mirrors it (529 IPv4 + 529 IPv6 prefixes, last fetched 2026-09-14T03:51:06+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.",
    "published_ip_ranges_url": "https://developers.google.com/static/search/apis/ipranges/user-triggered-fetchers.json",
    "mirrored_prefixes": {
     "ipv4": 529,
     "ipv6": 529,
     "mirrored_at": "2026-09-14T03:51:06+00:00"
    },
    "respects_robots_txt": "by-design-no",
    "user_agent_substring": "GoogleProducer"
   },
   {
    "slug": "googlemessages",
    "name": "GoogleMessages",
    "operator": "Google",
    "verification_method": "published-ranges",
    "verification_label": "published IP ranges",
    "how": "Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/user-triggered-fetchers.json; this server mirrors it (529 IPv4 + 529 IPv6 prefixes, last fetched 2026-09-14T03:51:06+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.",
    "published_ip_ranges_url": "https://developers.google.com/static/search/apis/ipranges/user-triggered-fetchers.json",
    "mirrored_prefixes": {
     "ipv4": 529,
     "ipv6": 529,
     "mirrored_at": "2026-09-14T03:51:06+00:00"
    },
    "respects_robots_txt": "by-design-no",
    "user_agent_substring": "GoogleMessages"
   },
   {
    "slug": "google-gemininotebook",
    "name": "Google-GeminiNotebook",
    "operator": "Google",
    "verification_method": "published-ranges",
    "verification_label": "published IP ranges",
    "how": "Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/user-triggered-fetchers.json; this server mirrors it (529 IPv4 + 529 IPv6 prefixes, last fetched 2026-09-14T03:51:06+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.",
    "published_ip_ranges_url": "https://developers.google.com/static/search/apis/ipranges/user-triggered-fetchers.json",
    "mirrored_prefixes": {
     "ipv4": 529,
     "ipv6": 529,
     "mirrored_at": "2026-09-14T03:51:06+00:00"
    },
    "respects_robots_txt": "by-design-no",
    "user_agent_substring": "Google-GeminiNotebook"
   },
   {
    "slug": "google-agent",
    "name": "Google-Agent",
    "operator": "Google",
    "verification_method": "published-ranges",
    "verification_label": "published IP ranges",
    "how": "Verifiable by published ranges. Check the address against the operator's own published list at https://developers.google.com/static/search/apis/ipranges/user-triggered-agents.json; this server mirrors it (3 IPv4 + 1 IPv6 prefixes, last fetched 2026-09-14T03:51:08+00:00) and verify_batch does exactly that check. Presence is consistent with the claim; pair it with the user-agent.",
    "published_ip_ranges_url": "https://developers.google.com/static/search/apis/ipranges/user-triggered-agents.json",
    "mirrored_prefixes": {
     "ipv4": 3,
     "ipv6": 1,
     "mirrored_at": "2026-09-14T03:51:08+00:00"
    },
    "respects_robots_txt": "by-design-no",
    "user_agent_substring": "Google-Agent"
   }
  ],
  "tally": {
   "published-ranges": 24,
   "reverse-dns": 0,
   "none": 2,
   "other": 0
  },
  "what_this_is_for": "Before you read anything into a miss from verify_batch, find out whether the crawler can be verified by prefix at all. Of the crawlers in this index, only those with verification_method 'published-ranges' can.",
  "reverse_dns_is_not_performed_here": "This server makes no outbound request of any kind, so reverse DNS is handed back as a command to run, never as a result. A tool that fetched or resolved on request could be aimed at anything.",
  "index": {
   "crawlers_indexed": 150,
   "generated_at": "2026-09-14T09:49:20+00:00",
   "source": "https://www.pathwren.workers.dev/data/agents.json"
  },
  "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": "verification_methods",
  "protocol": "MCP streamable-http, JSON-RPC 2.0 tools/call"
 },
 "caveats": [
  "Reverse DNS is never performed here — no request leaves this host — so the command is handed back, labelled as not run."
 ],
 "docs": "https://www.pathwren.workers.dev/tools/verification-methods.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"
 }
}
