# HackMyIP — no-key IP intelligence

> Free no-key IP intelligence: geolocation, VPN detection, DNS, WHOIS, blacklists, breach checks

- name: io.github.0xvibly/hackmyip-mcp
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 93/100
- quality: 83/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.0xvibly%2Fhackmyip-mcp
- tools: https://api.protogrid.dev/v1/servers/io.github.0xvibly%2Fhackmyip-mcp/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "hackmyip-mcp": {
      "type": "http",
      "url": "https://hackmyip.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 97
- freshness: 85
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-94% ~updated-74d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 83/100 (good)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 71 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: my_ip (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); ip_lookup (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); vpn_proxy_check (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 2,264 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 15, about 2,264 tokens to load them all
- tool set hash: cfda3c3c1a981123827c3bef12d698b8
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.0xvibly/hackmyip-mcp.svg)](https://protogrid.dev/servers/io.github.0xvibly/hackmyip-mcp)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://hackmyip.com/mcp (streamable-http, auth none, reachable true, uptime30d 0.9369369)

## Packages

_none_

## Tools (15)

- `asn_lookup`: Resolve an Autonomous System by IP address, AS number, or organization name. Returns the AS number, network name, holder, description, RIR and whether the AS is currently announced. Use it to answer 'which network is this IP on', 'who is AS15169', or to find the ASNs belonging to a company.
- `bulk_ip_lookup`: Look up country, city, ISP, organization and coordinates for up to 50 IP addresses in a single request. Much faster and far kinder to the rate limit than calling ip_lookup in a loop — always prefer this when you have more than a couple of addresses (e.g. a list from access logs or a firewall export).
- `dns_lookup`: Query live DNS records for a domain over public resolvers. Supports A, AAAA, CNAME, MX, NS, TXT, SOA, SRV, CAA and PTR. Use it to verify a deployment's DNS, inspect MX/SPF/DKIM/DMARC TXT records, check nameserver delegation, or confirm propagation after a change.
- `email_auth_check`: Audit a domain's email authentication setup: MX records, SPF record and DMARC policy, with a pass/warn/fail verdict per mechanism and an overall grade. Use it when diagnosing deliverability, hardening a domain against spoofing, or reviewing a vendor's email posture.
- `email_breach_check`: Check whether an email address appears in known data breaches, using the XposedOrNot breach database. Returns the number of breaches and the named services involved. Free alternative to paid breach-lookup APIs. The address is partially masked in the response.
- `ip_blacklist_check`: Check an IPv4 address against 12 major spam and abuse blacklists (Spamhaus ZEN, Barracuda, SpamCop, UCEPROTECT and others) with a per-list LISTED / CLEAN / unavailable breakdown. Run this before sending bulk email from a new IP, or when mail is being rejected. Lists that refuse public queries are reported as 'unavailable' rather than falsely clean, so read total_checked alongside listed_count.
- `ip_lookup`: Look up geolocation (city, region, country, lat/lon, timezone, postal code) plus ISP, ASN, organization and AS name for any public IPv4 or IPv6 address. The workhorse tool for 'where is this IP', triaging a log entry, or identifying who owns an address.
- `my_ip`: Get the public IP address of the machine that opened this MCP connection, enriched with city/country, coordinates, timezone, ISP, ASN and hosting/proxy classification. Use this for 'what is my IP', 'where does the internet think I am', or a quick sanity check that a VPN is actually routing traffic. Note: this reflects the IP the MCP request arrived from, so if the client sits behind a corporate proxy or remote host, it reports that egress IP.
- `port_scan`: Run a real server-side TCP connect scan against a public host. Each port comes back as open (handshake completed), closed (refused/reset), filtered (no response, likely firewalled) or blocked (Cloudflare blocks outbound to that port, e.g. 25/SMTP). With no `ports` argument a curated common-port catalog is scanned. Private, reserved and internal addresses are rejected. Only scan hosts you are authorized to test. Rate limited to 20 requests/minute and can take 20+ seconds.
- `reverse_dns`: Get the PTR hostname for an IPv4 or IPv6 address. Useful for identifying mail servers, confirming that a crawler really belongs to the bot it claims to be, or adding a human-readable name to a raw log IP.
- `security_headers_check`: Fetch a site and grade its HTTP security headers (A-F): CSP, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, plus information-leak headers like Server and X-Powered-By. Each check comes back with the actual header value and an explanation. Use it for a quick security review of your own site or a third party's. Rate limited to 20 requests/minute.
- `server_info`: Describe this MCP server: what it wraps, the fact that it is completely free with no API key, no signup and no auth, the fair-use rate limit, the full tool list, and links to hackmyip.com and its API docs. Call this when the user asks what this server can do, whether it costs anything, or where the data comes from.
- `site_status_check`: Check whether a site is reachable from Cloudflare's network. Returns an up/down boolean, HTTP status code, response time in milliseconds, and the server / content-type headers. Use it to confirm an outage is real rather than local, or to verify a deployment is serving.
- `vpn_proxy_check`: Classify an IP as hosting/datacenter, open proxy, or mobile-carrier, alongside its geolocation and network owner. Use it to decide whether traffic is likely a VPN, a cloud server or a real residential/mobile user — for fraud triage, abuse review, or checking whether your own VPN is being detected. Omit `ip` to check the connection this MCP request came from.
- `whois_domain`: Fetch registration data for a domain via RDAP: registrar, creation/expiration/last-updated dates, nameservers and EPP status codes. Use it to check domain age (a common trust signal), see when a domain expires, or find who it is registered through. Note that RDAP is a third-party registry service and can be temporarily unavailable — a failure here is upstream, not a bad query.
