worldbank-mcp-server
Server Details
Query 29,500+ World Bank development indicators for 200+ countries across 60+ years.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- cyanheads/worldbank-mcp-server
- GitHub Stars
- 3
- Server Listing
- worldbank-mcp-server
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.6/5 across 8 of 8 tools scored.
Each tool targets a distinct resource and operation: country metadata (get/list), indicator metadata (get/search), data values (get_data), poverty/inequality data (get_poverty), and reference lists (sources/topics). No two tools appear to overlap in purpose, and the descriptions clearly separate the similar get_country vs list_countries and get_data vs get_poverty.
All tools follow a consistent worldbank_ prefix with a clear verb_noun pattern: get_country, get_data, get_indicator, get_poverty, list_countries, list_sources, list_topics, search_indicators. The naming is uniform and predictable.
With 8 tools, the server is well-scoped for a World Bank data access domain. Each tool covers a necessary function without redundancy or bloat, fitting comfortably in the ideal 3-15 range.
The tool set provides a complete read-only workflow for the domain: discover sources/topics, search and inspect indicators, fetch country metadata, query time-series data, and access poverty/inequality stats. No obvious gaps exist for the stated purpose of accessing World Bank data.
Available Tools
9 toolsworldbank_get_countryGet World Bank CountryARead-onlyIdempotentInspect
Fetches full metadata for a specific country or aggregate entity: region, income level, capital, coordinates, and lending type. Accepts ISO2 codes (US, DE), ISO3 codes (USA, DEU), or World Bank aggregate codes (EAS, HIC, WLD).
| Name | Required | Description | Default |
|---|---|---|---|
| country_code | Yes | Country code. Accepts ISO2 (US), ISO3 (USA), or aggregate code (EAS, HIC, WLD). Use worldbank_list_countries to browse valid codes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Country or aggregate ID. |
| iso2 | Yes | ISO2 country code. |
| name | Yes | Country or aggregate name. |
| region | Yes | World Bank region this country belongs to. |
| latitude | Yes | Capital latitude (empty for aggregates). |
| longitude | Yes | Capital longitude (empty for aggregates). |
| capitalCity | Yes | Capital city name (empty for aggregates). |
| incomeLevel | Yes | World Bank income classification. |
| isAggregate | Yes | True when this entry is a regional or income-group aggregate. |
| lendingType | Yes | World Bank lending type classification. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, openWorldHint, idempotentHint) already cover safety and idempotency. Description adds valuable behavioral context: accepted code formats (ISO2, ISO3, aggregate codes). No contradictions. Could mention error handling for invalid codes, but acceptable given annotations.
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: first defines purpose and output, second lists accepted codes and references sibling. No fluff, front-loaded key info.
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 1 parameter, 100% schema coverage, existing output schema, and rich annotations, the description fully covers the tool's purpose and input requirements. No missing information for typical usage.
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 covers 100% of the single parameter with details on accepted code types. The description mostly repeats this (ISO2, ISO3, aggregate codes) and adds guidance to use worldbank_list_countries. Baseline 3; minor added value beyond schema.
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?
Description clearly states it fetches full metadata for a specific country or aggregate entity, listing specific fields (region, income level, capital, coordinates, lending type). Differentiates from siblings like worldbank_get_data (data queries) and worldbank_list_countries (listing) by explicitly referencing worldbank_list_countries for browsing codes.
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?
Description states when to use: to fetch metadata for a country/aggregate. It hints at alternatives by mentioning worldbank_list_countries for browsing valid codes. Could be more explicit about not using it for data or indicators, but context signals and sibling names provide sufficient guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
worldbank_get_dataGet World Bank Indicator DataARead-onlyIdempotentInspect
Queries World Bank indicator values for one or more countries across a time range. The primary data-access tool — use worldbank_search_indicators to find indicator_id values. Returns observations with null values when data is not available for a country×year cell (common for sparse series). Specify either date_range (historical analysis) or mrv (most recent N values), not both. For "all" countries, use pagination (per_page up to 1000) — the API returns several hundred entries per indicator.
| Name | Required | Description | Default |
|---|---|---|---|
| mrv | No | Return the N most recent available values per country (1–100), clamped upstream to the length of the series. Rows are mrv × countries, so page through them with per_page. Mutually exclusive with date_range. | |
| page | No | Pagination page number (1-based). | |
| per_page | No | Results per page (default: server default, max: 1000). Use higher values for "all" country queries. | |
| countries | Yes | Country codes. Accepts: ISO2 (US, CN), ISO3 (USA, CHN), regional aggregate codes (EAS, LCN, MEA, SAS, SSF, ECS, NAC), income group codes (HIC, UMC, LMC, LIC), world code (WLD), or "all" for every entry (use pagination). Pass a single string or an array of codes for multi-country queries. At least one code is required — an empty value is rejected rather than treated as "all". | |
| date_range | No | Time window to filter observations to. Accepts a whole year (`2020`), a quarter (`2020Q1`), or a month (`2020M03`), or a range of two periods of the same type separated by a colon, earliest first (`2010:2023`, `2020Q1:2021Q4`, `2020M01:2020M06`). A window and an observation match whenever the periods overlap, so a year window also selects the quarters and months inside it. A window covering no part of the series returns zero observations rather than the full series. Mutually exclusive with mrv. | |
| indicator_id | Yes | Indicator code to query (e.g. NY.GDP.PCAP.CD, SP.POP.TOTL). Use worldbank_search_indicators to find valid IDs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Indicator observations for this page. Null values are common for sparse series. |
| notice | No | Recovery hint for sparse or empty result sets — suggests how to broaden the query. |
| indicator | Yes | Indicator metadata echoed from the response. |
| nullCount | Yes | Count of null values on this page — indicates data sparsity for the requested filter. |
| totalCount | Yes | Total observations before pagination. |
| totalPages | Yes | Total number of pages. |
| currentPage | Yes | Current page number. |
| appliedFilters | Yes | The effective parameters sent to the World Bank API — confirms country code normalization and which filters were in force for these observations. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, and openWorld traits. The description adds meaningful behavioral context: nulls for sparse data, mutual exclusivity of date_range/mrv, and the note that the API returns several hundred entries per indicator, which helps the agent set expectations beyond the annotation hints.
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?
Four tightly-written sentences front-load the core purpose and then add essential behavioral notes. No fluff, no repetition, highly efficient.
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 a rich schema, output schema, and annotations, the description covers the key edge cases (null values, pagination, date_range/mrv conflict) and is complete for its complexity. The output schema handles return-value documentation, so no need to describe that in text.
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 a baseline of 3 applies. The description adds practical parameter guidance—pagination for 'all' countries, per_page hints, and mutual exclusivity—complementing the already detailed schema descriptions.
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 clearly states the tool 'Queries World Bank indicator values for one or more countries across a time range.' The verb 'queries' and the resource 'indicator values' are specific, and calling it 'the primary data-access tool' distinguishes it from sibling tools like worldbank_get_country or worldbank_search_indicators.
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?
It explicitly names worldbank_search_indicators as the way to find indicator_id values, and provides key usage constraints (date_range vs mrv exclusivity, pagination for 'all' countries). It doesn't fully contrast with other data-related siblings like worldbank_get_indicator, so it's not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
worldbank_get_indicatorGet World Bank IndicatorARead-onlyIdempotentInspect
Fetches complete metadata for a single World Bank indicator by its ID: name, description, source dataset, source organization, unit, and thematic topics. Use worldbank_search_indicators to discover indicator IDs if you only know the concept.
| Name | Required | Description | Default |
|---|---|---|---|
| indicator_id | Yes | Indicator code (e.g. NY.GDP.PCAP.CD, SP.POP.TOTL). Use worldbank_search_indicators to find valid IDs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Indicator ID. |
| name | Yes | Indicator name. |
| unit | Yes | Unit of measurement (empty when not specified). |
| topics | Yes | Thematic topics this indicator belongs to. |
| sourceId | Yes | Source dataset ID. |
| sourceName | Yes | Source dataset name. |
| sourceNote | Yes | Detailed indicator description from the source. |
| sourceOrganization | Yes | Organization that collects or publishes this data. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint. The description adds value by enumerating the metadata fields returned (name, description, source, etc.). It does not contradict annotations.
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, front-loaded with the core purpose, and no unnecessary words. 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?
Given the single parameter, rich annotations, and existence of an output schema, the description is fully adequate. It explains what the tool does, what it returns, and how to find valid inputs.
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 description for the single parameter. The tool description echoes the guidance to use search, adding no new semantic information beyond the schema.
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 clearly states the action ('fetches complete metadata'), the resource ('single World Bank indicator'), and the specific data fields returned. It also distinguishes from the sibling tool worldbank_search_indicators by advising when to use that alternative.
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?
Provides explicit guidance: use worldbank_search_indicators to discover indicator IDs if only the concept is known. This tells the agent when to use this tool and when to switch to a sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
worldbank_get_povertyGet World Bank Poverty and Inequality EstimatesARead-onlyIdempotentInspect
Queries poverty and inequality estimates from the World Bank Poverty and Inequality Platform (PIP) for one or more countries. Returns the poverty headcount ratio, poverty gap, and poverty severity at any poverty line, plus mean and median welfare and population. This is also the tool for inequality and distribution questions — survey-based rows carry the Gini coefficient, mean log deviation, polarization, and the ten decile income/consumption shares, because PIP returns poverty and inequality in the same row. PIP is a separate dataset from the WDI series worldbank_get_data reads: it measures welfare in PPP dollars per person per day and covers individual economies only, so regional and income-group aggregate codes are not accepted. Every row reports how it was produced. estimationType "survey" rows carry the full inequality block; "interpolation", "extrapolation", and "CMD estimation" rows are gap-filled estimates for years no survey covers, and their gini, mld, polarization, and decileShares are null — a documented gap in the source data, not an error.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Pagination page number (1-based). | |
| year | No | Reporting year to return. A four-digit year (2022), "all" for the full history, or "MRV" for the most recent year available. Omitted behaves as "all". PIP coverage starts in 1963 and runs to the current year. | |
| per_page | No | Results per page (default: server default, max: 1000). "all" countries across "all" years runs to a few thousand rows. | |
| countries | Yes | Country codes. PIP identifies economies by ISO3 code (IND, USA, BRA); "all" returns every economy it covers. Pass a single code, an array, or one string separated by commas or semicolons. Regional, income-group, and world aggregate codes (WLD, SSF, HIC) are not served by this dataset — query the individual economies instead. | |
| fill_gaps | No | When true (the default), any year the surveys do not cover falls back to PIP's own estimate for it instead of being left out — so a single-year query still answers, and a full-history query returns a row per year rather than only the survey years. Those fallback rows carry no inequality data. Set false to return survey-derived rows only, accepting an empty result for years no survey covers. | |
| poverty_line | No | Poverty line in PPP dollars per person per day — any threshold, not only the published ones. Omitted uses the international poverty line of the PIP release currently served, so the applied value is echoed back on every row as povertyLine rather than assumed here. The poverty line does not affect the inequality fields, which describe the whole distribution. | |
| welfare_type | No | Restrict results to one welfare measure. Surveys measure either income or consumption and the two are not directly comparable, so a cross-country comparison is safer pinned to one. Omitted returns whichever each economy publishes, and both where an economy publishes both — thirty-five do, and those return two rows per year. | |
| reporting_level | No | Restrict results to one reporting level. Most economies publish a national figure only; ten publish a split and return an extra row per year for it, China with all three levels and the rest pairing national with either urban or rural. Every row states its own reportingLevel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| notice | No | Context for an empty result set, or for a result carrying gap-filled rows with no inequality data. |
| estimates | Yes | Poverty and inequality estimates for this page, ordered by country, year, reporting level, then welfare type. |
| totalCount | Yes | Total estimates before pagination. |
| totalPages | Yes | Total number of pages. |
| currentPage | Yes | Current page number. |
| appliedFilters | Yes | The effective parameters sent to PIP — confirms country code normalization and which filters were in force for these estimates. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, and the description adds valuable behavioral context: it discloses that gap-filled rows (interpolation, extrapolation, CMD estimation) have null inequality fields, calls this a 'documented gap in the source data, not an error', and explains the behavior of fill_gaps and welfare_type (e.g., thirty-five economies returning two rows per year). No contradictions with annotations.
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?
The description is long but highly structured and information-dense. Every sentence adds unique value: main function, outputs, sibling differentiation, dataset limitations, estimation-type behavior, and null-data explanation. It is front-loaded with the core purpose and does not waste words on filler.
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 tool's complexity (8 parameters, output schema, multiple estimation types), the description is remarkably complete. It covers when to use, what is returned, data coverage (individual economies only), gap-filling behavior, null handling, and parameter constraints (e.g., welfare_type splits). The presence of an output schema reduces the need to detail return shapes, but the description still explains key output characteristics.
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 baseline is 3. The description itself does not repeat or add parameter-level semantics beyond the schema, but it provides useful context in the narrative (e.g., PPP dollars, poverty line not affecting inequality fields). The schema already carries full parameter descriptions, so the description adds no significant extra meaning.
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 specifies the tool as querying poverty and inequality estimates from the World Bank PIP, lists concrete outputs (headcount ratio, gap, severity, Gini, decile shares), and explicitly distinguishes it from the sibling worldbank_get_data by stating it is a separate dataset. The verb 'Queries' and resource 'World Bank Poverty and Inequality Platform' are specific and match the tool's name, making the purpose unambiguous.
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 clearly states when to use this tool vs alternatives: it says PIP is a separate dataset from the WDI series worldbank_get_data reads, and notes that regional/income-group aggregates are not accepted. It also positions it as 'the tool for inequality and distribution questions'. This provides explicit context and exclusions, exceeding simple implied usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
worldbank_list_countriesList World Bank CountriesARead-onlyIdempotentInspect
Lists countries and regional aggregates with metadata: ISO codes, region, income level, capital, and coordinates. Filterable by region code (e.g. EAS, SSF, NAC) and income level (LIC, LMC, UMC, HIC). By default, excludes regional/income-group aggregate entries and returns individual countries only. Set include_aggregates=true to also see region, income group, and world aggregate entities.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Pagination page number (1-based). | |
| region | No | Filter by World Bank region code. Valid codes: EAS (East Asia & Pacific), ECS (Europe & Central Asia), LCN (Latin America & Caribbean), MEA (Middle East & North Africa), NAC (North America), SAS (South Asia), SSF (Sub-Saharan Africa). | |
| per_page | No | Results per page (default: server default, max: 300). | |
| income_level | No | Filter by income group code: LIC (Low income), LMC (Lower middle income), UMC (Upper middle income), HIC (High income). | |
| include_aggregates | No | When true, includes regional, income-group, and world aggregate entries alongside individual countries. Default false (individual countries only). |
Output Schema
| Name | Required | Description |
|---|---|---|
| countries | Yes | Countries (and optionally aggregates) matching the filters. |
| totalCount | Yes | Total matching entries before pagination (includes aggregates if include_aggregates=true). |
| totalPages | Yes | Total number of pages. |
| currentPage | Yes | Current page number. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No contradiction with annotations (readOnlyHint, openWorldHint, idempotentHint). Adds valuable context about default behavior (excluding aggregates) and parameter effects (include_aggregates). Annotations already cover safety; description enhances transparency.
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?
Three sentences, front-loaded with purpose, and each sentence adds essential information without fluff. Efficiently covers key filtering options and default behavior.
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?
Covers the main use cases with filtering and default behavior. Pagination is implicitly covered by parameters. Since an output schema exists, the description does not need to detail return fields. Minor gap: no mention of rate limits or further pagination details, but overall sufficient.
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 baseline is 3. The description adds value by explaining the effect of 'include_aggregates' and listing valid codes for region and income_level, which is helpful beyond the schema's descriptions.
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 explicitly states 'Lists countries and regional aggregates with metadata' and lists specific fields (ISO codes, region, income level, capital, coordinates). It distinguishes from sibling tools by mentioning filterable parameters and default behavior.
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?
Clearly explains how to filter by region and income level, and includes the important default exclusion of aggregates with the option to include them. Does not explicitly state when not to use this tool, but sibling tools have distinct purposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
worldbank_list_sourcesList World Bank Data SourcesARead-onlyIdempotentInspect
Lists the 70+ World Bank data sources (datasets) such as World Development Indicators, IDS, and Doing Business. Returns source IDs and names for use as source_id in worldbank_search_indicators. Supports pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Pagination page number (1-based). | |
| per_page | No | Results per page (default: server default, max: 100). |
Output Schema
| Name | Required | Description |
|---|---|---|
| sources | Yes | World Bank data sources for this page. |
| totalCount | Yes | Total number of sources. |
| totalPages | Yes | Total number of pages. |
| currentPage | Yes | Current page number. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint. The description adds value by stating that it lists over 70 sources, returns IDs and names, and supports pagination, complementing the annotations without contradicting them.
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?
Three sentences: first introduces the core action and examples, second explains output and purpose, third notes pagination. Every sentence adds necessary information, no redundancy.
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?
The description is complete for this simple tool: it explains what is listed, the output's purpose, and pagination. With the output schema provided and strong annotations, no further context is needed.
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 baseline is 3. The description mentions 'Supports pagination' but does not add meaning beyond the schema's parameter descriptions. Thus, it meets the baseline but does not exceed it.
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 clearly states the verb 'Lists' and the resource 'World Bank data sources', provides concrete examples (e.g., World Development Indicators), and explains the returned fields (IDs and names) and their usage in the sibling tool worldbank_search_indicators, effectively distinguishing it from siblings.
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 indicates that the tool is used to obtain source IDs for subsequent use in worldbank_search_indicators, providing clear workflow context. However, it does not explicitly mention when not to use it or compare with other sibling tools, so it falls short of a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
worldbank_list_topicsList World Bank TopicsARead-onlyIdempotentInspect
Lists all 21 World Bank thematic topics (Economy & Growth, Health, Education, etc.) with descriptions. Use to browse the indicator space or find a topic_id for worldbank_search_indicators.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| topics | Yes | All 21 World Bank thematic topics. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, openWorldHint, idempotentHint. Description adds value by specifying the exact count (21) and that topics come with descriptions, going beyond annotations.
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 concise sentences, front-loaded with the main action, no wasted words.
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 no parameters and output schema exists, description is complete, explaining the tool's purpose and how it feeds into a sibling 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?
No parameters; schema coverage is 100%. Description does not need to add parameter details. Baseline for 0 params is 4.
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?
Description clearly states 'Lists all 21 World Bank thematic topics', providing specific verb and resource, and distinguishes from siblings by mentioning use in finding topic_id for worldbank_search_indicators.
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?
Explicitly says 'Use to browse the indicator space or find a topic_id for worldbank_search_indicators', giving clear context and referencing a sibling tool as an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
worldbank_search_indicatorsSearch World Bank IndicatorsARead-onlyIdempotentInspect
Searches the 29,500+ World Bank indicator catalog by keyword, topic, or source. Returns indicator IDs and metadata for chaining into worldbank_get_data. At least one of query, topic_id, or source_id must be provided. A keyword query matches every term against indicator ID, name, and description, in any word order, across the whole catalog or the whole selected topic or source; punctuation in the query is ignored. Exact ID or name matches rank first, then whole-phrase matches, then ID/name matches, then description-only matches. Each indicator ID appears once, even where the catalog publishes it under two sources. Use worldbank_list_topics for topic IDs, worldbank_list_sources for source IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Pagination page number (1-based). | |
| query | No | Keyword search terms — an indicator name, ID, or any words from either (e.g. "GDP per capita", "NY.GDP.MKTP.CD", "CO2 emissions"). Every term must match; punctuation is ignored. At least one of query, topic_id, or source_id must be provided. | |
| per_page | No | Results per page (default: server default, max: 100). | |
| topic_id | No | Filter by topic ID (e.g. "1" for Agriculture, "3" for Economy & Growth). Use worldbank_list_topics to browse valid IDs. | |
| source_id | No | Filter by data source ID (e.g. "2" for World Development Indicators). Use worldbank_list_sources to browse valid IDs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| notice | No | Recovery hint when no indicators matched — suggests how to broaden the search. |
| indicators | Yes | Matching indicators for this page. |
| totalCount | Yes | Total matching indicators before pagination. |
| totalPages | Yes | Total number of pages. |
| currentPage | Yes | Current page number. |
| appliedFilters | Yes | The effective search parameters, field by field — confirms which filter combination produced these results without parsing the effectiveQuery string. |
| effectiveQuery | No | Active filters echoed: keyword, topic ID, and/or source ID that were applied. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, open-world, idempotent behavior. The description goes beyond by detailing match semantics (every term must match, punctuation ignored), ranking order (exact ID/name > phrase > ID/name > description), and deduplication across sources. These are valuable behavioral traits not visible in annotations or schema.
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?
Every sentence adds unique value: scope, return purpose, prerequisite, search behavior, ranking, deduplication, and helper-tool references. Information-dense but well-organized, front-loaded with the primary action.
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 an output schema present, return-value explanation is unnecessary. The description covers all operational aspects: queries, filters, matching semantics, ordering, deduplication, and parameter prerequisites. A complete picture for successful 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 descriptions cover 100% of parameters, so baseline is 3. The description adds critical semantic context: the 'at least one' requirement, matching rules, and how topic_id/source_id interact with query. This enhances parameter understanding beyond the schema's individual field definitions.
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?
Clear verb+resource+scope: 'Searches the 29,500+ World Bank indicator catalog by keyword, topic, or source.' Distinct from siblings like worldbank_get_data (fetching data) and worldbank_list_topics (listing topics). States purpose precisely.
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?
Explicitly states the mandatory constraint ('At least one of query, topic_id, or source_id must be provided') and names alternatives for acquiring filter IDs ('Use worldbank_list_topics... worldbank_list_sources...'). Also mentions chaining into worldbank_get_data, clarifying when this tool fits a workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
worldbank_search_projectsSearch World Bank ProjectsARead-onlyIdempotentInspect
Searches the World Bank lending portfolio — the individual loans, credits, and grants the Bank finances — by free text, country, region, status, and board approval date. Returns the project ID, name, borrowing country, region, status, board approval and closing dates, total commitment in USD, financing instrument, major sectors, and a link to the project page. This is the operations catalogue, not the statistics catalogue: use it for "what is the World Bank funding in Kenya", "which climate adaptation projects are active", or "how much was committed to education in South Asia since 2020". For development statistics and time series, use worldbank_search_indicators and worldbank_get_data instead. Countries are identified by ISO2 code here (BR, IN, ZA), which is the one place this server departs from the ISO3 codes its other tools take — worldbank_get_country reports a country's iso2 field for either form, and multi-country operations carry a World Bank regional code such as 3A instead. Every filter is an exact match upstream and combines with the others by AND, so a narrow search can legitimately return nothing; when it does, the response says whether the country codes matched anything on their own.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Pagination page number (1-based). | |
| query | No | Free-text search across project names, abstracts, and objectives. Every word must appear, so extra words narrow the result. Omit to browse the portfolio by filter alone, newest board approvals first. | |
| region | No | World Bank operational regions to include, combined as OR. These are the lending regions the portfolio is organized by, not the WDI aggregate codes worldbank_get_data accepts. | |
| status | No | Lifecycle stages to include, combined as OR. "Active" is under implementation, "Pipeline" is approved but not yet effective, "Closed" has finished disbursing, and "Dropped" was abandoned before approval. Most of the portfolio is closed, so omitting this returns mostly historical operations. | |
| per_page | No | Results per page (default: server default, max: 1000, which is also the most the API will return for one request). | |
| countries | No | Borrowing countries, by the two-character code this API keys on: ISO2 for an economy (BR), or a World Bank regional code for a multi-country operation (3A for Africa, 4E for East Asia and Pacific). Several codes are combined as OR — a project matching any of them is returned. Omit for every country. | |
| approved_to | No | Latest board approval date, as YYYY-MM-DD and inclusive. | |
| approved_from | No | Earliest board approval date, as YYYY-MM-DD and inclusive. Board approval is the date the Bank committed to the operation; pipeline projects carry a scheduled date in the future. | |
| include_abstract | No | Include each project's abstract. Abstracts run long — a median of roughly 1,200 characters — so a full page of them roughly doubles the response; leave this off while narrowing a search and turn it on once the result set is small enough to read. Projects that publish no abstract report null either way, which appliedFilters.includeAbstract distinguishes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| notice | No | Context for an empty result set — including whether the country filter matched anything on its own — or for a page past the end of the results. |
| projects | Yes | Projects on this page, newest board approval date first — the order the API returns and the order pagination walks. |
| totalCount | Yes | Total projects matching the search, before pagination. |
| totalPages | Yes | Total number of pages. |
| currentPage | Yes | Current page number. |
| appliedFilters | Yes | The effective search sent upstream — confirms country-code normalization and which filters were in force for these results. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, open-world, and idempotent behavior. The description adds substantial context beyond that: filters combine by AND, every filter is exact-match upstream, the response behavior on empty results, and the ISO2/ISO3 divergence with cross-reference to worldbank_get_country. This exceeds what annotations alone provide.
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?
The description is front-loaded with the core purpose, uses concrete examples and clear alternatives, and each sentence earns its place. Though longer than average, the tool's complexity (9 params, code quirks, AND semantics, sibling distinctions) justifies the length, and the structure is logical and scannable.
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 9 parameters, no required fields, and an output schema, the description covers purpose, usage, behavioral quirks, and parameter semantics. It leaves no critical gap, addressing edge cases like ISO2 vs ISO3, regional codes, AND combination, and empty results—making it fully comprehensive.
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 input schema covers 100% of parameters, so the baseline is 3. The description adds cross-cutting semantics not in the schema: country codes use ISO2 (not ISO3), multi-country operations use regional codes, and the region values differ from WDI aggregate codes. This enriches parameter understanding without repeating schema content.
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 clearly states the tool 'Searches the World Bank lending portfolio' by specific filters (free text, country, region, status, board approval date) and lists return fields. It explicitly distinguishes from the statistics catalogue and names sibling tools for that purpose, making the purpose unambiguous.
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?
Provides explicit when-to-use examples ('use it for...'), contrasts with worldbank_search_indicators and worldbank_get_data for statistics, and gives practical guidance on omitting status (returns mostly historical operations) and empty search results. This is rich, actionable usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- Alicense-qualityCmaintenanceProvides query capabilities for global economic and social development data from the World Bank Open Data API.4488MIT
- 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

Data360 MCP Serverofficial
Flicense-qualityCmaintenanceProvides LLM agents direct access to World Bank development indicators, enabling search, validation, and retrieval of data on topics like GDP, poverty, and gender equality.33- Alicense-qualityCmaintenanceProvides access to World Bank economic and country data without an API key, allowing users to search countries, fetch indicator time series, and compare latest values.MIT
Your Connectors
Sign in to create a connector for this server.