DaedalMap World Development Indicators
Server Details
World Bank World Development Indicators: curated country-year economy, health, education and more.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- xyver/daedal-map
- GitHub Stars
- 2
- Server Listing
- daedal-map
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose: catalog listing, pack details, tool help, and data querying. There is no overlap in functionality, so an agent can confidently select the right tool for the step.
All tool names follow a consistent verb_noun pattern (get_catalog, get_pack, get_tool_help, query_dataset) using snake_case. The use of different verbs ('get' vs 'query') aligns with the distinct actions, maintaining predictable naming.
Four tools is well-scoped for a data discovery and query server. Each tool serves a necessary step in the workflow without unnecessary bloat or missing essentials.
The tool surface covers the full discovery-to-query lifecycle: list catalog, inspect pack, understand tool usage, and run queries. There are no obvious dead ends—an agent can start with get_catalog and proceed fluidly to query_dataset.
Available Tools
4 toolsget_catalogGet CatalogARead-onlyIdempotentInspect
List the current catalog-published data packs and their access lanes. Start here, then call get_pack for one selected pack.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| packs | No | |
| reason | No | |
| guidance | No | |
| warnings | No | |
| next_step | No | |
| pack_count | No | |
| provenance | No | |
| request_id | No | |
| generated_at | No | |
| clarification | No | |
| tool_families | No | |
| catalog_version | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds workflow context ('start here') and the fact that only catalog-published packs are returned, but says nothing about result size, ordering, or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler, and the scoping ('current catalog-published data packs') is front-loaded ahead of the routing instruction. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, a full annotation set, and an output schema that carries return-value detail, the description only needs to state purpose and sequencing — both of which it does. Nothing required to invoke this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to document and the baseline is 4. The description correctly does not invent arguments, and the schema is fully covered at 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: 'List the current catalog-published data packs and their access lanes.' It also names the sibling get_pack as the follow-up, so an agent can distinguish this entry-point listing from the per-pack detail tool. The only soft spot is the undefined term 'access lanes,' which is not explained.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Start here, then call get_pack for one selected pack' is explicit sequencing guidance that tells the agent both when to use this tool and what the natural next call is. It does not state exclusions (e.g., when not to start here), so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_packGet PackARead-onlyIdempotentInspect
Describe one catalog-published pack, including sources, metrics, coverage, freshness, access, and a first query. Call this before querying an unfamiliar pack.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Use lite for normal discovery. Use full only for one selected pack when its complete public metadata is required. | lite |
| pack_id | Yes | Pack identifier from get_catalog. Newly catalog-admitted packs require no MCP schema change. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| reason | No | |
| pack_id | No | |
| sources | No | |
| guidance | No | |
| warnings | No | |
| next_step | No | |
| provenance | No | |
| request_id | No | |
| clarification | No | |
| material_policy | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safe-read behavior is covered. The description adds useful context about what the pack description includes (sources, metrics, freshness, access) but does not disclose additional behavioral traits such as response size or external calls. Given the annotations, this is adequate but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The first sentence states what the tool returns and compresses the key value proposition, and the second sentence gives a direct usage directive. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple two-parameter schema, a rich output schema, and annotations that cover safety, the description is sufficiently complete. It explains what the result contains and when to invoke the tool, leaving no critical gap for correct selection or invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already fully documents pack_id and detail, including the lite/full distinction and default. The description adds context around 'which pack' via the schema's reference to get_catalog but does not need to elaborate further. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Describe') and a specific resource ('one catalog-published pack'), and enumerates the content areas covered. This clearly distinguishes it from broader catalog tools like get_catalog by focusing on a single pack.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to call it: 'Call this before querying an unfamiliar pack.' It does not explicitly name alternatives or exclusions, but the guidance is clear and actionable for an agent deciding between tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tool_helpGet Tool HelpARead-onlyIdempotentInspect
Describe one tool visible on this facade, including its input contract, access limits, refusals, example, outputs, and recommended next calls.
| Name | Required | Description | Default |
|---|---|---|---|
| tool_name | Yes | Exact tool name from tools/list. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| error | No | |
| title | No | |
| access | No | |
| reason | No | |
| purpose | No | |
| examples | No | |
| guidance | No | |
| warnings | No | |
| next_step | No | |
| tool_name | No | |
| provenance | No | |
| request_id | No | |
| input_schema | No | |
| clarification | No | |
| recommended_next_calls | No | |
| important_output_fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and non-open-world, so the safety profile is clear. The description adds valuable context about the content of the help (input contract, access limits, refusals, example, outputs, recommended next calls), which goes beyond the annotations. However, it doesn't detail rate limits or authentication needs, but those are likely not applicable for a read-only help tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that enumerates the key aspects without filler. It is appropriately sized for a one-parameter tool. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple schema (one parameter), the presence of an output schema, and comprehensive annotations, the description is sufficiently complete. It outlines what the help output will cover, so the agent knows what to expect. No critical information is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear parameter description ('Exact tool name from tools/list'). The description adds no parameter-specific semantics beyond the schema. With full coverage, the schema carries the burden, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Describe') and resource ('one tool visible on this facade'), and enumerates the information types it returns. This clearly distinguishes it from sibling data-fetching tools as a meta-help tool. An agent can understand its purpose immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not specify when to use this tool versus calling a tool directly or using other help mechanisms. There are no exclusions or alternatives named. Usage is only implied by the nature of the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_datasetQuery DatasetARead-onlyIdempotentInspect
Query one catalog-published source or pack with structured metrics, filters, sorting, and a row limit. Call get_catalog and get_pack before an unfamiliar dataset.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Optional sort instructions for row-returning queries. | |
| limit | No | Maximum number of rows to return for the requested source or pack. | |
| output | No | Optional output controls such as response format hints. | |
| filters | No | Structured filters including time, region_ids, and compare clauses. | |
| metrics | No | Metric ids to return. Use event_count for aggregate counts when supported. | |
| pack_id | No | Pack identifier from get_catalog. Newly catalog-admitted packs require no MCP schema change. | |
| source_id | No | Concrete source id such as 'earthquakes_events', 'volcanoes_events', 'hurricanes_events', or 'un_sdg/01'. | |
| request_id | No | Optional caller-supplied request id for tracing and idempotency. |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | No | |
| sort | No | |
| error | No | |
| limit | No | |
| reason | No | |
| pack_id | No | |
| guidance | No | |
| warnings | No | |
| next_step | No | |
| row_count | No | |
| source_id | No | |
| truncated | No | |
| provenance | No | |
| query_mode | No | |
| request_id | No | |
| capability_id | No | |
| clarification | No | |
| filters_applied | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds only the note that newly catalog-admitted packs need no MCP schema change, which is contextual but not operational; it says nothing about pagination or result-size behavior beyond the schema's limit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste, with the core capability stated first and the prerequisite second. Information is well front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and annotations cover the safety profile. The definition is largely complete, though it could clarify the source_id vs pack_id selection more explicitly for such an 8-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the schema (including the concrete source_id examples and the event_count hint). The description adds no parameter-level meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Query) and resource (catalog-published source or pack) and enumerates the capabilities (metrics, filters, sorting, row limit). It is clearly distinguishable from get_catalog/get_pack, though it does not explicitly name them as alternatives for the same intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear precondition: 'Call get_catalog and get_pack before an unfamiliar dataset.' That tells the agent when to reach for the sibling tools first. It stops short of stating when-not to use this tool or what to do when the dataset is familiar.
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.
1 tool update
- Changed
get_pack1 field changed- added
Input schema / properties / detailAdded value: +{ + "default": "lite", + "description": "Use lite for normal discovery. Use full only for one selected pack when its complete public metadata is required.", + "enum": [ + "lite", + "full" + ], + "type": "string" +}
4 tool updates
- Changed
get_catalog1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": true, + "anyOf": [ + { + "required": [ + "packs" + ] + }, + { + "required": [ + "error" + ] + } + ], + "properties": { + "catalog_version": { + "type": "string" + }, + "clarification": { + "type": "object" + }, + "error": { + "additionalProperties": true, + "properties": { + "code": { + "type": "string" + }, + "details": { + "type": "object" + }, + "message": { + "type": "string" + }, + "retry_hint": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "generated_at": { + "type": [ + "string", + "null" + ] + }, + "guidance": { + "type": "object" + }, + "next_step": { + "additionalProperties": true, + "properties": { + "action": { + "type": "string" + }, + "arguments": { + "type": "object" + }, + "tool": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "action" + ], + "type": "object" + }, + "pack_count": { + "minimum": 0, + "type": "integer" + }, + "packs": { + "items": { + "type": "object" + }, + "type": "array" + }, + "provenance": { + "type": "object" + }, + "reason": { + "type": "string" + }, + "request_id": { + "type": [ + "string", + "null" + ] + }, + "tool_families": { + "items": { + "type": "object" + }, + "type": "array" + }, + "warnings": { + "items": { + "type": "object" + }, + "type": "array" + } + }, + "type": "object" +}
- Changed
get_pack1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": true, + "anyOf": [ + { + "required": [ + "pack_id" + ] + }, + { + "required": [ + "error" + ] + } + ], + "properties": { + "clarification": { + "type": "object" + }, + "error": { + "additionalProperties": true, + "properties": { + "code": { + "type": "string" + }, + "details": { + "type": "object" + }, + "message": { + "type": "string" + }, + "retry_hint": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "guidance": { + "type": "object" + }, + "material_policy": { + "type": "object" + }, + "next_step": { + "additionalProperties": true, + "properties": { + "action": { + "type": "string" + }, + "arguments": { + "type": "object" + }, + "tool": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "action" + ], + "type": "object" + }, + "pack_id": { + "type": "string" + }, + "provenance": { + "type": "object" + }, + "reason": { + "type": "string" + }, + "request_id": { + "type": [ + "string", + "null" + ] + }, + "sources": { + "items": { + "type": "object" + }, + "type": "array" + }, + "warnings": { + "items": { + "type": "object" + }, + "type": "array" + } + }, + "type": "object" +}
- Changed
get_tool_help1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": true, + "anyOf": [ + { + "required": [ + "ok", + "tool_name" + ] + }, + { + "required": [ + "error" + ] + } + ], + "properties": { + "access": { + "type": "object" + }, + "clarification": { + "type": "object" + }, + "error": { + "additionalProperties": true, + "properties": { + "code": { + "type": "string" + }, + "details": { + "type": "object" + }, + "message": { + "type": "string" + }, + "retry_hint": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "examples": { + "type": "array" + }, + "guidance": { + "type": "object" + }, + "important_output_fields": { + "type": "array" + }, + "input_schema": { + "type": "object" + }, + "next_step": { + "additionalProperties": true, + "properties": { + "action": { + "type": "string" + }, + "arguments": { + "type": "object" + }, + "tool": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "action" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "provenance": { + "type": "object" + }, + "purpose": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "recommended_next_calls": { + "type": "array" + }, + "request_id": { + "type": [ + "string", + "null" + ] + }, + "title": { + "type": [ + "string", + "null" + ] + }, + "tool_name": { + "type": "string" + }, + "warnings": { + "items": { + "type": "object" + }, + "type": "array" + } + }, + "type": "object" +}
- Changed
query_dataset1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": true, + "anyOf": [ + { + "required": [ + "source_id", + "row_count", + "rows" + ] + }, + { + "required": [ + "error" + ] + } + ], + "properties": { + "capability_id": { + "type": "string" + }, + "clarification": { + "type": "object" + }, + "error": { + "additionalProperties": true, + "properties": { + "code": { + "type": "string" + }, + "details": { + "type": "object" + }, + "message": { + "type": "string" + }, + "retry_hint": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "filters_applied": { + "type": "object" + }, + "guidance": { + "type": "object" + }, + "limit": { + "type": "integer" + }, + "next_step": { + "additionalProperties": true, + "properties": { + "action": { + "type": "string" + }, + "arguments": { + "type": "object" + }, + "tool": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "action" + ], + "type": "object" + }, + "pack_id": { + "type": "string" + }, + "provenance": { + "type": "object" + }, + "query_mode": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "request_id": { + "type": [ + "string", + "null" + ] + }, + "row_count": { + "minimum": 0, + "type": "integer" + }, + "rows": { + "items": { + "type": "object" + }, + "type": "array" + }, + "sort": { + "type": "array" + }, + "source_id": { + "type": "string" + }, + "truncated": { + "type": "boolean" + }, + "warnings": { + "items": { + "type": "object" + }, + "type": "array" + } + }, + "type": "object" +}
2 tool updates
- Changed
get_pack1 field changed- changed
Input schema / properties / pack_id / descriptionPrevious value: -"Pack identifier such as 'currency', 'earthquakes', 'floods', 'hurricanes', 'tornadoes', 'tsunamis', 'un_sdg', 'volcanoes', 'world_factbook', or 'worldpop'."New value: +"Pack identifier from get_catalog. Newly catalog-admitted packs require no MCP schema change."
- Changed
query_dataset1 field changed- changed
Input schema / properties / pack_id / descriptionPrevious value: -"Pack identifier such as 'currency', 'earthquakes', 'floods', 'hurricanes', 'tornadoes', 'tsunamis', 'un_sdg', 'volcanoes', 'world_factbook', or 'worldpop'."New value: +"Pack identifier from get_catalog. Newly catalog-admitted packs require no MCP schema change."
1 tool update
- Added
get_tool_help
3 tool updates
- First observed
get_catalog - First observed
get_pack - First observed
query_dataset
Related MCP Connectors
Query 29,500+ World Bank development indicators for 200+ countries across 60+ years.
Access World Bank development indicators for 200+ countries.
UN Sustainable Development Goal indicators for all 17 goals, curated by country and year. Free.
Global economic data from World Bank and OECD
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceProvides query capabilities for global economic and social development data from the World Bank Open Data API.352 npm8MIT
- AlicenseAqualityBmaintenanceEnables AI assistants to discover, retrieve, and compare official international development indicators from sources such as the World Bank, FAOSTAT, WHO, UNICEF, and IMF, while preserving source identifiers, units, and citations.10MIT
- AlicenseAqualityDmaintenanceEnables access to World Bank Data360 API with 1000+ economic and social indicators across 200+ countries and 60+ years of historical data, allowing searches, temporal coverage checks, and filtered data retrieval through natural language queries.51MIT
- AlicenseNot gradedqualityAmaintenanceEnables querying 29,500+ World Bank development indicators for 200+ countries across 60+ years via MCP, with 7 tools for browsing topics, sources, countries, and indicators.938 npm3Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.