Skip to main content
Glama

who-gho-mcp-server

Get WHO GHO Indicator Metadata

who_get_indicator_metadata
Read-onlyIdempotent

Fetch metadata for one or more WHO GHO indicator codes: the full indicator name and the dimensions it supports (e.g. COUNTRY, REGION, SEX, YEAR, WORLDBANKINCOMEGROUP, AGEGROUP). Call this before querying data with who_query_indicator_data to confirm which filter dimensions are valid for a given indicator. Accepts up to 10 codes per call. Many valid indicators have no dimension listing upstream — those return an empty dimensions array with a dimensionsNote, not a not-found. Only codes absent from the catalog are reported in the notFound array, and that is reported rather than raised as an error.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
indicator_codesYesOne to ten indicator codes, e.g. ["WHOSIS_000001", "MDG_0000000026"].

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
errorNoPresent when the call failed. Absent on success.
notFoundNoIndicator codes that resolved to neither a catalog name nor any dimension rows — they do not exist in the GHO catalog.
indicatorsNoMetadata for each code that resolved to a catalog entry.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedInput schema / additionalProperties
      Added value: +false
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "indicators",
      +      "notFound"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / error
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "Present when the call failed. Absent on success.",
      +  "properties": {
      +    "code": {
      +      "description": "JSON-RPC error code for this failure.",
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "data": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "reason": {
      +          "description": "Machine-readable failure mode. Declared by this tool: `all_not_found`: No requested indicator code resolved to a catalog entry. Other values are possible when a failure originates below the handler.",
      +          "examples": [
      +            "all_not_found"
      +          ],
      +          "type": "string"
      +        },
      +        "recovery": {
      +          "additionalProperties": {},
      +          "description": "Actionable next step for the caller.",
      +          "properties": {
      +            "hint": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "hint"
      +          ],
      +          "type": "object"
      +        },
      +        "retryable": {
      +          "description": "Whether retrying may succeed.",
      +          "type": "boolean"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "message": {
      +      "description": "Human-readable description of what went wrong.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "code",
      +    "message"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / required
      Removed value: -[
      -  "indicators",
      -  "notFound"
      -]
  2. Changed4 schema fields changed
    • changedOutput schema / properties / indicators / description
      Previous value: -"Metadata for each code that returned results."New value: +"Metadata for each code that resolved to a catalog entry."
    • changedOutput schema / properties / indicators / items / properties / dimensions / description
      Previous value: -"Dimensions this indicator supports for filtering in who_query_indicator_data."New value: +"Dimensions this indicator supports for filtering in who_query_indicator_data. Empty when the GHO dimension table lists none for this code — see dimensionsNote."
    • addedOutput schema / properties / indicators / items / properties / dimensionsNote
      Added value: +{
      +  "description": "Present only when dimensions is empty: explains that the listing is missing upstream rather than the indicator being absent, and how to recover the dimensions from a sample data row.",
      +  "type": "string"
      +}
    • changedOutput schema / properties / notFound / description
      Previous value: -"Indicator codes that returned no metadata — they may not exist in the GHO catalog."New value: +"Indicator codes that resolved to neither a catalog name nor any dimension rows — they do not exist in the GHO catalog."
  3. First observed

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial behavioral context beyond the annotations. It explains that valid indicators may return an empty dimensions array with a dimensionsNote rather than an error, and that only codes absent from the catalog appear in the notFound array, reported rather than raised. This goes well beyond the readOnly and idempotent hints, covering error handling and return semantics that an agent needs to correctly interpret results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the core purpose, then adds necessary edge-case and usage guidance. It is a few sentences with no redundant fluff. It could be slightly tightened (e.g., the example codes are duplicated in the schema), but it is appropriately structured and efficient for the information it conveys.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has a single parameter, full schema coverage, and an output schema (which covers return structure), the description sufficiently addresses all functional aspects: what it fetches, when to call it, the 10-code limit, and the important edge cases around empty dimensions and notFound. There is no missing information an agent needs to invoke it correctly or interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has a complete parameter description with an example, min/max items, and format guidance (e.g., ['WHOSIS_000001', 'MDG_0000000026']). Schema coverage is 100%, so the baseline is 3. The description adds little beyond the schema—it repeats the 10-code limit and mentions the codes are WHO GHO codes, but these are already in the schema. No extra semantic value is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific verb 'Fetch metadata' and the resource 'WHO GHO indicator codes', including the content (indicator name and supported dimensions). It does not explicitly contrast itself with siblings like who_list_indicators or who_search_indicators, but it does reference the downstream who_query_indicator_data, which helps situate it. This is clear but not fully differentiating from all alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit when-to-use instruction: 'Call this before querying data with who_query_indicator_data to confirm which filter dimensions are valid.' It also covers edge cases (empty dimensions array vs notFound) and the call limit. However, it does not state when not to use this tool or mention alternatives such as who_list_dimensions or who_list_indicators, so it lacks the explicit exclusionary guidance needed for a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.