Skip to main content
Glama

Location and Timezone MCP Server by RoxyAPI

Server Details

City geocoding and timezone resolution for birth data, for AI agents, one API key.

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Available Tools

3 tools
get_location_countriesList all countries - ISO codes and city coverageA
Read-only
Inspect

Returns every country with ISO 3166-1 alpha-2 and alpha-3 codes, plus the number of searchable cities per country. Use this endpoint to build country dropdown menus, regional filters, or to check city coverage before querying a birth location. Countries are sorted alphabetically by name. Covers Europe, Americas, Asia, Middle East, Africa, and Oceania.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum items to return per page. Range: 1-250, default 50.
offsetNoNumber of items to skip for pagination. Default 0.
compactNoSet true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true and destructiveHint=false, and the description adds useful behavioral context: countries are sorted alphabetically and coverage spans multiple regions. It does not overpromise on side effects, and the read-only nature aligns with 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 four tight sentences with no filler: it leads with the core result, then usage, then sorting and coverage. Every sentence adds value.

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 simple read-only list endpoint with all parameters documented in the schema and no output schema required, the description fully covers what an agent needs: what is returned, how it is ordered, and typical use cases. Nothing important 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?

Schema coverage is 100%, so the schema already documents limit, offset, and compact thoroughly. The description adds no parameter-specific meaning beyond what the schema provides, so the baseline of 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 clearly states the tool returns every country with ISO 3166-1 alpha-2 and alpha-3 codes plus searchable city counts, naming the exact resource and verb. It also distinguishes itself from siblings like get_location_search by focusing on country lists and coverage metadata.

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?

It gives explicit use cases: building country dropdown menus, regional filters, and checking city coverage before querying a birth location. It does not explicitly say when not to use it or name an alternative, but the context is clear enough for an agent to select it appropriately.

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

get_location_countries_iso2Get cities in a country - Geocoding directory sorted by populationA
Read-only
Inspect

Returns all cities for a specific country, identified by ISO 3166-1 alpha-2 code (e.g. DE for Germany, FR for France, GB for United Kingdom, US for United States). Each city includes geographic coordinates, IANA timezone, and DST-aware UTC offset for direct use in astrology birth chart, horoscope, transit, and panchang calculations. Cities sorted by population with the largest metropolitan areas first.

ParametersJSON Schema
NameRequiredDescriptionDefault
iso2YesISO 3166-1 alpha-2 country code, case-insensitive. Common codes: DE (Germany), FR (France), GB (United Kingdom), US (United States), ES (Spain), IT (Italy), NL (Netherlands), IN (India), BR (Brazil), JP (Japan).
limitNoMaximum items to return per page. Range: 1-100, default 20.
offsetNoNumber of items to skip for pagination. Default 0.
compactNoSet true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds behavioral context by specifying that each city includes geographic coordinates, IANA timezone, DST-aware UTC offset, and that cities are sorted by population descending. It does not mention pagination or rate limits, but these are not critical given 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 three sentences, front-loaded with the core action, followed by data field details and ordering. Every sentence provides value—what it returns, what data is included, and how results are sorted—without any fluff.

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 read-only tool with 4 parameters and no output schema, the description covers purpose, data fields, ordering, and use case. Pagination is handled by schema parameters, so the description does not need to explain it. It could arguably mention that results are paginated, but the schema makes that inferable.

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%, and the schema already documents all parameters (iso2, limit, offset, compact) with examples and constraints. The description repeats the country code examples but adds no new parameter-level semantics beyond what the schema provides, so it stays at the baseline.

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?

