Skip to main content
Glama

UNESCO UIS — Education, Science & Culture Statistics (provenance-first)

Server Details

UNESCO UIS statistics (education, science, culture) with full provenance and fixed releases.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
SidneyBissoli/uis-mcp-server
GitHub Stars
1
Server Listing
uis-mcp-server

TDQS

A4.6/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clear, distinct purpose: search and fetch are for document retrieval per the deep research contract, while uis_get_data, uis_list_geo_units, and uis_search_indicators handle data queries, geographic codes, and indicator lookup respectively. Even search and uis_search_indicators are unambiguous because one returns document ids and the other returns indicator codes.

Naming Consistency4/5

The uis_* tools follow a consistent verb_noun snake_case pattern (get_data, list_geo_units, search_indicators), but search and fetch deviate as bare verbs. This is an intentional exception for the OpenAI Deep Research contract, but it still introduces a mixed convention.

Tool Count5/5

Five tools is well-scoped for a statistics server: search and fetch handle document retrieval, while three uis_* tools cover indicator discovery, geographic codes, and data retrieval. No tool is redundant, and the count is appropriate for the domain.

Completeness5/5

The tool surface is complete for a read-only statistics server: users can search the indicator catalog, list valid geo units, fetch raw data with footnotes, and retrieve documents. The server explicitly scopes out ILO data to a sibling server, so no critical operations are missing.

Available Tools

5 tools
fetchDeep Research DocumentA
Read-onlyIdempotent
Inspect

Returns the full document for an id obtained from search, as { id, title, text, url, metadata }: text is the readable content (Markdown) and url the canonical public page to cite.

Companion of search in the OpenAI Deep Research contract, over the UNESCO UIS statistics (≈5,000 indicators: education — enrolment, completion, literacy, teachers, spending, SDG 4 —, science/R&D (SDG 9.5), culture (SDG 11.4) and demographic context) catalog. Only ids returned by search are valid; an unknown id returns an error. The uis_* tools remain the tools for data queries.

Behavior: read-only and idempotent — a live GET against the public source when the document needs it.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesIdentifier of a document returned by `search`

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesUnique identifier of the document on this server; what `fetch` takes
urlYesCanonical public URL of the document — ChatGPT's citation depends on it
textYesFull readable content of the document (Markdown)
titleYesHuman-readable title of the document
metadataNoAdditional key/value pairs about the document (kind, source, period…)
provenanceYes
attributionYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint and idempotentHint; the description adds beyond that by explaining the live GET behavior against the public source and the error condition for unknown ids. This gives the agent practical expectations without contradicting the annotations.

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 front-loaded with the primary action and return contract, followed by domain context, error behavior, and routing guidance. Each sentence provides distinct value, though the catalog context sentence adds length and density.

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?

For a one-parameter fetch tool with an output schema, the description covers the return shape, id provenance, error behavior, behavioral traits, and sibling distinctions. Nothing needed for the agent to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100% with the id description, so the baseline is 3. The description adds meaningful extra context by stating that only ids from `search` are valid and that an unknown id errors, reinforcing validation rules beyond the schema's simple field description.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Returns the full document for an id obtained from `search`', and details the exact return shape ({ id, title, text, url, metadata }). It also distinguishes itself from the `uis_*` data query tools, so an agent can immediately tell this is the document-retrieval companion to `search`.

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

Usage Guidelines5/5

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

It explicitly states that only ids returned by `search` are valid and that unknown ids return an error, giving clear input constraints. It also directs data queries to the `uis_*` tools, providing an unambiguous 'when not to use this tool and what to use instead' rule.

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

uis_get_dataGet UNESCO UIS dataA
Read-onlyIdempotent
Inspect

Statistical records from the UNESCO Institute for Statistics Data API, filtered by indicator codes (from uis_search_indicators, up to 25), geo unit codes (from uis_list_geo_units) and year range. Set include_footnotes for per-record source notes. Returns raw UIS records only — it does not aggregate, convert or otherwise transform values; ILO labour statistics live in the sibling ILOSTAT MCP server. Broad queries are rejected with the record count — narrow by geo unit or years.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_yearNoLast year, e.g. 2024
geo_unitsNoGeo unit codes from uis_list_geo_units (e.g. ["BRA","ARG"]); omit for all
indicatorsYesIndicator codes from uis_search_indicators (e.g. ["CR.1"])
start_yearNoFirst year, e.g. 2015
provenance_modeNoProvenance verbosity: 'concise' (default — source, url, vintage, retrieval date, citation, license) or 'detailed' (full canonical block with dataset, dimension key and notices)
include_footnotesNoInclude per-record footnotes (source notes); default false

