
City geocoding and timezone resolution for birth data, for AI agents, one API key.
Call this server's tools from your browser. Nothing to install.
RoxyAPI key from roxyapi.com/account
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
Maximum items to return per page. Range: 1-250, default 50.
Number of items to skip for pagination. Default 0.
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.
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.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Maximum items to return per page. Range: 1-250, default 50. |
| offset | integer | Number of items to skip for pagination. Default 0. |
| compact | boolean | 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. |
{
"type": "object",
"examples": [
{}
],
"properties": {
"limit": {
"type": "integer",
"default": 50,
"example": 50,
"maximum": 250,
"minimum": 1,
"description": "Maximum items to return per page. Range: 1-250, default 50."
},
"offset": {
"type": "integer",
"default": 0,
"example": 0,
"minimum": 0,
"description": "Number of items to skip for pagination. Default 0."
},
"compact": {
"type": "boolean",
"default": false,
"description": "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."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| iso2* | string | ISO 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). |
| limit | integer | Maximum items to return per page. Range: 1-100, default 20. |
| offset | integer | Number of items to skip for pagination. Default 0. |
| compact | boolean | 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. |
{
"type": "object",
"examples": [
{
"iso2": "DE"
}
],
"required": [
"iso2"
],
"properties": {
"iso2": {
"type": "string",
"example": "DE",
"maxLength": 2,
"minLength": 2,
"description": "ISO 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)."
},
"limit": {
"type": "integer",
"default": 20,
"example": 20,
"maximum": 100,
"minimum": 1,
"description": "Maximum items to return per page. Range: 1-100, default 20."
},
"offset": {
"type": "integer",
"default": 0,
"example": 0,
"minimum": 0,
"description": "Number of items to skip for pagination. Default 0."
},
"compact": {
"type": "boolean",
"default": false,
"description": "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."
}
}
}Turn a place name into coordinates, an IANA timezone and a DST-aware UTC offset, across 235,000+ cities and towns in 240+ countries. Coverage reaches rural towns of a few hundred people and every administrative seat, so a birthplace outside a major metro resolves as reliably as a capital. Matching is case-insensitive, accent-insensitive and partial, so ber matches Berlin, Bern and Bergen, native scripts are transliterated, and historic names resolve to the current place, so bombay returns Mumbai and peking returns Beijing. Results are ordered by match quality first and population second, so an exactly named small town is never buried under a larger city that merely shares its opening letters. Built for birth chart location pickers, horoscope apps, event scheduling, and any feature that needs place-to-coordinates resolution.
| Argument | Type | Description |
|---|---|---|
| q* | string | 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. |
| limit | integer | Maximum items to return per page. Range: 1-50, default 10. |
| offset | integer | Number of items to skip for pagination. Default 0. |
| compact |
| boolean |
| 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. |
{
"type": "object",
"examples": [
{
"q": "berlin"
}
],
"required": [
"q"
],
"properties": {
"q": {
"type": "string",
"example": "berlin",
"maxLength": 100,
"minLength": 1,
"description": "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."
},
"limit": {
"type": "integer",
"default": 10,
"example": 10,
"maximum": 50,
"minimum": 1,
"description": "Maximum items to return per page. Range: 1-50, default 10."
},
"offset": {
"type": "integer",
"default": 0,
"example": 0,
"minimum": 0,
"description": "Number of items to skip for pagination. Default 0."
},
"compact": {
"type": "boolean",
"default": false,
"description": "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."
}
}
}