{"server":{"name":"io.github.ipinfo/mcp","icons":[{"src":"https://raw.githubusercontent.com/ipinfo/mcp/main/assets/logo-light.png","theme":"light","mimeType":"image/png"},{"src":"https://raw.githubusercontent.com/ipinfo/mcp/main/assets/logo-dark.png","theme":"dark","mimeType":"image/png"}],"title":"IPinfo","$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","remotes":[{"url":"https://mcp.ipinfo.io/","type":"streamable-http","headers":[{"name":"Authorization","value":"Bearer {ipinfo_token}","isSecret":true,"variables":{"ipinfo_token":{"format":"string","isSecret":true,"isRequired":true,"description":"Your IPinfo API token"}},"isRequired":true,"description":"Your IPinfo API token as a bearer credential. Get a free one at https://ipinfo.io/signup"}]}],"version":"0.1.14","packages":[{"version":"0.1.14","transport":{"type":"stdio"},"identifier":"ipinfo-mcp-server","runtimeHint":"uvx","registryType":"pypi","registryBaseUrl":"https://pypi.org","environmentVariables":[{"name":"IPINFO_TOKEN","format":"string","isSecret":true,"isRequired":true,"description":"Your IPinfo API token. Get a free one at https://ipinfo.io/signup"}]}],"repository":{"url":"https://github.com/ipinfo/mcp","source":"github"},"websiteUrl":"https://ipinfo.io","description":"Official IPinfo MCP Server - IP intelligence tools for AI assistants"},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","isLatest":true,"updatedAt":"2026-10-01T14:25:54.978421Z","publishedAt":"2026-10-01T14:25:54.978421Z","statusChangedAt":"2026-10-01T14:25:54.978421Z"},"dev.protogrid/connectability":{"class":"R1","autonomous":true,"human_steps":[],"preferred":{"kind":"remote","idx":0},"remotes":[{"idx":0,"url":"https://mcp.ipinfo.io/","transport":"streamable-http","templated":false,"headers":[{"name":"Authorization","required":true,"secret":true,"value":"Bearer {ipinfo_token}","secret_names":["ipinfo_token"]}],"auth":{"type":"api_key","location":null,"secret_name":"ipinfo_token","oauth":null},"protocol":{"supported_versions":["2026-07-28"],"stateless":true},"health":{"reachable":true,"uptime_30d":1,"latency_ms_p50":273,"consecutive_failures":0,"last_probe_at":"2026-10-20T00:17:32.482Z","last_ok_at":"2026-10-20T00:17:32.482Z"}}],"packages":[{"idx":0,"registry_type":"pypi","identifier":"ipinfo-mcp-server","version":"0.1.14","runtime_hint":"uvx","transport":"stdio","secrets":["IPINFO_TOKEN"],"requires_execution":true}]},"dev.protogrid/tools":[{"name":"ipinfo_asn","title":"Ipinfo Asn","description":"Get autonomous system (network ownership) information for IP addresses.\n\nBy default queries the IPinfo Lite endpoint, which returns ASN, name, and domain.\nSet detailed=True to query the full lookup endpoint, which also includes the network type\n(e.g. isp, hosting, business, education).\n\nResults are paginated.\n\nIf the API reports an error for specific IPs, those IPs are listed in errors\nwith the reason and left out of results.\n\nResults are cached in memory for the session, so repeat lookups of the same IP\nare served from cache without consuming API quota. You do not need to maintain\nyour own cache or deduplicate IPs before calling this tool. The _meta field\nreports api_calls_made and from_cache counts.","annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-20T00:17:32.482Z"},{"name":"ipinfo_check_privacy","title":"Ipinfo Check Privacy","description":"Check whether IP addresses are using privacy or anonymity services.\n\nReturns privacy flags for each IP: whether it is anonymous, using a VPN, proxy,\nrelay, or Tor, and whether it is an anycast, hosting, mobile, or satellite address.\n\nRequires a paid API token. Results are paginated.\n\nIf the API reports an error for specific IPs, those IPs are listed in errors\nwith the reason and left out of results. Do not treat a missing result as\n\"no privacy services detected\": check errors.\n\nResults are cached in memory for the session, so repeat checks of the same IP\nare served from cache without consuming API quota. You do not need to maintain\nyour own cache or deduplicate IPs before calling this tool. The _meta field\nreports api_calls_made and from_cache counts.","annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-20T00:17:32.482Z"},{"name":"ipinfo_check_residential_proxy","title":"Ipinfo Check Residential Proxy","description":"Check whether IP addresses are known residential proxies.\n\nReturns whether each IP is a residential proxy and, if so, the proxy service name,\nthe date it was last seen, and the percentage of days the IP was observed as a proxy.\n\nRequires a paid API token with residential proxy access. Results are paginated.\n\nIf the API reports an error for specific IPs, those IPs are listed in errors\nwith the reason and left out of results. Do not treat a missing result as\n\"not a residential proxy\": check errors.\n\nResults are cached in memory for the session, so repeat checks of the same IP\nare served from cache without consuming API quota. You do not need to maintain\nyour own cache or deduplicate IPs before calling this tool. The _meta field\nreports api_calls_made and from_cache counts.","annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-20T00:17:32.482Z"},{"name":"ipinfo_geolocate","title":"Ipinfo Geolocate","description":"Get geographic location data for one or more IP addresses.\n\nBy default queries the IPinfo Lite endpoint, which returns country and continent.\nSet detailed=True to query the full lookup endpoint, which adds city, region,\ncoordinates, timezone, and postal code.\n\nResults are paginated.\n\nIf the API reports an error for specific IPs, those IPs are listed in errors\nwith the reason and left out of results.\n\nResults are cached in memory for the session, so repeat lookups of the same IP\nare served from cache without consuming API quota. You do not need to maintain\nyour own cache or deduplicate IPs before calling this tool. The _meta field\nreports api_calls_made and from_cache counts.","annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-20T00:17:32.482Z"},{"name":"ipinfo_lookup","title":"Ipinfo Lookup","description":"Look up geolocation, network, and metadata for one or more IP addresses.\n\nBy default queries the IPinfo Lite endpoint, which returns country, continent, and ASN info.\nSet detailed=True to query the full lookup endpoint, which adds city-level geolocation,\nprivacy flags (VPN, proxy, Tor, hosting, anycast), and richer AS data.\n\nResults are paginated. Use page and page_size to control which slice is returned.\n\nIf the API reports an error for specific IPs, those IPs are listed in errors\nwith the reason and left out of results.\n\nResults are cached in memory for the session, so repeat lookups of the same IP\nare served from cache without consuming API quota. You do not need to maintain\nyour own cache or deduplicate IPs before calling this tool. The _meta field\nreports api_calls_made and from_cache counts.","annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-20T00:17:32.482Z"},{"name":"ipinfo_quota","title":"Ipinfo Quota","description":"Check your IPinfo API usage and remaining quota.\n\nReturns daily and monthly request counts, the plan limit,\nand how many requests remain.","annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-20T00:17:32.482Z"}],"dev.protogrid/trust":{"score":97,"components":{"hygiene":100,"liveness":100,"freshness":100,"provenance":90},"drivers":["+repository","+namespace-matches-repo","+website","+reachable","+uptime-100%","+updated-18d-ago"],"flags":[],"blocked":false,"computed_at":"2026-10-20T00:38:53.205Z","disclaimer":"Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed."},"dev.protogrid/quality":{"score":90,"label":"strong","components":{"auth":null,"hygiene":100,"protocol":88,"stability":75,"dependencies":null},"checks":[{"id":"protocol.modern","detail":"supports 2026-07-28 (server/discover)","status":"pass","category":"protocol"},{"id":"protocol.stateless","detail":"answers without a session","status":"pass","category":"protocol"},{"id":"protocol.transport","detail":"streamable HTTP","status":"pass","category":"protocol"},{"id":"protocol.list_ttl","detail":"tools/list declares ttlMs 0, so clients re-fetch it on every use","status":"warn","category":"protocol"},{"id":"auth.prm","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.as_metadata","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.cimd","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.secret_in_url","detail":"no templated URL","status":"na","category":"auth"},{"id":"tools.descriptions","detail":"every tool has a description","status":"pass","category":"hygiene"},{"id":"tools.description_length","detail":"descriptions are concise","status":"pass","category":"hygiene"},{"id":"tools.schemas","detail":"every tool has an object input schema","status":"pass","category":"hygiene"},{"id":"tools.annotations","detail":"6 of 6 tools declare readOnlyHint or destructiveHint","status":"pass","category":"hygiene"},{"id":"tools.directory_hints","detail":"every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint","status":"pass","category":"hygiene"},{"id":"tools.token_cost","detail":"about 2,474 tokens to load every tool","status":"pass","category":"hygiene"},{"id":"tools.api_dump","detail":"tools are not a one-to-one API dump","status":"pass","category":"hygiene"},{"id":"stability.changes","detail":"6 tool changes in 30 days","status":"warn","category":"stability"},{"id":"stability.rug_pull","detail":"no tool changed its meaning under the same name","status":"pass","category":"stability"},{"id":"deps.known_vulns","detail":"deps.dev does not know ipinfo-mcp-server@0.1.14","status":"na","category":"dependencies"},{"id":"deps.mcp_sdk_version","detail":"deps.dev does not know ipinfo-mcp-server@0.1.14","status":"na","category":"dependencies"},{"id":"deps.resolvable","detail":"deps.dev does not know ipinfo-mcp-server@0.1.14","status":"na","category":"dependencies"}],"drivers":["~protocol.list_ttl","~stability.changes"],"flags":[],"tool_count":6,"token_estimate":2474,"tools_hash":"2f72a440951799e6be425d520301d616","tools_changed_at":"2026-09-24T20:31:54.879Z","computed_at":"2026-10-20T00:22:39.443Z","disclaimer":"Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed."},"dev.protogrid/identity":{"canonical_id":"io.github.ipinfo/mcp","aliases":[],"alias_count":0,"repository_key":"github:ipinfo/mcp","owner":{"verified":false,"method":null,"since":null}}},"next_actions":[{"action":"list_tools","description":"Every current tool with input schemas","href":"/v1/servers/io.github.ipinfo%2Fmcp/tools","arguments":{"name":"io.github.ipinfo/mcp"}},{"action":"get_connection","description":"Minimal connection block for the preferred remote or package","href":"/v1/servers/io.github.ipinfo%2Fmcp/connection?target=mcpServers","arguments":{"name":"io.github.ipinfo/mcp","target":"mcpServers"}},{"action":"search","description":"Find other servers by intent","href":"/v1/search?q={query}","arguments":{"q":"{query}"}}]}