Output Schema

ParametersJSON Schema
NameRequiredDescription
rowsYes
columnsYes
provenanceYes
rows_countYes
attributionYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/openWorld/non-destructive, so the safety profile is covered. The description adds genuinely non-obvious behavior: values are returned raw and untransformed, and oversized queries are rejected with the record count rather than truncated. It stops short of describing pagination or any result-size cap on accepted queries.

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?

Three dense sentences, front-loaded with the resource and filters before the constraints and caveats. Every clause carries information; the only cost is that the raw-records and ILOSTAT disclaimers are stacked into one long sentence, slightly diluting scannability.

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?

An output schema exists, so return values need no explanation. Combined with annotations covering the safety profile and a 100%-documented schema, the description supplies the remaining essentials: where codes come from, the 25-indicator ceiling, raw/unaggregated output, and the rejection behavior for broad queries.

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

Parameters4/5

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, and the description goes beyond it by tying 'indicators' to uis_search_indicators with a max of 25 and 'geo_units' to uis_list_geo_units, plus explaining what include_footnotes yields. It adds cross-tool provenance but no syntax detail for year bounds beyond what the schema already shows.

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

Purpose5/5

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

States a specific verb and resource ('statistical records from the UNESCO Institute for Statistics Data API') and immediately scopes it by the three filter axes. It also distinguishes itself from siblings by naming uis_search_indicators and uis_list_geo_units as the code sources, and by ruling out the ILOSTAT MCP server's data.

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?

Gives explicit prerequisites (codes must come from uis_search_indicators / uis_list_geo_units) and operational guidance ('narrow by geo unit or years' when broad queries are rejected). It does not, however, contrast this tool with the generic 'fetch' and 'search' siblings, so routing between those remains implicit.

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

uis_list_geo_unitsList UNESCO UIS geo unitsA
Read-onlyIdempotent
Inspect

Valid geographic codes for uis_get_data: 462 geo units — countries (NATIONAL, ISO alpha-3 codes like BRA) and regional aggregates (REGIONAL). Filter by name/code and type. Does not return statistical values; these codes apply only to uis_get_data, not to other statistical servers.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoOnly countries (NATIONAL) or only regional aggregates
limitNoMaximum results (default 100)
offsetNoResults to skip, for pagination (default 0)
searchNoCase-insensitive filter on name, or exact code (e.g. "BRA")
provenance_modeNoProvenance verbosity: 'concise' (default — source, url, vintage, retrieval date, citation, license) or 'detailed' (full canonical block with dataset, dimension key and notices)

Output Schema

ParametersJSON Schema
NameRequiredDescription
offsetYes
showingYes
has_moreYes
geo_unitsYes
provenanceYes
attributionYes
next_offsetNo
total_matchesYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds real behavioral context beyond the annotations: the size of the result set (462 units) and the important scope constraint that these codes apply only to uis_get_data, not other statistical servers.

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

Conciseness5/5

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

Two sentences with no filler, and the most important facts — what the codes are and where they apply — are front-loaded. Every clause carries information an agent needs.

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?

With an output schema present, the return format needn't be explained, and the description still clarifies that no statistical values are returned. For a low-complexity lookup tool with full parameter documentation and annotations, nothing an agent needs to call it correctly is missing.

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?

Schema description coverage is 100%, so all five parameters (type, limit, offset, search, provenance_mode) are already documented, including the NATIONAL/REGIONAL enum and the search-by-name-or-code semantics. The description's 'Filter by name/code and type' merely restates what the schema provides, so the baseline of 3 applies.

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

Purpose5/5

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

The description names the specific resource (462 UNESCO UIS geographic codes) and its exact role: supplying valid codes for uis_get_data. It distinguishes its output from statistical data and explicitly scopes the codes to uis_get_data rather than other statistical servers, so the agent can separate it from siblings like uis_get_data and uis_search_indicators.

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?

It clearly frames the use case — resolving valid geographic codes before calling uis_get_data — and states what the tool does not do (return statistical values). It stops short of an explicit 'call this first to resolve codes' instruction or direct comparison with siblings, but the context is unambiguous.

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

