Skip to main content
Glama
ipinfo

IPinfo MCP Server

Official
by ipinfo

IPinfo MCP Server

The official IPinfo MCP Server lets AI assistants such as Claude answer questions about IP addresses. Ask where an IP is located, which company or network it belongs to, or whether it's a VPN, proxy, Tor exit node, or residential proxy, and the assistant looks it up with IPinfo data.

It implements the Model Context Protocol (MCP), the open standard AI assistants use to connect to external tools, so it works with any MCP-compatible client. It supports the IPinfo Lite, Core, Plus, and Residential Proxy plans.

For the full guide, see the official documentation.

OpenSSF Scorecard OpenSSF Best Practices

Related MCP server: mcp-ipinfo

Installation

All tools require an IPinfo API token. Get a free one at ipinfo.io/signup.

Hosted server

Point your MCP client at https://mcp.ipinfo.io/ (Streamable HTTP) and send your token as a bearer credential:

Authorization: Bearer <your-ipinfo-token>

Local server (PyPI)

The server is published on PyPI as ipinfo-mcp-server and runs over stdio. With uv installed, add it to your MCP client configuration:

{
  "mcpServers": {
    "ipinfo": {
      "command": "uvx",
      "args": ["ipinfo-mcp-server"],
      "env": {
        "IPINFO_TOKEN": "<your-ipinfo-token>"
      }
    }
  }
}

Claude Desktop extension

Download mcp.mcpb from the latest GitHub release and open it with Claude Desktop. You'll be asked for your API token during installation.

MCP Registry

The server is listed in the MCP Registry as io.github.ipinfo/mcp.

Tools

Tool

Description

Plan requirement

ipinfo_lookup

Full IP data: geolocation, network, and metadata

Any; detailed: true needs Core/Plus

ipinfo_geolocate

Geographic location

Any; detailed: true needs Core/Plus

ipinfo_asn

Autonomous system (network ownership)

Any; detailed: true needs Core/Plus

ipinfo_check_privacy

VPN, proxy, relay, Tor, hosting, anycast, mobile, satellite flags

Paid plan

ipinfo_check_residential_proxy

Residential proxy detection

Residential Proxy access

ipinfo_quota

API usage and remaining quota

Any

Tools that lack access for the token's plan return an ACCESS_DENIED error.

Common parameters

All tools except ipinfo_quota take a list of IPs and are paginated:

Parameter

Type

Default

Description

ips

string[]

required

Public IPv4 or IPv6 addresses. Private, loopback, reserved, multicast, and bogon addresses are rejected and reported in validation_errors.

page

integer

1

1-based page of the result set. Values below 1 are clamped to 1.

page_size

integer

25

IPs resolved per page, up to 1000. Only IPs on the requested page are fetched, so smaller pages consume less quota per call.

ipinfo_lookup, ipinfo_geolocate, and ipinfo_asn also take:

Parameter

Type

Default

Description

detailed

boolean

false

false queries the Lite endpoint. true queries the full lookup endpoint, which returns more fields.

Common output

IP-based tools return:

Field

Description

results

Object keyed by IP with the tool-specific data below.

errors

Object keyed by IP for IPs the API returned an error for. These IPs are left out of results.

validation_errors

Object keyed by input for values that aren't valid public IPs. Only present when there are any.

_pagination

total_results, page, page_size, total_pages, has_next, has_previous.

_meta

api_calls_made and from_cache. Results are cached in memory, so repeat lookups don't consume API quota.

If the whole request fails (for example a missing or invalid token), the tool returns an error object instead, with code (ACCESS_DENIED, RATE_LIMITED, INVALID_TOKEN, NO_TOKEN, API_ERROR, or UNKNOWN), message, and suggestion.

ipinfo_lookup

Returns the raw IPinfo API response for each IP.

  • detailed: false (Lite): ip, asn, as_name, as_domain, country, country_code, continent, continent_code.

  • detailed: true (full lookup): ip, hostname, geo (city, region, country, continent, coordinates, timezone, postal code), as (ASN, name, domain, type), anonymous (proxy, relay, Tor, VPN), mobile, and the is_anonymous, is_anycast, is_hosting, is_mobile, is_satellite flags. Some fields are only available on Plus.

