REST Countries MCP. Keyless geography/country reference data from restcountries.com (v3.1): names, ISO codes, capitals, region/subregion, population, area, languages, currencies, flags, coordinates, land borders, timezones, and TLDs. Keyless.
Three well-named, read-only tools with clear descriptions (avg 180 chars, within baseline 194). All tools have complete input schemas with typed parameters and descriptions. However, output schemas are undocumented, LLMs cannot predict response structure for downstream chaining. Error handling returns structured objects but lacks recovery guidance (e.g., 'country not found' should suggest alternatives). Parameter descriptions are good but lack format constraints (e.g., region enum not enforced in schema). No tool annotations (readOnlyHint, idempotentHint) despite all being safe, read-only operations.
List countries in a world region (e.g. "Europe", "Asia", "Africa", "Americas", "Oceania"), sorted by population descending. Returns lite records (name, ISO codes, capital, subregion, population). Keyless.
Get a single country by ISO code (cca2/cca3/ccn3, e.g. "JP", "JPN", "392"). Returns the full compact record plus TLD and UN-membership. Keyless.
Search countries by full or partial name (e.g. "japan", "united", "korea"). Returns compact records with ISO codes, capital, region, population, area, languages, currencies, borders, timezones, flag, and coordinates. Keyless.
Output schemas undocumented. LLMs cannot predict response structure (e.g., does search_countries return 'countries' array or 'results'? What fields in each country object?). Forces agents to guess field names for downstream chaining.
Region parameter in countries_by_region accepts free-form string but description lists only 5 valid values ('Europe', 'Asia', 'Africa', 'Americas', 'Oceania'). Should be declared as enum in inputSchema to prevent hallucinated regions.
Error responses lack recovery guidance. 'country not found' should suggest 'Try search_countries() with a partial name' or list available alternatives. Current errors give LLM no actionable next step.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
No tool annotations despite all three tools being read-only and idempotent. Adding readOnlyHint and idempotentHint would signal to agents these are safe to retry and compose without side effects.
Limit parameter in countries_by_region lacks min/max constraints in schema. Description says 'default 30, max 60' but schema has no minimum/maximum fields. LLMs may pass invalid values (0, -1, 1000).