Skip to main content
Glama
pdichone

SQLite Geography Server

by pdichone

For the sqlite_server project:

Here's a comprehensive list of questions/queries you can ask Claude's desktop app to trigger these MCP tools: 🌍 Country Exploration Basic Country Searches

"Find countries with 'United' in the name" "Search for countries containing 'Stan'" "What countries have 'Republic' in their name?" "Show me countries with 'Island' in the name" "Find all countries that start with 'A'"

Specific Country Information

"Tell me about the United States" "Get information about Japan" "What's the capital of France?" "Show me details about Brazil" "Get country information for Germany"

Regional Queries

"What countries are in Europe?" "Show me all African countries" "List countries in Asia" "What countries are in North America?" "Find countries in Oceania"

Currency-Based Queries

"What countries use the Euro?" "Which countries use the US Dollar?" "Show me countries that use the British Pound" "What countries have their own currency called 'Dollar'?" "Find countries using the Japanese Yen"

πŸ™οΈ City Exploration City Searches

"Find cities named London" "Search for cities with 'New' in the name" "What cities are called Paris?" "Show me cities named Alexandria" "Find cities that start with 'San'"

Country-Specific City Queries

"What are the major cities in the United States?" "Show me cities in Japan" "List cities in the United Kingdom" "What cities are in Canada?" "Find cities in Australia"

Geographic Location Queries

"What cities are near coordinates 40.7, -74.0?" (New York area) "Find cities near London's coordinates" "Show me cities around 48.8, 2.3" (Paris area) "What cities are near 35.6, 139.7?" (Tokyo area) "Find cities close to 51.5, -0.1" (London coordinates)

πŸ“ State/Province Exploration State Searches

"Find states with 'New' in the name" "Search for states containing 'Carolina'" "What states have 'Island' in their name?" "Show me states that start with 'M'" "Find provinces with 'British' in the name"

Country-Specific State Queries

"What states are in the United States?" "Show me provinces in Canada" "List states in Australia" "What administrative divisions does Germany have?" "Find states in Brazil"

πŸ—ΊοΈ Regional Analysis Region Exploration

"What are all the world regions?" "Show me the different regions of the world" "List all continental regions" "What subregions exist?" "How is the world divided into regions?"

Subregion Queries

"What subregions are in Asia?" (region_id 3) "Show me European subregions" (region_id 4) "What are the subregions of Africa?" (region_id 1) "List American subregions" (region_id 2)

πŸ“Š Statistical and Summary Queries Database Statistics

"How many countries are in the database?" "What are the database statistics?" "Give me a count of all the data" "How many cities and countries do you have?" "What's the total amount of geographical data?"

Available Tools

15 tools
get_all_regionsB
Get all world regions.

Returns:
    List of all regions
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the disclosure burden. For a zero-parameter read-only lookup the risk surface is small, but it says nothing about ordering, completeness, or caching behavior of the returned list.

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 short and front-loaded with the purpose. The second line ('Returns: List of all regions') restates the first sentence and is redundant given the output schema exists.

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

Completeness4/5

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

An output schema is present, so the description need not spell out return values. For a simple parameterless lookup, the description covers what an agent needs; only ordering/pagination hints are absent, which is minor here.

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 takes no parameters, so there is nothing for the description to disambiguate. This is the baseline case where a 4 is appropriate regardless of description text.

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 states a clear verb and resource ('Get all world regions'), which is enough to distinguish it from parameterized siblings like get_subregions_in_region or get_countries_by_region. It is clear but offers no explicit differentiation language naming those siblings.

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?

There is no guidance on when to use this tool versus alternatives such as get_subregions_in_region or the various country lookups. The agent must infer that this is the unfiltered top-level listing purely from the wording.

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

get_cities_in_countryA
Get cities in a specific country.

Args:
    country_code: Two-letter country code (e.g., "US", "GB", "FR")
    limit: Maximum number of cities to return (default 50)

