Keyless IP geolocation, ASN/ISP, timezone and DNS records for any IP or domain, plus your own IP.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Return all HTTP request headers as seen by the IP.LS server (including X-Real-IP / X-Forwarded-For injected by the frontend proxy). Useful for debugging proxies and client identity.
This tool takes no arguments.
Return all HTTP request headers as seen by the IP.LS server (including X-Real-IP / X-Forwarded-For injected by the frontend proxy). Useful for debugging proxies and client identity.
No arguments.
{
"type": "object",
"properties": {}
}Look up geolocation, ISP and network info for any IPv4/IPv6 address or hostname, or an array of them for batch lookup. Returns ip, city, region, country, coordinates, ASN/ISP, timezone and continent (full name, e.g. North America); when a domain is queried, an extra `domain` field echoes it. Data source: DB-IP Lite (CC BY 4.0). Anycast IPs are approximate.
| Argument | Type | Description |
|---|---|---|
| ip* | string | array | IPv4/IPv6 address or hostname, e.g. 8.8.8.8 or example.com. Pass an array for batch lookup, e.g. ["8.8.8.8", "1.1.1.1"]. |
{
"type": "object",
"required": [
"ip"
],
"properties": {
"ip": {
"type": [
"string",
"array"
],
"items": {
"type": "string"
},
"description": "IPv4/IPv6 address or hostname, e.g. 8.8.8.8 or example.com. Pass an array for batch lookup, e.g. [\"8.8.8.8\", \"1.1.1.1\"]."
}
}
}Resolve a domain to all its A and AAAA records (deduplicated, up to 6) and return geolocation for each address. Returns an array of { ip, protocol, domain, city, region, country, coordinates, ASN/ISP, ... }. For a bare IP, returns a single-element array.
| Argument | Type | Description |
|---|---|---|
| host* | string | Domain or IP address to resolve, e.g. example.com or baidu.com |
{
"type": "object",
"required": [
"host"
],
"properties": {
"host": {
"type": "string",
"description": "Domain or IP address to resolve, e.g. example.com or baidu.com"
}
}
}Get geolocation and network info about the caller's own public IP, plus the protocol stack (IPv4/IPv6) of the current connection. On dual-stack machines the stack is chosen by the client and may differ from `curl ip.ls`, which picks a random stack; use curl -4/-6 locally to get the other stack, or — for clients that cannot pick a stack (browser, PowerShell, most HTTP libraries) — the single-stack hostnames https://4.ip.ls / https://6.ip.ls (DNS selects the stack; an unreachable 6.ip.ls means no usable IPv6). Data comes from a server-side GeoIP lookup on the caller's real IP.
No arguments.
{
"type": "object",
"properties": {}
}Summarize a large batch of IPs into distributions by country, continent, ASN/operator and network prefix, each bucket with a sample of addresses. Use instead of ip_lookup once the input is in the hundreds or thousands — ip_lookup returns every row, which no context window holds. Up to 5000 addresses or 100 hostnames. Counts are per occurrence; nothing is dropped silently (failed → `errors`, no database record → `no_data`, unlisted buckets → `tail`), the same input set always returns the same numbers, and the result is facts only — no datacenter/residential classification, no verdict. DB-IP Lite (CC BY 4.0).
| Argument | Type | Description |
|---|---|---|
| ips* | any | |
| top | integer | Buckets per dimension. |
| sample | integer | Sample addresses per bucket. |
| prefix4 | integer | IPv4 grouping prefix. |
| prefix6 | integer | IPv6 grouping prefix; /48 = one end-site. |
{
"type": "object",
"required": [
"ips"
],
"properties": {
"ips": {
"anyOf": [
{
"type": "string",
"description": "Whitespace- or comma-separated (paste a log column)."
},
{
"type": "array",
"items": {
"type": "string"
},
"maxItems": 5000,
"description": "e.g. [\"8.8.8.8\",\"example.com\"]."
}
]
},
"top": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1,
"description": "Buckets per dimension."
},
"sample": {
"type": "integer",
"default": 3,
"maximum": 5,
"minimum": 0,
"description": "Sample addresses per bucket."
},
"prefix4": {
"type": "integer",
"default": 24,
"maximum": 32,
"minimum": 8,
"description": "IPv4 grouping prefix."
},
"prefix6": {
"type": "integer",
"default": 48,
"maximum": 64,
"minimum": 16,
"description": "IPv6 grouping prefix; /48 = one end-site."
}
},
"additionalProperties": false
}Return the User-Agent string of the current HTTP client.
No arguments.
{
"type": "object",
"properties": {}
}