World Bank Data360 MCP — the World Bank's modern unified data platform. Aggregates 90+ international databases (WDI, IMF BOP, WHO, ILO, UNESCO, etc.) behind one SDMX-style API.
Three well-structured tools with complete input schemas and clear descriptions. Tool names follow verb_noun convention (list_, search_, get_). Descriptions are detailed (150 - 250 chars) and explain WHAT, WHEN, and WHAT-RETURNS. However, output schemas are not documented, LLMs cannot predict response structure for downstream chaining. Parameter descriptions are good but lack explicit constraints (enums, ranges, formats). No error handling guidance or recovery paths documented. Missing idempotency and permission declarations.
Fetch observations for one Data360 series. DATABASE_ID selects the source database (e.g. WB_WDI), INDICATOR is the code from data360_search_indicators (e.g. WB_WDI_SP_POP_TOTL), REF_AREA is an ISO3 country code (e.g. BRA, USA). Returns SDMX-style records with OBS_VALUE, TIME_PERIOD, UNIT_MEASURE and disaggregation attributes (SEX, AGE, etc.). Omit TIME_PERIOD for the full series.
List the source databases aggregated by World Bank Data360 (e.g. WB_WDI = World Development Indicators, IMF_BOP = Balance of Payments, WB_EDSTATS = Education Statistics). Returns each DATABASE_ID with its full name and indicator count. Use a DATABASE_ID here to scope data360_search_indicators and data360_get_data.
Full-text search across all Data360 indicators (every WDI/IMF/WHO/ILO/education series in one index). Returns indicator codes (use as INDICATOR in data360_get_data), names, owning DATABASE_ID/name, units, and definitions. Optionally restrict to one database with database_id.
Output schemas not documented. LLMs cannot predict response structure (fields, types, nesting) for downstream tool chaining or data extraction. E.g., data360_list_databases returns {count, databases: [{database_id, database_name, indicator_count}]} but this is invisible to the agent.
Parameter constraints not formalized. 'top' and 'skip' accept unbounded numbers with no min/max stated. 'query' in search_indicators accepts '*' for all but this is buried in description text, not an enum. LLMs may pass invalid values (negative skip, top=999999).
No error handling guidance. Code throws generic errors ('Data360: 404 ...') with no recovery hints. LLM cannot distinguish retryable (timeout) from user-fixable (invalid country code) from fatal (API down). No suggestions for alternative actions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
No pagination metadata in responses. data360_search_indicators returns count but no next_cursor or has_more flag. Large result sets may be truncated silently, and LLM cannot detect incomplete data or plan multi-page fetches.
No tool annotations (readOnlyHint, idempotentHint). All three tools are read-only and idempotent, but this is not declared in the schema. Agents cannot optimize caching or retry logic without explicit hints.