uis_search_indicatorsSearch UNESCO UIS indicatorsA
Read-onlyIdempotent
Inspect

Search the UNESCO Institute for Statistics catalogue of ~5,000 indicators — education, science/R&D, culture and communication — by keywords in the name or code, optionally filtered by theme. All terms must match (AND, case-insensitive), so start with 2–3 words and drop terms if you get 0 results. Everyday and US wording is resolved to the UIS's own (enrollment→enrolment, spending→expenditure, preschool→pre-primary, university→tertiary, graduation→completion, girls/boys→female/male); when that happens the response says so in vocabulary_notes. Returns indicator codes to use with uis_get_data, plus each indicator's data availability (years, record count). Searches the catalogue only — it does not return statistical values (use uis_get_data); ILO labour statistics live in the sibling ILOSTAT MCP server.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results (default 20)
queryYesKeywords, matched against indicator name and code, AND between terms (e.g. "literacy rate youth")
themeNoRestrict to one UIS theme
offsetNoResults to skip, for pagination (default 0)
provenance_modeNoProvenance verbosity: 'concise' (default — source, url, vintage, retrieval date, citation, license) or 'detailed' (full canonical block with dataset, dimension key and notices)

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNo
offsetYes
showingYes
has_moreYes
indicatorsYes
provenanceYes
attributionYes
next_offsetNo
total_matchesYes
vocabulary_notesNo

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, the description reveals AND semantics, case-insensitivity, vocabulary normalization to UIS terminology, the response's vocabulary_notes field, and the return of data-availability metadata. This substantially enriches the agent's expectations beyond what annotations alone convey.

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

Conciseness5/5

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

Four dense, front-loaded sentences with no filler. Every sentence contributes either scope, matching semantics, vocabulary behavior, return content, or routing to alternatives, and the purpose appears immediately in the first sentence.

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?

For a search tool with a rich schema and output schema, the description covers what the tool searches, how matching behaves, how vocabulary is normalized, what the response contains, and how the tool relates to its key siblings. Nothing essential for correct invocation is missing.

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

Parameters4/5

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

The input schema already documents all 5 parameters fully, so the baseline is 3. The description adds meaningful semantics for query matching (AND, case-insensitive, vocabulary resolution) and mentions optional theme filtering, going beyond the schema's simple field descriptions.

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

Purpose5/5

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

States a specific verb and resource: searching the UNESCO UIS catalogue of ~5,000 indicators by keyword in name or code with optional theme filtering. It links to uis_get_data as the downstream consumer of results, which clearly distinguishes 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.

Usage Guidelines5/5

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

Explicitly directs users to uis_get_data for statistical values and to the ILOSTAT server for ILO labour data, establishing when not to use this tool. It also gives practical search strategy guidance: start with 2–3 terms and drop terms if 0 results.

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. 1 tool update
    • Changeduis_search_indicators3 fields changed
      • changedInput schema / properties / query / description
        Previous value: -"Keywords, matched against indicator name and code (e.g. \"literacy rate youth\")"New value: +"Keywords, matched against indicator name and code, AND between terms (e.g. \"literacy rate youth\")"
      • addedOutput schema / properties / hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / vocabulary_notes
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
  2. 3 tool updates
    • Changeduis_get_data1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changeduis_list_geo_units1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changeduis_search_indicators1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
  3. 2 tool updates
    • Addedfetch
    • Addedsearch
  4. 1 tool update
    • Changeduis_search_indicators8 fields changed
      • removedOutput schema / properties / indicators / items / properties / geo_types / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / indicators / items / properties / geo_types / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / indicators / items / properties / last_data_update / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / indicators / items / properties / last_data_update / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / indicators / items / properties / records / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / indicators / items / properties / records / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / indicators / items / properties / years / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / indicators / items / properties / years / type
        Added value: +[
        +  "string",
        +  "null"
        +]
  5. 3 tool updates
    • First observeduis_get_data
    • First observeduis_list_geo_units
    • First observeduis_search_indicators

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Provides AI assistants access to international education data from UNESCO UIS (4,000+ indicators) and OECD Education at a Glance via SDMX, with no API keys required.
    10
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables 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.
    10
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    A Model Context Protocol server that connects AI assistants to UNESCO Institute for Statistics data, enabling natural language search, retrieval, and comparison of indicators across countries.
    13
    3
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.