Returns:
    List of cities in the country
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
country_codeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses the default limit of 50 and that a list of cities is returned, but says nothing about pagination, behavior on invalid/unknown country codes, or how the limit interacts with total results.

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 purpose sentence is front-loaded and the Args/Returns structure is easy to scan. The labeling is slightly boilerplate-heavy for a two-parameter tool, but no sentence is wasted.

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

Completeness4/5

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

An output schema exists, so return-value detail is not required, and both parameters are documented with format and defaults. What remains thin is error handling and pagination semantics, which are minor for a simple read tool.

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?

Schema description coverage is 0%, so the description must compensate, and it does: country_code is defined as a two-letter code with concrete examples ('US', 'GB', 'FR'), and limit is explained as a maximum count with a stated default of 50.

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?

States a specific verb and resource with scope: retrieving cities within one country. It does not, however, distinguish itself from the sibling search_cities (keyword lookup) or get_states_in_country, leaving the agent to infer the boundary.

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?

Usage is only implied by the phrase 'in a specific country', which suggests a country-scoped enumeration versus keyword search, but no explicit when-to-use or when-not-to-use statement is given, and no alternative is named.

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

get_countriesB
Simple country search by name.

Args:
    name: Country name to search for. This is optional. Default, return all countries from the database.

Returns:
    List of matching countries
ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose one meaningful behavioral fact β€” omitting 'name' returns the entire country table β€” which is the kind of context an agent needs to avoid accidental full-table reads. It says nothing about result size, ordering, or pagination, leaving gaps for a tool with zero annotation coverage.

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

Conciseness3/5

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

The purpose is front-loaded and the Args section is compact. The 'Returns: List of matching countries' section is redundant because an output schema already exists, and the pseudo-Python formatting is heavier than the one-parameter tool warrants. Not wasteful enough to be a problem, but not tight either.

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

Completeness3/5

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

With an output schema present, return values need no explanation, and the parameter behavior is covered. What is missing is disambiguation from the many country-related siblings and any note on matching behavior or result limits β€” enough gaps to keep this at a minimum-viable level rather than complete.

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?

Schema description coverage is 0%, so the description must compensate for the single parameter, and it does: it names 'name', explains it is a search string, marks it optional, and defines the default behavior when omitted. That is a solid override of the schema gap, though it adds no matching semantics (exact vs partial match).

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 states a clear verb and resource ('country search by name') and is easy to understand on its own. However, it does not distinguish itself from the sibling 'search_countries' or 'get_country', leaving the agent unsure which of the several country-lookup tools to pick. The word 'Simple' hints at a difference but never explains it.

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?

It states that 'name' is optional and that omitting it returns all countries, which is real usage information. But there is no guidance on when to choose this over the overlapping siblings 'search_countries', 'get_country', or 'get_countries_by_region'. Usage is implied rather than prescribed.

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

get_countries_by_currencyA
Find all countries that use a specific currency.

Args:
    currency: Currency code (e.g., "USD", "EUR", "GBP")

Returns:
    List of countries using the currency
ParametersJSON Schema
NameRequiredDescriptionDefault
currencyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it only partially discharges it: 'Find all countries' implies a safe read, and the returns line confirms a list comes back. It says nothing about pagination, result size limits, behavior for unknown currency codes, or whether the lookup is case-sensitive.

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 purpose sentence is front-loaded and the Args/Returns docstring blocks are compact and easy to scan. The 'Returns' block is somewhat redundant given an output schema exists, but overall nothing is bloated.

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

Completeness4/5

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

For a single-required-parameter read tool with an output schema, the description covers the core contract adequately. Usage routing versus sibling lookups is the one genuinely missing piece, but return values need not be re-explained.

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?

Schema description coverage is 0%, so the description must compensate, and it does by naming the parameter and giving concrete valid values ('USD', 'EUR', 'GBP'). It stops short of stating the expected format (ISO 4217) or case behavior, but the examples add real meaning beyond the bare string schema.

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 ('Find') and resource ('countries') with an explicit filter key ('that use a specific currency'). This clearly separates it from sibling lookups like get_countries_by_region and get_countries, which the agent can distinguish without opening either schema.

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?