ipinfo_geolocate

Returns, per IP: ip, country, country_code, continent, continent_code. With detailed: true, also city, region, region_code, latitude, longitude, timezone, postal_code.

ipinfo_asn

Returns, per IP: ip, asn, name, domain. With detailed: true, also type (isp, hosting, business, education) and last_changed.

ipinfo_check_privacy

Returns, per IP: ip, is_anonymous, anonymous (is_proxy, is_relay, is_tor, is_vpn), is_anycast, is_hosting, is_mobile, is_satellite.

ipinfo_check_residential_proxy

Returns, per IP: ip and is_residential_proxy. For residential proxies, also service (proxy service name), last_seen (date), and percent_days_seen.

ipinfo_quota

Takes no parameters. Returns token, requests (day, month, limit, remaining), and per-feature quotas under features.

Configuration

The server is configured through environment variables:

Variable

Default

Description

IPINFO_TOKEN

API token (stdio transport; over HTTP the token comes from the request)

IPINFO_API_BASE_URL

https://api.ipinfo.io

Base URL for api.ipinfo.io endpoints

IPINFO_LEGACY_BASE_URL

https://ipinfo.io

Base URL for legacy ipinfo.io endpoints (e.g. /me)

IPINFO_CACHE_TTL

3600

Seconds a cached IP result stays fresh

IPINFO_TRANSPORT

stdio

Transport type (stdio or http)

HOST

0.0.0.0

HTTP host (only for http transport)

PORT

8000

HTTP port (only for http transport)

With the http transport, each request authenticates with its own Authorization: Bearer <token> header.

Feedback

Contributing

Contributions are welcome. See CONTRIBUTING.md for the workflow and the requirements a change has to meet.

Development

Prerequisites

  • Python 3.14+

  • uv

Setup

uv sync --dev
cp .env.example .env
# Add your IPinfo token to .env

Running the server

The server supports two transports: stdio (default) and HTTP.

# stdio (default, used by MCP clients)
uv run ipinfo-mcp-server

# HTTP
IPINFO_TRANSPORT=http HOST=0.0.0.0 PORT=8000 uv run ipinfo-mcp-server

Tests

# All tests
uv run pytest

# Integration tests (requires IPINFO_TOKEN)
uv run pytest tests/integration/

Integration tests hit the real IPinfo API and validate response structure only (no exact value assertions). They require IPINFO_TOKEN to be set and are skipped otherwise.

Type checking

uv run pyright

Linting

uv run ruff check .
uv run ruff format .

Available Tools

6 tools
ipinfo_asnIpinfo AsnA
Read-onlyIdempotent
Inspect

Get autonomous system (network ownership) information for IP addresses.

By default queries the IPinfo Lite endpoint, which returns ASN, name, and domain. Set detailed=True to query the full lookup endpoint, which also includes the network type (e.g. isp, hosting, business, education).

Results are paginated.

If the API reports an error for specific IPs, those IPs are listed in errors with the reason and left out of results.

