toolkit-mcp-server: geolocate IP
toolkit_geolocate_ipResolve a public IP or dotted hostname to country, region, city, coordinates, ASN, AS holder and name, organization, ISP, timezone, and proxy/hosting/mobile flags. Supply target for one lookup or targets for an ordered batch, never both; blank target and empty targets are unset. Batches process the first 100 positions (duplicates retained) and disclose every remainder in unprocessedTargets; at most 1000 inputs are accepted. Each batch position reports its result or an error with recovery, so cached and local outcomes survive quota refusals. The provider is called directly, never the target. Hostnames are DNS-resolved and resolvedIp names the located address. Private/reserved addresses have no public geolocation. Results are best-effort, city-level at best; VPNs, proxies, mobile NAT, and anycast defeat IP-to-location. Read proxy, hosting, and mobile before trusting coordinates: true describes infrastructure, not the user. org can name a customer or sub-allocation rather than the network operator; read isp, asHolder, and asName for the operator. Absent metadata remains unknown. Provider-supplied names are third-party registry text; content[] escapes them so they read as literal text, never as Markdown. source names the provider. Single and batch quotas are independent; cache hits consume neither quota.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "toolkit_geolocate_ip"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | One public IP or dotted hostname; mutually exclusive with nonempty targets. | |
| targets | No | Ordered public IPs or dotted hostnames; first 100 positions are served, every remainder is disclosed. Mutually exclusive with nonblank target. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| asn | No | Autonomous System number, e.g. "AS15169". Absent on providers that omit it. | |
| isp | No | Internet service provider for the address, e.g. "Cloudflare, Inc". Absent when unknown. | |
| org | No | Organization the address is registered to, e.g. "Google LLC"; often a customer or sub-allocation label rather than the network operator. Carries asHolder, else isp, when the provider names no organization. Absent when all three are unknown. | |
| city | No | City name. Absent when unknown. | |
| error | No | Present when the call failed. Absent on success. | |
| proxy | No | True when the address is a known proxy, VPN, or Tor exit — the location describes the exit node, not the user. Absent when the provider does not report it. | |
| asName | No | Registry name of the autonomous system, e.g. "CLOUDFLARENET". Absent when the provider omits it. | |
| mobile | No | True when the address belongs to a mobile carrier network, where NAT can place the location far from the device. Absent when unreported. | |
| region | No | Region or state name. Absent when unknown. | |
| source | No | The provider that answered the lookup, e.g. "ip-api". | |
| target | No | The target as supplied (IP or hostname). | |
| country | No | Country name. Absent when the provider does not report it. | |
| hosting | No | True when the address belongs to a hosting or datacenter network, so the location is a facility rather than a person. Absent when unreported. | |
| results | No | Ordered results or failures for the first 100 input positions. | |
| asHolder | No | Holder of the autonomous system as the provider names it after the ASN, e.g. "Cloudflare, Inc." for AS13335. Absent when the provider reports no AS or no holder name. | |
| latitude | No | Latitude in decimal degrees. Absent when unknown. | |
| timezone | No | IANA timezone, e.g. "America/Los_Angeles". Absent when unknown. | |
| longitude | No | Longitude in decimal degrees. Absent when unknown. | |
| resolvedIp | No | The IP that was actually located (a supplied hostname is resolved to this first). | |
| countryCode | No | ISO 3166-1 alpha-2 country code. Absent when unknown. | |
| failedCount | No | Number of failed processed targets. | |
| unprocessedTargets | No | Every input position past the first 100; resubmit these targets in another batch. |