There is no guidance on when to prefer this tool over alternatives such as search_countries or get_countries, and no prerequisites or exclusions are stated. The currency filter is implied by the name but never framed as a selection criterion versus siblings.

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

get_countries_by_regionC
Get all countries in a specific region.

Args:
    region: Region name (e.g., "Europe", "Asia", "Africa")

Returns:
    List of countries in the region
ParametersJSON Schema
NameRequiredDescriptionDefault
regionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read-only lookup but does not state that, nor does it describe behavior for an unrecognized region name, case sensitivity, or result ordering/size.

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?

Front-loaded with the core purpose in one sentence and no wasted prose. The "Returns" block is largely redundant given a full output schema, which slightly dilutes an otherwise tight docstring.

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

Completeness3/5

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

For a simple one-parameter lookup with an output schema, the description covers the basics and gives example inputs. It still leaves gaps around valid region values and how this differs from sibling lookup tools, which matters given how many similar siblings exist.

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 0%, so the description must compensate for the single undocumented region parameter. It does add value with example values ("Europe", "Asia", "Africa"), but omits whether the name is case-sensitive or must match get_all_regions output, leaving the compensation partial.

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?

States a specific verb and resource ("Get all countries in a specific region"), so an agent immediately knows the operation. However, it offers no differentiation from close siblings like get_countries or search_countries, which an agent could easily confuse for the same task.

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 never says when to use this tool instead of get_countries, search_countries, or get_subregions_in_region, all of which appear in the sibling list. There is no condition, prerequisite, or exclusion given, so selection is left entirely to inference.

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

get_countries_summaryA
Get a summary of all countries with basic information.

Returns:
    List of countries with just name, code, capital, and region
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It does disclose the returned fields and the 'all countries' scope, but says nothing about ordering, pagination, size, or that it is a non-mutating read. Adequate minimum, but thin for an unannotated tool.

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?

Two short lines, front-loaded with purpose followed by return fields. Every sentence earns its place with no filler.

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

Completeness4/5

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

An output schema exists, so the description need not restate return values, and with no parameters the input side is trivially complete. The only meaningful gap is the absence of explicit differentiation from get_countries/search_countries.

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 takes zero parameters, so there is no parameter semantics to explain; baseline 4 applies. Nothing in the description is required to interpret an input.

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?

States a specific verb (Get) and resource (summary of all countries) and clarifies the payload is basic information limited to name, code, capital, and region. This implicitly contrasts with the fuller get_countries/get_country siblings, but no sibling is named explicitly.

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 word 'summary' and 'basic information' imply you use this when you only need a lightweight country listing and not the full record returned by get_countries. There is no explicit when-to-use statement or named alternative, so the routing guidance is only inferable.

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

get_countryC
Get detailed information about a specific country.

Args:
    country_code: Two-letter ISO country code (e.g., "US", "GB", "FR")

Returns:
    Complete country information
ParametersJSON Schema
NameRequiredDescriptionDefault
country_codeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read of a single entity but never states that it is read-only, what happens on an unknown/invalid code, or whether the lookup is case-sensitive or cached.

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?

Front-loaded single-sentence purpose followed by compact Args/Returns blocks; nothing is padded. The closing "Returns: Complete country information" is vague filler, but it is cheap.

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

Completeness3/5

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

An output schema exists, so return values need not be documented, and the one parameter is covered. What is missing is disambiguation from the numerous sibling lookup tools, which is the main thing an agent needs to choose 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 0%, so the property has no documented meaning. The description partially compensates by defining country_code as a two-letter ISO code with examples ("US", "GB", "FR"), which is genuinely useful, but it omits validation behavior or accepted edge cases.

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?

States a specific verb and resource ("Get detailed information about a specific country") and the word "detailed" hints at a depth distinction versus summary/list siblings. However, it never names or contrasts with the many siblings (get_countries, search_countries, get_countries_summary), so an agent must infer the boundary itself.

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?