Results are cached in memory for the session, so repeat lookups of the same IP are served from cache without consuming API quota. You do not need to maintain your own cache or deduplicate IPs before calling this tool. The _meta field reports api_calls_made and from_cache counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
ipsYesPublic IP addresses to query, IPv4 or IPv6, e.g. ["8.8.8.8", "2001:4860:4860::8888"]. Private, loopback, reserved, multicast, and bogon addresses are rejected: they are reported under validation_errors and left out of results.
pageNoPage of the result set to return, 1-based. Values below 1 are clamped to 1, and a page past the last one returns no results.
detailedNoWhich IPinfo endpoint to query. Leave false to use the Lite endpoint, which returns the ASN, name, and domain. Set to true to use the full lookup endpoint, which also returns the network type (isp, hosting, business, education) and when the AS record last changed; it requires a token whose plan includes that data, otherwise the call fails with ACCESS_DENIED.
page_sizeNoHow many IPs to resolve and return per page. Clamped to a maximum of 1000, the API batch limit. Only the IPs on the requested page are fetched, so a smaller page size consumes less quota per call.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, the description discloses pagination behavior, per-IP error reporting with reasons, in-memory caching and its quota implications, the _meta counters, and the ACCESS_DENIED risk for detailed lookups without the right plan. This gives an agent actionable behavioral context well beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is organized into clear thematic paragraphs and every sentence adds useful information, such as caching, error handling, and endpoint differences. It is slightly longer than strictly needed—'Results are paginated' overlaps with the page/page_size parameters—but overall it is structured and free of filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists and annotations cover safety, the description is remarkably complete: it covers endpoint selection, pagination, error reporting, validation errors, quota caching, and plan limitations. An agent has everything needed to call the tool correctly and interpret its side effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents all four parameters thoroughly, including validation behavior, clamping, defaults, and plan requirements. The description adds context around caching and quota, but it does not materially redefine parameter semantics beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Get autonomous system (network ownership) information for IP addresses.' It further clarifies the return fields (ASN, name, domain, network type), which clearly distinguishes it from siblings like ipinfo_geolocate, ipinfo_check_privacy, and ipinfo_lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what the tool does and how parameters alter endpoints, but it gives no guidance on when to choose this tool over alternatives such as ipinfo_lookup or ipinfo_check_privacy. No exclusions, comparison points, or selection conditions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ipinfo_check_privacyIpinfo Check PrivacyA
Read-onlyIdempotent
Inspect

Check whether IP addresses are using privacy or anonymity services.

Returns privacy flags for each IP: whether it is anonymous, using a VPN, proxy, relay, or Tor, and whether it is an anycast, hosting, mobile, or satellite address.

Requires a paid API token. Results are paginated.

If the API reports an error for specific IPs, those IPs are listed in errors with the reason and left out of results. Do not treat a missing result as "no privacy services detected": check errors.

Results are cached in memory for the session, so repeat checks of the same IP are served from cache without consuming API quota. You do not need to maintain your own cache or deduplicate IPs before calling this tool. The _meta field reports api_calls_made and from_cache counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
ipsYesPublic IP addresses to query, IPv4 or IPv6, e.g. ["8.8.8.8", "2001:4860:4860::8888"]. Private, loopback, reserved, multicast, and bogon addresses are rejected: they are reported under validation_errors and left out of results.
pageNoPage of the result set to return, 1-based. Values below 1 are clamped to 1, and a page past the last one returns no results.
page_sizeNoHow many IPs to resolve and return per page. Clamped to a maximum of 1000, the API batch limit. Only the IPs on the requested page are fetched, so a smaller page size consumes less quota per call.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With read-only and idempotent annotations already given, the description still adds substantial behavioral context: paid token requirement, pagination, per-IP errors that must be checked, in-memory caching, quota consumption, and _meta counts. It also explicitly warns not to interpret missing results as 'no privacy services detected.'

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every sentence earns its place: purpose, return flags, auth, pagination, error semantics, and caching. The most important behavioral warnings are front-loaded after the purpose, and the structure is easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a multi-IP privacy-checking tool, the description covers auth, pagination, error behavior, caching, quota, and validation; an output schema exists for exact return shape. Nothing required to invoke and interpret the tool correctly appears missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents all three parameters fully, including validation rules for ips and clamping for page/page_size, so the description does not need to compensate. It adds only peripheral operational context (quota per page, caching) rather than new parameter-level semantics, matching the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a specific verb and resource: 'Check whether IP addresses are using privacy or anonymity services,' and enumerates the exact flags returned (anonymous, VPN, proxy, relay, Tor, anycast, hosting, mobile, satellite). This makes it distinct from siblings like geolocation, ASN, quota, and even residential-proxy checking.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The purpose statement makes the intended use clear, and the description adds operational conditions: paid API token required, pagination, error handling, and caching. It does not explicitly name sibling tools or say when not to use this tool, so it misses the top score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ipinfo_check_residential_proxyIpinfo Check Residential ProxyA
Read-onlyIdempotent
Inspect