Description uses specific verb 'Returns' with resource 'all cities for a specific country', clearly identifying the tool's action. It distinguishes from sibling tools by focusing on country-code-based lookup and population-sorted output, as seen in the title and description.

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 clearly indicates this tool is for retrieving cities by ISO country code, with examples and use cases (astrology calculations). However, it does not explicitly contrast with sibling tools like get_location_search or state when NOT to use it, so exclusions are implicit rather than explicit.

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. Dates show when Glama detected each change.

  1. 3 tool updates
    • Changedget_location_countries2 fields changed
      • addedInput schema / examples
        Added value: +[
        +  {}
        +]
      • changedInput schema / properties / compact / description
        Previous value: -"Set true to receive the exact same data in a token-optimized shape that is cheaper for you to read: whitespace is stripped and every array of same-shaped objects is encoded columnar as {\"__cols\":[field names],\"__rows\":[[values]]}, so each field name is sent once instead of once per row. Fully lossless (no field or value is dropped or changed) and typically 40 to 52 percent fewer tokens on large results. Prefer true whenever token or inference cost matters. Default false returns standard indented JSON."New value: +"Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {\"__cols\":[names],\"__rows\":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens."
    • Changedget_location_countries_iso22 fields changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "iso2": "DE"
        +  }
        +]
      • changedInput schema / properties / compact / description
        Previous value: -"Set true to receive the exact same data in a token-optimized shape that is cheaper for you to read: whitespace is stripped and every array of same-shaped objects is encoded columnar as {\"__cols\":[field names],\"__rows\":[[values]]}, so each field name is sent once instead of once per row. Fully lossless (no field or value is dropped or changed) and typically 40 to 52 percent fewer tokens on large results. Prefer true whenever token or inference cost matters. Default false returns standard indented JSON."New value: +"Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {\"__cols\":[names],\"__rows\":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens."
    • Changedget_location_search2 fields changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "q": "berlin"
        +  }
        +]
      • changedInput schema / properties / compact / description
        Previous value: -"Set true to receive the exact same data in a token-optimized shape that is cheaper for you to read: whitespace is stripped and every array of same-shaped objects is encoded columnar as {\"__cols\":[field names],\"__rows\":[[values]]}, so each field name is sent once instead of once per row. Fully lossless (no field or value is dropped or changed) and typically 40 to 52 percent fewer tokens on large results. Prefer true whenever token or inference cost matters. Default false returns standard indented JSON."New value: +"Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {\"__cols\":[names],\"__rows\":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens."
  2. 1 tool update
    • Changedget_location_search1 field changed
      • changedInput schema / properties / q / description
        Previous value: -"City name to search for. Accepts bare city (\"berlin\"), city plus country (\"berlin germany\"), or comma-qualified (\"berlin, germany\", \"springfield, illinois\") for disambiguation. Matches against city name, province/state, or combined \"city country\" queries. Case-insensitive with partial matching (e.g. \"ber\" matches Berlin, Bern, Bergen)."New value: +"Place to search for, written the way a person would. Accepts a bare city (berlin), a city plus country (berlin germany), a comma-qualified place (richfield, utah), a fully qualified place (richfield, utah, united states), or a historic name (bombay, peking, constantinople). Commas are optional, and a qualifier the dataset spells differently, such as USA for United States, still resolves. Matched against city name, alternate names, state or province, and country. Add the state or country whenever the name is common, since that is what separates the six Springfields, and Richfield, Utah from Richfield, Minnesota."
  3. 3 tool updates
    • Changedget_location_countries1 field changed
      • changedInput schema / properties / offset / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
    • Changedget_location_countries_iso21 field changed
      • changedInput schema / properties / offset / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
    • Changedget_location_search1 field changed
      • changedInput schema / properties / offset / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
  4. 3 tool updates
    • Changedget_location_countries1 field changed
      • changedInput schema / properties / compact / description
        Previous value: -"Return the same data in a token-optimized compact shape (minified, with same-shaped arrays encoded columnar) to reduce LLM token cost. Lossless: no fields are dropped. Default false."New value: +"Set true to receive the exact same data in a token-optimized shape that is cheaper for you to read: whitespace is stripped and every array of same-shaped objects is encoded columnar as {\"__cols\":[field names],\"__rows\":[[values]]}, so each field name is sent once instead of once per row. Fully lossless (no field or value is dropped or changed) and typically 40 to 52 percent fewer tokens on large results. Prefer true whenever token or inference cost matters. Default false returns standard indented JSON."
    • Changedget_location_countries_iso21 field changed
      • changedInput schema / properties / compact / description
        Previous value: -"Return the same data in a token-optimized compact shape (minified, with same-shaped arrays encoded columnar) to reduce LLM token cost. Lossless: no fields are dropped. Default false."New value: +"Set true to receive the exact same data in a token-optimized shape that is cheaper for you to read: whitespace is stripped and every array of same-shaped objects is encoded columnar as {\"__cols\":[field names],\"__rows\":[[values]]}, so each field name is sent once instead of once per row. Fully lossless (no field or value is dropped or changed) and typically 40 to 52 percent fewer tokens on large results. Prefer true whenever token or inference cost matters. Default false returns standard indented JSON."
    • Changedget_location_search1 field changed
      • changedInput schema / properties / compact / description
        Previous value: -"Return the same data in a token-optimized compact shape (minified, with same-shaped arrays encoded columnar) to reduce LLM token cost. Lossless: no fields are dropped. Default false."New value: +"Set true to receive the exact same data in a token-optimized shape that is cheaper for you to read: whitespace is stripped and every array of same-shaped objects is encoded columnar as {\"__cols\":[field names],\"__rows\":[[values]]}, so each field name is sent once instead of once per row. Fully lossless (no field or value is dropped or changed) and typically 40 to 52 percent fewer tokens on large results. Prefer true whenever token or inference cost matters. Default false returns standard indented JSON."
  5. 3 tool updates
    • Changedget_location_countries1 field changed
      • addedInput schema / properties / compact
        Added value: +{
        +  "default": false,
        +  "description": "Return the same data in a token-optimized compact shape (minified, with same-shaped arrays encoded columnar) to reduce LLM token cost. Lossless: no fields are dropped. Default false.",
        +  "type": "boolean"
        +}
    • Changedget_location_countries_iso21 field changed
      • addedInput schema / properties / compact
        Added value: +{
        +  "default": false,
        +  "description": "Return the same data in a token-optimized compact shape (minified, with same-shaped arrays encoded columnar) to reduce LLM token cost. Lossless: no fields are dropped. Default false.",
        +  "type": "boolean"
        +}
    • Changedget_location_search1 field changed
      • addedInput schema / properties / compact
        Added value: +{
        +  "default": false,
        +  "description": "Return the same data in a token-optimized compact shape (minified, with same-shaped arrays encoded columnar) to reduce LLM token cost. Lossless: no fields are dropped. Default false.",
        +  "type": "boolean"
        +}
  6. 3 tool updates
    • First observedget_location_countries
    • First observedget_location_countries_iso2
    • First observedget_location_search

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to cast deterministic BaZi, Zi Wei Dou Shu, and Western astrology natal charts from birth details, with no setup or API key.
    1
    349
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Geospatial API tools for AI agents — geocoding, reverse geocoding, routing, isochrone, distance matrix, static maps, H3 hexagons, elevation, GPS map-matching, point-in-polygon, address normalisation, timezone lookup, and batch geocoding. Built on OpenStreetMap infrastructure. Cost-effective alternative to Google Maps API.
    18
    37
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    High-precision astrology tools for LLM agents, including natal charts, transits, progressions, synastry, and more, backed by Swiss Ephemeris.
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables agents to compute cross-verified natal charts, verify ascendants from other tools, and inspect historical timezone data, while refusing to return unverifiable results.
    4
    574
    2
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.1/5.0
Disambiguation3/5

The three tools serve distinct purposes (country list, city list, place search), but the name 'get_location_countries_iso2' misleadingly suggests it returns country details rather than cities, creating potential confusion with 'get_location_countries'.

Naming Consistency3/5

All tools share the 'get_location_' prefix, but the suffixes are inconsistent: one describes an action ('search') while two describe resources ('countries', 'countries_iso2'), and the latter does not match its actual output (cities).

Tool Count5/5

Three tools is well-scoped for a location/timezone resolution server, covering country discovery, city listing, and place search without redundancy.

Completeness4/5

The core workflow of place name to coordinates/timezone is covered (country → city → search), but there is no reverse geocoding from coordinates or a direct timezone lookup, leaving a minor gap.

Resources