No when-to-use guidance, no prerequisites, and no alternative named. With 14 sibling tools covering countries, cities, regions and currencies, the absence of any routing hint (e.g., "use search_countries to find a code first") is a real gap.

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

get_database_statsB
Get statistics about the database contents.

Returns:
    Dictionary with counts of countries, cities, states, regions, and subregions
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It implies a read-only aggregate query and enumerates what is returned, but it says nothing about permissions, caching, cost, or whether counts are live. Adequate but thin for a zero-annotation tool.

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?

Front-loaded with the purpose, followed by a compact returns list. Every line is relevant, though the 'Returns:' block partially duplicates what the output schema already declares.

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

Completeness4/5

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

An output schema exists, so the description need not explain return values, and there are no parameters to specify. For a simple aggregate read tool, what is present is sufficient; only usage context is missing.

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 takes zero parameters, so there is no parameter semantics to document. The baseline for a parameterless tool is 4.

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?

States a specific verb and resource: 'Get statistics about the database contents.' It is clearly distinguishable from siblings that return entities (countries, cities, regions) rather than aggregate counts, but it does not explicitly name or contrast with any sibling.

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?

There is no when-to-use guidance, no exclusions, and no mention of alternatives. The agent can infer it is for aggregate counts, but nothing states when to prefer this over get_countries_summary or a search tool.

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

get_states_in_countryA
Get all states/provinces in a specific country.

Args:
    country_code: Two-letter country code (e.g., "US", "CA", "AU")

Returns:
    List of states/provinces in the country
ParametersJSON Schema
NameRequiredDescriptionDefault
country_codeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the return content (list of states/provinces) and read-only semantics implied by 'Get all', but says nothing about behavior for invalid or unknown country codes, case sensitivity, pagination, or result ordering.

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?

Short and front-loaded, with the one-line purpose leading before the Args/Returns blocks. The Args/Renders sections are slightly mechanical but each line carries useful information with no redundancy.

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

Completeness4/5

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

For a single-parameter lookup tool with an output schema already declared, the description covers purpose, the one parameter's format, and roughly what comes back. Missing only edge-case behavior for invalid codes, which is a minor gap at this complexity.

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?

Schema description coverage is 0%, so the description must compensate, and it does: it defines country_code as a two-letter code and supplies concrete examples ("US", "CA", "AU"). It stops short of naming the standard (ISO 3166-1 alpha-2) or stating case handling, so not a 5.

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?

States a specific verb+resource: retrieving all states/provinces within a given country. It is distinguishable from siblings like get_cities_in_country and search_states by its resource scope (all states in one country). It does not name a sibling explicitly, 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 Guidelines3/5

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

Usage is implied by the resource: call it when you need the full state/province list for a country. There is no explicit guidance on when to prefer search_states (filtered lookup) or get_all_regions, nor any stated prerequisites.

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

get_subregions_in_regionB
Get all subregions within a specific region.

Args:
    region_id: The ID of the parent region

Returns:
    List of subregions in the region
ParametersJSON Schema
NameRequiredDescriptionDefault
region_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden, and it does little beyond stating that a list is returned. It omits pagination behavior, error handling for invalid region IDs, and whether the relationship is direct-only or recursive.

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 purpose statement is front-loaded and short, and the Args/Returns block is compact. The boilerplate formatting adds little, but there is no wasted prose.

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

Completeness3/5

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

An output schema exists, so return values need not be spelled out. But with no annotations and no usage guidance, an agent lacks context about the geographic hierarchy involved and how this tool relates to the many sibling lookup tools.

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?

Schema description coverage is 0%, so the description must compensate, and it does: it clarifies that region_id is 'the ID of the parent region', adding hierarchy semantics the bare schema title 'Region Id' does not convey.

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?

States a specific verb and resource ('Get all subregions within a specific region'), which is clear enough for an agent to understand the operation. However, it offers no differentiation from related siblings such as get_all_regions or get_countries_by_region, and the term 'subregions' is left undefined in this domain.

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?