Check whether IP addresses are known residential proxies.

Returns whether each IP is a residential proxy and, if so, the proxy service name, the date it was last seen, and the percentage of days the IP was observed as a proxy.

Requires a paid API token with residential proxy access. Results are paginated.

If the API reports an error for specific IPs, those IPs are listed in errors with the reason and left out of results. Do not treat a missing result as "not a residential proxy": check errors.

Results are cached in memory for the session, so repeat checks of the same IP are served from cache without consuming API quota. You do not need to maintain your own cache or deduplicate IPs before calling this tool. The _meta field reports api_calls_made and from_cache counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
ipsYesPublic IP addresses to query, IPv4 or IPv6, e.g. ["8.8.8.8", "2001:4860:4860::8888"]. Private, loopback, reserved, multicast, and bogon addresses are rejected: they are reported under validation_errors and left out of results.
pageNoPage of the result set to return, 1-based. Values below 1 are clamped to 1, and a page past the last one returns no results.
page_sizeNoHow many IPs to resolve and return per page. Clamped to a maximum of 1000, the API batch limit. Only the IPs on the requested page are fetched, so a smaller page size consumes less quota per call.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial behavioral context beyond the annotations: paid token requirement, pagination, per-IP error handling, in-memory caching, quota consumption, and the _meta field. It also warns not to treat missing results as 'not a residential proxy,' which is critical for correct interpretation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is detailed but every sentence earns its place: purpose, return values, requirements, error handling, caching, and quota behavior. It is front-loaded with the core purpose and organized into clear paragraphs without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists and the input schema is fully documented, the description covers all operational essentials: authentication, pagination, error semantics, caching, and quota tracking. An agent has everything needed to invoke and interpret the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents all three parameters. The description reinforces pagination behavior and clamping but does not add new parameter-level meaning beyond what the schema provides, matching the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Check whether IP addresses are known residential proxies.' It clearly states what the tool does, but it does not explicitly differentiate it from the sibling ipinfo_check_privacy, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context such as requiring a paid token and pagination, but it gives no guidance on when to choose this tool over ipinfo_check_privacy or other siblings. No exclusions or alternative routing are mentioned, leaving the agent to infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ipinfo_geolocateIpinfo GeolocateA
Read-onlyIdempotent
Inspect

Get geographic location data for one or more IP addresses.

By default queries the IPinfo Lite endpoint, which returns country and continent. Set detailed=True to query the full lookup endpoint, which adds city, region, coordinates, timezone, and postal code.

Results are paginated.

If the API reports an error for specific IPs, those IPs are listed in errors with the reason and left out of results.

Results are cached in memory for the session, so repeat lookups of the same IP are served from cache without consuming API quota. You do not need to maintain your own cache or deduplicate IPs before calling this tool. The _meta field reports api_calls_made and from_cache counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
ipsYesPublic IP addresses to query, IPv4 or IPv6, e.g. ["8.8.8.8", "2001:4860:4860::8888"]. Private, loopback, reserved, multicast, and bogon addresses are rejected: they are reported under validation_errors and left out of results.
pageNoPage of the result set to return, 1-based. Values below 1 are clamped to 1, and a page past the last one returns no results.
detailedNoWhich IPinfo endpoint to query. Leave false to use the Lite endpoint, which returns country and continent only. Set to true to use the full lookup endpoint, which also returns city, region, latitude and longitude, timezone, and postal code; it requires a token whose plan includes that data, otherwise the call fails with ACCESS_DENIED.
page_sizeNoHow many IPs to resolve and return per page. Clamped to a maximum of 1000, the API batch limit. Only the IPs on the requested page are fetched, so a smaller page size consumes less quota per call.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, and the description adds substantial non-obvious behavior beyond that: pagination, per-IP error reporting, in-memory caching, quota consumption toggled by page_size, ACCESS_DENIED on insufficient token plans, and validation rejection of private/reserved addresses. This is strong behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded, with every sentence carrying distinct information: endpoint choice, pagination, error handling, caching, and quota metadata. There is no filler and no unnecessary repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It covers successful behavior, failure/error behavior, input validation behavior, caching/quota semantics, and pagination; the output schema handles the return shape. Combined with the rich input schema and annotations, nothing an agent needs to invoke this tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents all four parameters with 100% coverage, including clamping, validation rejection, and detailed endpoint requirements, so the description does not need to repeat those. It adds behavioral context such as caching and pagination rather than new parameter-level meaning, keeping this at the baseline for fully covered schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and object ('Get geographic location data') and immediately scopes to one or more IPs, making its geolocation focus unmistakable. It names the Lite vs full endpoints and is clearly distinct from sibling ASN, privacy, residential-proxy, and quota tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The first line states the use case, and later adds explicit parameter-level guidance: 'By default queries the IPinfo Lite endpoint... Set detailed=True...' and 'You do not need to maintain your own cache or deduplicate IPs before calling this tool.' It stops short of naming sibling alternatives or exclusion criteria, so it is not a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ipinfo_lookupIpinfo LookupA
Read-onlyIdempotent
Inspect

