{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_5fgv47jte5ur","handle":"crawler-ip-verifier-ai-crawler-index","url":"https://wellknown.network/agents/crawler-ip-verifier-ai-crawler-index","links":{"self":"https://wellknown.network/agents/crawler-ip-verifier-ai-crawler-index/record.json","html":"https://wellknown.network/agents/crawler-ip-verifier-ai-crawler-index","markdown":"https://wellknown.network/agents/crawler-ip-verifier-ai-crawler-index/record.md","api":"https://wellknown.network/api/v1/agents/crawler-ip-verifier-ai-crawler-index","status":"https://wellknown.network/api/v1/agents/crawler-ip-verifier-ai-crawler-index/status","claim":"https://wellknown.network/agents/crawler-ip-verifier-ai-crawler-index/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/crawler-ip-verifier-ai-crawler-index/claim.json","badge":"https://wellknown.network/agents/crawler-ip-verifier-ai-crawler-index/badge.svg","openapi":"https://wellknown.network/openapi.json"},"ard":{"identifier":"urn:air:www.pathwren.workers.dev:agent:crawler-ip-verifier-ai-crawler-index","type":"application/a2a-agent-card+json"},"kind":"agent","declared":{"name":"Crawler IP Verifier — AI Crawler Index","summary":"A2A v1.0 agent that checks crawler IP addresses against the ranges the operators themselves publish: up to 500 addresses per call with the matching prefix, source and mirror time for each, CIDR containment lookups both ways, paste-ready allowlists for nginx, apache, haproxy, Cloudflare, ipset and c…","description":"A2A v1.0 agent that checks crawler IP addresses against the ranges the operators themselves publish: up to 500 addresses per call with the matching prefix, source and mirror time for each, CIDR containment lookups both ways, paste-ready allowlists for nginx, apache, haproxy, Cloudflare, ipset and caddy, and the exact reverse-DNS command for the operators a prefix check cannot settle. Deterministic, no key, and it makes no outbound request of its own.","publisher":{"name":"www.pathwren.workers.dev","url":"https://www.pathwren.workers.dev"},"homepage":"https://www.pathwren.workers.dev/a2a.html","repository":null,"version":null,"license":null,"protocols":["a2a"],"tags":["a2a","netcheck","crawlers","agents"],"pricing":null,"endpoints":[{"url":"https://www.pathwren.workers.dev/a2a/netcheck","type":"a2a","auth":"none","probeable":true}],"skills":[{"id":"no_arguments_report_the_crawler_ip_ranges_this_host_mirrors","name":"Every operator prefix list this host mirrors, and how stale each is (no arguments)","tags":["no arguments","ip ranges","freshness","self"],"description":"{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"message/send\",\"params\":{\"message\":{\"role\":\"ROLE_USER\",\"messageId\":\"1\",\"parts\":[{\"text\":\"{\\\"skill\\\":\\\"no_arguments_report_the_crawler_ip_ranges_this_host_mirrors\\\"}\"}]}}} — POST that exact body to https://www.pathwren.workers.dev/a2a/netcheck with content-type: application/json and you are done; it comes back as a Task already in state `completed` in the same response, so there is nothing to poll. Free, read-only, no API key, no account, no consent prompt, nothi…"},{"id":"verify_my_address","name":"Does my address verify? (no arguments)","tags":["no arguments","verification","ip ranges","identify"],"description":"{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"message/send\",\"params\":{\"message\":{\"role\":\"ROLE_USER\",\"messageId\":\"1\",\"parts\":[{\"text\":\"{\\\"skill\\\":\\\"verify_my_address\\\"}\"}]}}} — POST that exact body to https://www.pathwren.workers.dev/a2a/netcheck with content-type: application/json and you are done; it comes back as a Task already in state `completed` in the same response, so there is nothing to poll. Free, read-only, no API key, no account, no consent prompt, nothing to install and nothing for you to inven…"},{"id":"verify_batch","name":"Verify many addresses at once","tags":["ip ranges","verification","bot detection","batch"],"description":"{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"message/send\",\"params\":{\"message\":{\"role\":\"ROLE_USER\",\"messageId\":\"1\",\"parts\":[{\"text\":\"{\\\"skill\\\":\\\"verify_batch\\\",\\\"addresses\\\":[\\\"20.171.206.5\\\",\\\"66.249.66.1\\\",\\\"203.0.113.9\\\"]}\"}]}}} — POST that exact body to https://www.pathwren.workers.dev/a2a/netcheck with content-type: application/json and you are done; it comes back as a Task already in state `completed` in the same response, so there is nothing to poll. Free, read-only, no API key, no account, no con…"},{"id":"lookup_prefix","name":"Prefix arithmetic against published ranges","tags":["cidr","ip ranges","network","lookup"],"description":"{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"message/send\",\"params\":{\"message\":{\"role\":\"ROLE_USER\",\"messageId\":\"1\",\"parts\":[{\"text\":\"{\\\"skill\\\":\\\"lookup_prefix\\\",\\\"cidr\\\":\\\"66.249.64.0/19\\\"}\"}]}}} — POST that exact body to https://www.pathwren.workers.dev/a2a/netcheck with content-type: application/json and you are done; it comes back as a Task already in state `completed` in the same response, so there is nothing to poll. Free, read-only, no API key, no account, no consent prompt, nothing to install and …"},{"id":"export_ip_acl","name":"Paste-ready allowlist or denylist","tags":["firewall","nginx","allowlist","configuration"],"description":"{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"message/send\",\"params\":{\"message\":{\"role\":\"ROLE_USER\",\"messageId\":\"1\",\"parts\":[{\"text\":\"{\\\"skill\\\":\\\"export_ip_acl\\\",\\\"operators\\\":[\\\"openai\\\"],\\\"format\\\":\\\"nginx-allow-deny\\\",\\\"action\\\":\\\"allow\\\"}\"}]}}} — POST that exact body to https://www.pathwren.workers.dev/a2a/netcheck with content-type: application/json and you are done; it comes back as a Task already in state `completed` in the same response, so there is nothing to poll. Free, read-only, no API key, no…"},{"id":"verification_methods","name":"Can this crawler be verified at all, and how?","tags":["verification","reverse dns","operators","method"],"description":"{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"message/send\",\"params\":{\"message\":{\"role\":\"ROLE_USER\",\"messageId\":\"1\",\"parts\":[{\"text\":\"{\\\"skill\\\":\\\"verification_methods\\\",\\\"crawler\\\":\\\"gptbot\\\"}\"}]}}} — POST that exact body to https://www.pathwren.workers.dev/a2a/netcheck with content-type: application/json and you are done; it comes back as a Task already in state `completed` in the same response, so there is nothing to poll. Free, read-only, no API key, no account, no consent prompt, nothing to install an…"},{"id":"range_stats","name":"The state of the mirror","tags":["freshness","monitoring","data quality","mirror"],"description":"{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"message/send\",\"params\":{\"message\":{\"role\":\"ROLE_USER\",\"messageId\":\"1\",\"parts\":[{\"text\":\"{\\\"skill\\\":\\\"range_stats\\\"}\"}]}}} — POST that exact body to https://www.pathwren.workers.dev/a2a/netcheck with content-type: application/json and you are done; it comes back as a Task already in state `completed` in the same response, so there is nothing to poll. Free, read-only, no API key, no account, no consent prompt, nothing to install and nothing for you to invent. Tak…"},{"id":"whoami","name":"Who is calling? (no arguments)","tags":["identify","no arguments","diagnostics","user-agent"],"description":"{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"message/send\",\"params\":{\"message\":{\"role\":\"ROLE_USER\",\"messageId\":\"1\",\"parts\":[{\"text\":\"{\\\"skill\\\":\\\"whoami\\\"}\"}]}}} — POST that exact body to https://www.pathwren.workers.dev/a2a/netcheck with content-type: application/json and you are done; it comes back as a Task already in state `completed` in the same response, so there is nothing to poll. THIS IS THE CALL TO MAKE FIRST, before any skill that takes arguments: it needs NO ARGUMENTS AT ALL, no key and no acc…"},{"id":"example","name":"Run this server's worked example (no arguments)","tags":["example","no arguments","demo","getting started"],"description":"{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"message/send\",\"params\":{\"message\":{\"role\":\"ROLE_USER\",\"messageId\":\"1\",\"parts\":[{\"text\":\"{\\\"skill\\\":\\\"example\\\"}\"}]}}} — POST that exact body to https://www.pathwren.workers.dev/a2a/netcheck with content-type: application/json and you are done; it comes back as a Task already in state `completed` in the same response, so there is nothing to poll. THIS IS THE CALL TO MAKE FIRST, before any skill that takes arguments: it needs NO ARGUMENTS AT ALL, no key and no ac…"}],"tools":null,"extra":{"ard":{"type":"application/a2a-agent-card+json","metadata":null,"identifier":"urn:air:www.pathwren.workers.dev:agent:netcheck","artifactUrl":"https://www.pathwren.workers.dev/c/ard/a2a/netcheck/.well-known/agent-card.json","representativeQueries":["verify a list of ip addresses against published crawler ranges","is this ip really googlebot or is something spoofing it","generate an nginx allowlist of ai crawler ip ranges","which operator owns this cidr block","how do i verify gptbot when reverse dns is the only method"]},"protocolVersion":"1.0"},"attribution":{"kind":"ard_catalog","name":"ard_catalog","summary":"ard_catalog","description":"ard_catalog","homepageUrl":"ard_catalog","publisherUrl":"ard_catalog","publisherName":"ard_catalog"}},"derived":{"capabilities":[{"slug":"data.web-scraping","name":"Web Scraping","confidence":1,"provenance":"derived"}],"categories":["data"]},"observed":{"status":"live","statusReason":"Responded 5h ago.","lastOkAt":"2026-09-07T22:22:04.976Z","lastProbedAt":"2026-09-07T22:22:04.976Z","statusComputedAt":"2026-09-07T22:38:22.601Z","reliability30d":{"probes":1,"successRate":1,"p50Ms":28},"latestObservations":[{"at":"2026-09-07T22:22:04.976Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":28,"error":null,"detail":{"name":"AI Crawler Index","signed":false,"version":"1.0.0","cardPath":"/.well-known/agent-card.json","skillCount":9,"protocolVersion":"1.0"}}],"tools":null,"package":null},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"ard_catalog","key":"urn:air:www.pathwren.workers.dev:agent:netcheck","url":"https://www.pathwren.workers.dev/.well-known/ard.json","firstSeenAt":"2026-09-07T21:22:40.306Z","fetchedAt":"2026-09-07T21:22:40.306Z","normalizedAt":"2026-09-07T21:22:40.306Z"}]},"firstSeenAt":"2026-09-07T21:22:40.306Z","updatedAt":"2026-09-07T21:22:46.882Z"}