We first estimate which kind of network the IP belongs to, then take its start value. Datacenter IPs start low because they do not look like an ordinary user's network.
| Network type | Start | How it is judged |
|---|---|---|
| Residential | 100 | ASN holder name looks like an ISP (telecom, broadband, cable) and not a hosting provider |
| Mobile | 95 | Holder name contains mobile, wireless, cellular and similar |
| Unknown | 80 | No match by name or list. A cautious middle value |
| Datacenter | 60 | ASN is on the known-hosting list (43 ASNs), or the holder name contains hosting, cloud, vps and similar |
| Item | Deduction | Notes |
|---|---|---|
| Blocklist hits | −10 per list, at most −30 | 4 live lists are queried: dnsbl-1.uceprotect.net, bl.spamcop.net, dnsbl.dronebl.org, psbl.surriel.com. IPv4 only. A hit is one list at one moment, not proof that a whole network is bad. |
| Tor exit node | score capped at 20 | From the Tor Project's public exit list. |
| Registration vs geolocation country differ | −10 | A "broadcast IP": registered in one country, used in another. Some registries (e.g. ARIN) do not publish a country, in which case this is not assessed. |
Our bar is 90. It is our own convention, not an Anthropic standard. Only a residential or mobile IP with no deductions can reach it; a datacenter IP tops out at 60 and therefore always falls below. That matches common experience but does not mean a datacenter IP cannot use Claude.
We have no reliable data source for VPN/proxy flags, abuse intelligence or fraud scores, so we do not assess or guess them. When a data source fails to answer during a lookup, it is listed explicitly and neither adds nor deducts.
| ASN, holder name, route prefix | RIPEstat |
| Registration country | RDAP (public registry data) |
| Geolocation country | ipwho.is, falling back to ip.sb |
| Blocklists | Lists above, queried through Cloudflare DNS-over-HTTPS |
| Tor exit list | check.torproject.org |
This returns the raw data behind every step:
curl 'https://pureip.app/claude/8.8.8.8?format=json'