{"server":{"name":"com.roxyapi/location","_meta":{"io.modelcontextprotocol.registry/publisher-provided":{"supportUrl":"https://roxyapi.com/contact","privacyPolicyUrl":"https://roxyapi.com/policy/privacy","termsOfServiceUrl":"https://roxyapi.com/policy/terms"}},"icons":[{"src":"https://roxyapi.com/logo.png","sizes":["512x512"],"mimeType":"image/png"}],"title":"Location and Timezone MCP Server by RoxyAPI","$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","remotes":[{"url":"https://roxyapi.com/mcp/location","type":"streamable-http","headers":[{"name":"X-API-Key","isSecret":true,"isRequired":true,"description":"RoxyAPI key from roxyapi.com/account"}]}],"version":"1.0.1","websiteUrl":"https://roxyapi.com/products/location-api","description":"City geocoding and timezone resolution for birth data, for AI agents, one API key."},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","isLatest":true,"updatedAt":"2026-09-25T12:53:36.873291Z","publishedAt":"2026-09-25T12:53:36.873291Z","statusChangedAt":"2026-09-25T12:53:36.873291Z"},"dev.protogrid/connectability":{"class":"R1","autonomous":true,"human_steps":[],"preferred":{"kind":"remote","idx":0},"remotes":[{"idx":0,"url":"https://roxyapi.com/mcp/location","transport":"streamable-http","templated":false,"headers":[{"name":"X-API-Key","required":true,"secret":true,"value":null,"secret_names":["X_API_KEY"]}],"auth":{"type":"api_key","location":null,"secret_name":"X_API_KEY","oauth":null},"protocol":{"supported_versions":["2026-07-28"],"stateless":true},"health":{"reachable":true,"uptime_30d":0.92523366,"latency_ms_p50":543,"consecutive_failures":0,"last_probe_at":"2026-10-19T10:11:43.732Z","last_ok_at":"2026-10-19T10:11:43.732Z"}}],"packages":[]},"dev.protogrid/tools":[{"name":"get_location_countries","title":"List all countries - ISO codes and city coverage","description":"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.","annotations":{"readOnlyHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T10:11:43.732Z"},{"name":"get_location_countries_iso2","title":"Get cities in a country - Geocoding directory sorted by population","description":"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.","annotations":{"readOnlyHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T10:11:43.732Z"},{"name":"get_location_search","title":"Search cities worldwide - Geocoding autocomplete with coordinates and timezone","description":"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.","annotations":{"readOnlyHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T10:11:43.732Z"}],"dev.protogrid/trust":{"score":82,"components":{"hygiene":80,"liveness":97,"freshness":100,"provenance":55},"drivers":["+dns-namespace","+website","+reachable","+uptime-93%","+updated-24d-ago","-no-repository"],"flags":["no-repository"],"blocked":false,"computed_at":"2026-10-19T13:43:43.225Z","disclaimer":"Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed."},"dev.protogrid/quality":{"score":89,"label":"good","components":{"auth":null,"hygiene":86,"protocol":88,"stability":100,"dependencies":null},"checks":[{"id":"protocol.modern","detail":"supports 2026-07-28 (server/discover)","status":"pass","category":"protocol"},{"id":"protocol.stateless","detail":"answers without a session","status":"pass","category":"protocol"},{"id":"protocol.transport","detail":"streamable HTTP","status":"pass","category":"protocol"},{"id":"protocol.list_ttl","detail":"tools/list declares ttlMs 0, so clients re-fetch it on every use","status":"warn","category":"protocol"},{"id":"auth.prm","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.as_metadata","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.cimd","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.secret_in_url","detail":"no templated URL","status":"na","category":"auth"},{"id":"tools.descriptions","detail":"every tool has a description","status":"pass","category":"hygiene"},{"id":"tools.description_length","detail":"descriptions are concise","status":"pass","category":"hygiene"},{"id":"tools.schemas","detail":"every tool has an object input schema","status":"pass","category":"hygiene"},{"id":"tools.annotations","detail":"3 of 3 tools declare readOnlyHint or destructiveHint","status":"pass","category":"hygiene"},{"id":"tools.directory_hints","detail":"no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_location_countries (idempotentHint, openWorldHint); get_location_countries_iso2 (idempotentHint, openWorldHint); get_location_search (idempotentHint, openWorldHint)","status":"fail","category":"hygiene"},{"id":"tools.token_cost","detail":"about 1,154 tokens to load every tool","status":"pass","category":"hygiene"},{"id":"tools.api_dump","detail":"tools are not a one-to-one API dump","status":"pass","category":"hygiene"},{"id":"stability.changes","detail":"no tool changes in 30 days","status":"pass","category":"stability"},{"id":"stability.rug_pull","detail":"no tool changed its meaning under the same name","status":"pass","category":"stability"},{"id":"deps.known_vulns","detail":"no npm or PyPI package","status":"na","category":"dependencies"},{"id":"deps.mcp_sdk_version","detail":"no npm or PyPI package","status":"na","category":"dependencies"},{"id":"deps.resolvable","detail":"no npm or PyPI package","status":"na","category":"dependencies"}],"drivers":["-tools.directory_hints","~protocol.list_ttl"],"flags":[],"tool_count":3,"token_estimate":1154,"tools_hash":"f5415dd46522969c5f43ca0542e4ecae","tools_changed_at":null,"computed_at":"2026-10-19T13:37:25.213Z","disclaimer":"Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed."},"dev.protogrid/identity":{"canonical_id":"com.roxyapi/location","aliases":[],"alias_count":0,"repository_key":null,"owner":{"verified":false,"method":null,"since":null}}},"next_actions":[{"action":"list_tools","description":"Every current tool with input schemas","href":"/v1/servers/com.roxyapi%2Flocation/tools","arguments":{"name":"com.roxyapi/location"}},{"action":"get_connection","description":"Minimal connection block for the preferred remote or package","href":"/v1/servers/com.roxyapi%2Flocation/connection?target=mcpServers","arguments":{"name":"com.roxyapi/location","target":"mcpServers"}},{"action":"search","description":"Find other servers by intent","href":"/v1/search?q={query}","arguments":{"q":"{query}"}}]}