Look up geolocation, network, and metadata for one or more IP addresses.

By default queries the IPinfo Lite endpoint, which returns country, continent, and ASN info. Set detailed=True to query the full lookup endpoint, which adds city-level geolocation, privacy flags (VPN, proxy, Tor, hosting, anycast), and richer AS data.

Results are paginated. Use page and page_size to control which slice is returned.

If the API reports an error for specific IPs, those IPs are listed in errors with the reason and left out of results.

Results are cached in memory for the session, so repeat lookups of the same IP are served from cache without consuming API quota. You do not need to maintain your own cache or deduplicate IPs before calling this tool. The _meta field reports api_calls_made and from_cache counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
ipsYesPublic IP addresses to query, IPv4 or IPv6, e.g. ["8.8.8.8", "2001:4860:4860::8888"]. Private, loopback, reserved, multicast, and bogon addresses are rejected: they are reported under validation_errors and left out of results.
pageNoPage of the result set to return, 1-based. Values below 1 are clamped to 1, and a page past the last one returns no results.
detailedNoWhich IPinfo endpoint to query. Leave false to use the Lite endpoint, which returns country, continent, and basic ASN. Set to true to use the full lookup endpoint, which also returns city-level geolocation, privacy flags (VPN, proxy, Tor, hosting, anycast), and richer AS data; it requires a token whose plan includes that data, otherwise the call fails with ACCESS_DENIED.
page_sizeNoHow many IPs to resolve and return per page. Clamped to a maximum of 1000, the API batch limit. Only the IPs on the requested page are fetched, so a smaller page size consumes less quota per call.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description richly supplements the readOnly/idempotent annotations by disclosing pagination behavior, per-IP error handling, in-memory caching, quota consumption, and the _meta counts. It also explains which endpoint is used by default and when ACCESS_DENIED can occur. No contradiction with annotations exists; in fact, the cache description reinforces the idempotentHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence earns its place: purpose, endpoint selection, pagination, error handling, caching, and quota accounting. It is front-loaded with the main purpose and progresses logically to operational details with no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, the description covers all operational concerns an agent needs: endpoint selection, pagination, caching, quota behavior, error handling, and output metadata. An output schema exists, so the description need not enumerate return fields, and the sibling context is simple enough that no additional routing information is required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does add useful behavior-level detail such as caching and errors, but it does not substantially add meaning to the parameters themselves beyond what the schema already specifies. For instance, the detailed parameter is already fully described in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear verb-resource statement: 'Look up geolocation, network, and metadata for one or more IP addresses.' It specifies the resource and the batch capability, which distinguishes it from single-purpose siblings like ipinfo_asn. However, it never explicitly names sibling tools or contrasts itself with ipinfo_geolocate, so differentiation is implicit rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context on how to use the tool, including when to set detailed=True, how pagination works, and that caching means the agent should not deduplicate IPs. It does not explicitly state when to choose this tool over a sibling or exclude cases for siblings, so it stops short of full 5-level guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ipinfo_quotaIpinfo QuotaA
Read-onlyIdempotent
Inspect