There is no guidance on when to use this tool versus get_all_regions, get_countries_by_region, or get_states_in_country. Usage is only implied by the name, with no stated conditions, prerequisites, or exclusions.

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

get_top_chattersB

Retrieve the top chatters sorted by number of messages.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the disclosure burden alone, and 'Retrieve' implies a safe read operation. However, it does not state how many chatters are returned, over what time window, or whether the operation requires any scoping β€” meaningful gaps for a ranking tool. The core behavioral signal (read, sorted descending by message count) is present but thin.

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?

A single front-loaded sentence with no filler or redundant phrasing. It is arguably too terse given the missing count/scope information, but nothing in it is wasted.

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

Completeness3/5

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

With no output schema and no annotations, the description should describe the return shape, but it only hints at it via the sort criterion. An agent can call the tool, but cannot anticipate list length, time range, or response fields. Adequate for a trivial zero-argument read, but with clear omissions.

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 takes zero parameters, so there is no parameter semantics to document and the baseline of 4 applies. Nothing in the description contradicts or misrepresents the empty argument object.

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 gives a specific verb ('Retrieve') and resource ('top chatters') plus the sort criterion ('by number of messages'), so the agent knows exactly what it returns. It is clearly distinct from every sibling, which are all geography-lookup tools. It loses a point only because 'top' is undefined (no count or threshold).

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?

There is no when-to-use guidance, no prerequisites, and no mention of alternatives or related tools. The description only states what the tool does, leaving the agent to infer the context in which it should be invoked.

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

search_citiesA
Search for cities by name and optionally filter by country.

Args:
    name: City name to search for (partial matches allowed)
    country_code: Two-letter country code to filter by (optional)

Returns:
    List of cities matching the search criteria
ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
country_codeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that matching is partial and the return is a list, but says nothing about result limits, pagination, performance, or what happens when name is left at its empty default – an important behavioral question for a search endpoint.

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?

Short and front-loaded, with the core purpose in the first sentence and Args/Returns following. The Args block slightly duplicates the sentence above but stays within useful bounds.

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

Completeness4/5

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

With an output schema present, the Returns line need only be minimal, and both parameters are explained. The remaining gap is behavior at default/empty inputs, which neither annotations nor description cover.

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?

Schema description coverage is 0% (only titles/defaults), so the description does the work: it clarifies that name allows partial matches and that country_code is a two-letter code, which is exactly the semantics the schema lacks. It doesn't address the empty-string defaults.

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?

States a specific verb+resource ("Search for cities") plus the filtering dimension (country). It is distinguishable from list-style siblings such as get_cities_in_country, though it never names those siblings explicitly.

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?

Implies usage: search when you have a name fragment, filter by country optionally. But with siblings like get_cities_in_country and search_countries in the same family, the description offers no explicit rule for choosing among them and no exclusions.

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

search_countriesB
Search for countries by name.

Args:
    name: Country name to search for (partial matches allowed)

Returns:
    List of countries matching the search
ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose one useful behavioral trait β€” partial matches are allowed β€” but says nothing about result limits, ordering, pagination, or what an empty name value does. For a search tool with zero annotation coverage this is only partial disclosure.

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?

Short and front-loaded, with the core purpose in the first sentence. The 'Returns' section is largely wasted since an output schema already exists, but the overall size is modest and not padded.

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

Completeness3/5

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

The presence of an output schema excuses it from describing return values. What's missing for a tool in a dense sibling cluster is disambiguation from get_countries/get_country and the behavior of the default empty string, so the definition is adequate but incomplete.

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 0%, so the description must compensate; it does explain the sole parameter ('Country name to search for') and its matching semantics (partial matches allowed). It does not explain the empty-string default, which likely means 'return everything' and is a meaningful behavioral difference the agent can't infer from the schema alone.

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?

States a specific verb and resource ('Search for countries by name'), which is clear enough to act on. However, it never distinguishes itself from the very similar siblings get_countries and get_country, leaving the agent to infer the difference between searching, listing, and fetching one.

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?