Check your IPinfo API usage and remaining quota.

Returns daily and monthly request counts, the plan limit, and how many requests remain.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and idempotentHint=true, so the description does not carry the full burden for behavioral safety. The description adds that it returns counts and limits, which is useful but is mostly return-value information rather than a new behavioral trait. It does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no redundant filler. The core purpose is front-loaded in the first sentence, and the second sentence concisely summarizes the return payload without drifting into unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only tool with rich annotations and an output schema, the description is complete enough. It tells the agent what the tool does and what data it returns, which is all that is needed to decide and invoke it correctly in this context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and 100% schema description coverage, so the schema effectively documents everything for inputs. The baseline for a no-parameter tool is 4, and the description appropriately avoids inventing parameter-related details. Nothing is missing here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Check') and resource ('IPinfo API usage and remaining quota'), making the tool's purpose immediately clear. The title 'Ipinfo Quota' and description distinguish it from sibling tools focused on geolocation, ASN, privacy, and residential proxy checks. An agent can tell this is the quota/usage tool without opening the schema or comparing options.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for checking current API usage and quota, so an agent would use it when those details are needed. However, it does not explicitly mention when not to use it or name any sibling alternative. There is no exclusion or routing guidance beyond the clear purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv0.1.13
    • Changedipinfo_asn1 field changed
      • removedOutput schema / description
        Removed value: -"Generic wrapper for non-object return types."
    • Changedipinfo_check_privacy1 field changed
      • removedOutput schema / description
        Removed value: -"Generic wrapper for non-object return types."
    • Changedipinfo_check_residential_proxy1 field changed
      • removedOutput schema / description
        Removed value: -"Generic wrapper for non-object return types."
    • Changedipinfo_geolocate1 field changed
      • removedOutput schema / description
        Removed value: -"Generic wrapper for non-object return types."
    • Changedipinfo_lookup1 field changed
      • removedOutput schema / description
        Removed value: -"Generic wrapper for non-object return types."
    • Changedipinfo_quota1 field changed
      • removedOutput schema / description
        Removed value: -"Generic wrapper for non-object return types."
  2. 6 tool updatesv0.1.12
    • First observedipinfo_asn
    • First observedipinfo_check_privacy
    • First observedipinfo_check_residential_proxy
    • First observedipinfo_geolocate
    • First observedipinfo_lookup
    • First observedipinfo_quota

TDQS

A4.1/5.0

Scored across 6 tools

Disambiguation3/5

The general ipinfo_lookup tool can return geolocation, ASN, and privacy flags (in detailed mode), overlapping with ipinfo_geolocate, ipinfo_asn, and ipinfo_check_privacy. Descriptions help clarify intended use, but an agent may still wonder when to use specialized tools versus the general lookup.

Naming Consistency4/5

All tools use the ipinfo_ prefix and snake_case, but suffixes mix verbs (lookup, geolocate) and nouns (asn, quota), and the check_* tools are more verbose. The pattern is mostly consistent with minor deviations.

Tool Count5/5

Six tools is well-scoped for IP intelligence: one general lookup, three specialized lookups (geolocation, ASN, privacy), a residential proxy check, and a quota check. Each targets a distinct API endpoint without excessive granularity.

Completeness4/5

Core IP intelligence is covered: geolocation, ASN, privacy, residential proxy, quota, and a general lookup. Some IPinfo API features like IP ranges or hosted domains are missing, but these are minor gaps agents can work around.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server providing IP address lookup capabilities. Enables AI assistants to fetch details about public IP addresses or the user's current device IP.
    58 npm
    ISC
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides IP geolocation data via ipinfo.io, enabling querying IP addresses for location, ISP, and other details through natural language.
    364 npm
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables IP address information lookup through natural language, including current public IP, geolocation, ISP, coordinates, and IPv4/IPv6 details via MCP stdio.
    -