No guidance on when to use this instead of get_countries, get_country, or get_countries_by_region. The description gives no context about intended use cases or exclusions, so routing among the sibling tools is left entirely to inference.

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

search_statesB
Search for states/provinces by name and optionally filter by country.

Args:
    name: State/province name to search for (partial matches allowed)
    country_code: Two-letter country code to filter by (optional)

Returns:
    List of states/provinces matching the search criteria
ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
country_codeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations exist, so the description carries the full behavioral burden. It notes the return is a matching list, but discloses nothing about result limits, pagination, empty/ambiguous-name behavior, or whether country_code with an empty name returns all states. For an unannotated read tool this is a notable gap.

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 Args/Returns layout is front-loaded with the core purpose sentence and each line is short. The 'Returns' section is somewhat redundant given an output schema exists, a small amount of waste but nothing bloated.

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

Completeness4/5

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

For a simple two-parameter lookup with an output schema available to describe results and no annotations to reconcile, the definition covers both parameters and the read-only nature is implied by 'Search'. It is essentially complete, missing only edge-case behavior and sibling routing.

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?

Schema description coverage is 0% (only titles and empty-string defaults), so the description does the compensating work: it tells the agent that name allows partial matches and country_code is a two-letter code. Both parameters gain semantics the schema lacks, though it doesn't clarify default/empty behavior.

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 states a specific verb+resource ('Search for states/provinces') and the key filtering capability ('by name and optionally filter by country'). It is clear what it does, though it never names the closest sibling (get_states_in_country) to disambiguate when a search-by-name is preferable to a straight country listing.

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?

Usage is only implied: 'search by name' suggests a name-driven lookup, and country_code narrows results. With siblings like get_states_in_country and get_all_regions, the definition should say when to pick this one over those, but it offers no explicit when/when-not guidance or alternatives.

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. 15 tool updatesv0.1.0
    • First observedget_all_regions
    • First observedget_cities_in_country
    • First observedget_countries
    • First observedget_countries_by_currency
    • First observedget_countries_by_region
    • First observedget_countries_summary
    • First observedget_country
    • First observedget_database_stats
    • First observedget_popular_currencies
    • First observedget_states_in_country
    • First observedget_subregions_in_region
    • First observedget_top_chatters
    • First observedsearch_cities
    • First observedsearch_countries
    • First observedsearch_states

TDQS

B3.4/5.0

Scored across 15 tools

Disambiguation3/5

search_countries and get_countries overlap almost entirelyβ€”both search by name with partial matches, and get_countries even defaults to all countries. get_countries_summary also returns country lists, so an agent could easily pick the wrong tool, though other tools are distinct.

Naming Consistency5/5

All 15 tools use snake_case with a consistent verb_noun structure (get_, search_). The pattern is predictable and readable throughout, including the odd get_top_chatters.

Tool Count4/5

15 tools is a reasonable count for a geography database covering countries, cities, states, regions, and currencies. However, get_top_chatters is out of scope and a couple of country-listing tools are redundant.

Completeness4/5

Core geography entities are well covered with search and list operations for countries, cities, states, and regions. Minor gaps include no dedicated get_city, get_state, or get_region detail endpoints, but search functions largely compensate.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides tools to retrieve and compare detailed information about countries, including population, region, and currency data. It allows users to search for specific countries or list them by region.
    -
  • A
    license
    B
    quality
    D
    maintenance
    Provides access to the GeoDB Cities API for retrieving global geographic data including city details, populations, and local time. It enables users to find nearby locations, calculate distances between places, and browse administrative divisions across countries.
    18
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides world country data from the REST Countries API, enabling search by name, ISO code, region, language, or currency, with details like capital, population, and languages.
    31 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Provides complete world location data (countries, states, cities) as an MCP server for AI assistants, enabling search and retrieval of geographic information through 11 tools and 5 resources.
    290 npm
    1
    MIT