Skip to main content
Glama

ILO Labour Statistics (ILOSTAT): unemployment, wages, informality

Server Details

Labour market data from the ILO (ILOSTAT) by country, year, sex and age, with provenance.

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/ilo-mcp-server
GitHub Stars
1
Server Listing
ILO Statistics (ILOSTAT) MCP Server

TDQS

A4.5/5.0

Scored across 6 tools

Disambiguation4/5

The ilo_* tools cover clearly distinct steps: find indicators, inspect metadata, list dimension codes, and fetch data. The only potential confusion is between search and ilo_search_indicators, but their descriptions explicitly separate the deep-research document contract from indicator discovery for data queries.

Naming Consistency4/5

The four ILO data tools follow a consistent ilo_verb_noun pattern (ilo_get_data, ilo_get_indicator_metadata, ilo_list_dimension_values, ilo_search_indicators). The bare search and fetch names deviate from that pattern, but they are clearly described as external contract tools, so the mix is understandable.

Tool Count5/5

Six tools is a well-scoped size for the ILOSTAT domain, covering catalog search, structural metadata, dimension code lookup, data retrieval, and document fetching. No tool feels redundant or missing for the stated purpose.

Completeness4/5

The workflow is complete for typical use: search indicators, inspect their structure, list valid codes, and retrieve raw data, with fetch/search supporting the deep-research flow. Minor gaps exist around explicit data-availability checking, but agents can work around these using the provided tools.

Available Tools

6 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 ILOSTAT labour statistics (≈1,200 SDMX dataflows: employment, unemployment, wages, working time, informality, SDG labour indicators) catalog. Only ids returned by search are valid; an unknown id returns an error. The ilo_* 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.9/5.0
Behavior5/5

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

The description adds meaningful behavior beyond the annotations: it is read-only and idempotent, performs a live GET against the public source when needed, and returns an error for unknown ids. It also discloses the return shape. This complements, rather than contradicts, 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.

Conciseness5/5

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

The description is well-structured: the core function and return shape come first, followed by context and behavior. It is concise enough that every sentence adds useful information, and it avoids repeating the schema or annotations.

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 simple one-parameter tool with an output schema and safety annotations, the description covers everything needed: source of ids, return format, error behavior, read-only nature, and relationship to sibling tools. Nothing critical is missing for correct invocation.

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%, so the baseline is 3. The description adds extra semantic value by specifying that the id must come from `search`, that only such ids are valid, and that unknown ids produce errors—details not present in the schema's parameter 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 clearly states a specific action ('Returns the full document') and names the resource (document identified by an id from `search`). It also distinguishes itself from siblings by explicitly separating the `ilo_*` data-query tools from this document-fetch contract.

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 when to use the tool: after obtaining an id from `search`, and only ids from `search` are valid. It also provides an exclusion by reserving `ilo_*` tools for data queries, so an agent knows this is not for statistical data retrieval.

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

ilo_get_dataGet ILOSTAT dataA
Read-onlyIdempotent
Inspect

Statistical observations from one ILOSTAT dataflow, filtered by dimension codes (filters, e.g. {"REF_AREA": ["BRA","ARG"], "SEX": "SEX_T"}) and period (start_period/end_period, e.g. "2015"/"2024"). REF_AREA is required, maximum 30 areas per call — for broad panels, split areas into batches and/or paginate by period. Unfiltered dimensions return all their categories. Does not aggregate, convert or otherwise transform values (raw ILOSTAT data only), and does not search indicators (use ilo_search_indicators).

ParametersJSON Schema
NameRequiredDescriptionDefault
filtersYesDimension id → code or list of codes (from ilo_list_dimension_values). REF_AREA is required (up to 30 area codes); any other dimension is optional and, left out, returns all of its categories.
dataflowYesDataflow id from ilo_search_indicators (e.g. "DF_UNE_DEAP_SEX_AGE_RT")
end_periodNoLast period, e.g. "2024"
start_periodNoFirst period, 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)
last_n_observationsNoAlternative to periods: only the latest N observations per series

Output Schema

ParametersJSON Schema
NameRequiredDescription
rowsYes
columnsYes
dataflowYes
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 cover the safety profile (readOnly, idempotent, non-destructive, open-world), and the description adds real operational context beyond them: a 30-area cap per call, batching/pagination strategies, and the guarantee that values are never aggregated or transformed. It stops short of describing rate limits or failure modes beyond the schema's timeout note.

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?

It is front-loaded with the core purpose, then filters, then constraints, then exclusions — a logical progression with no filler. The sentences are long and dense, but each carries distinct information.

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, return values need not be explained, and the description covers everything else an agent needs: required filtering, size limits, period vs. last-N options, and scope exclusions. Nothing material is missing for correct invocation.

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%, so the baseline is 3, but the description goes further by showing a worked filter example that illustrates the string-vs-array value shapes and by clarifying the period parameters' format. This adds genuine meaning beyond the schema 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?

The description states a specific verb and resource — returning statistical observations from one ILOSTAT dataflow — and scopes it by dimension codes and period. It also explicitly distinguishes itself from the sibling ilo_search_indicators, so an agent can route between them without opening either schema.

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 gives concrete usage conditions (filter by dimension codes and period, unfiltered dimensions return everything) and names an alternative for a different job (ilo_search_indicators for indicator lookup). It also advises batching/pagination for broad panels, though it does not discuss the other siblings (fetch, ilo_get_indicator_metadata).

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

ilo_get_indicator_metadataGet ILOSTAT indicator metadataA
Read-onlyIdempotent
Inspect

Structure of one ILOSTAT dataflow: dimensions (in SDMX key order), their codelists, the time dimension, the source's default selection and the data vintage (last update at the ILO). Use before ilo_get_data to know which filters exist. Does not return statistical values and does not list the codes themselves (use ilo_list_dimension_values).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataflowYesDataflow id from ilo_search_indicators (e.g. "DF_UNE_DEAP_SEX_AGE_RT")
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
idYes
nameYes
versionYes
dimensionsYes
provenanceYes
attributionYes
data_vintageYes
time_dimensionYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/openWorld, so the safety profile is covered. The description adds substantive context beyond them: it defines the shape of the response and explicitly states two negative behaviors (no statistical values, no code enumeration), which prevents misuse. It does not mention pagination or response size, but for a metadata lookup that is minor.

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?

Three sentences, each load-bearing: the return structure first, the usage ordering second, the exclusions and alternative third. No filler and the most important content (what it returns and when to call it) is front-loaded.

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-value detail is not the description's burden, and it still summarizes the payload structure. Combined with the explicit sibling routing, an agent has everything needed to select and invoke this tool correctly.

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% and both parameters are documented there, including the dataflow id source and the provenance_mode enum values. The description adds no parameter-level detail, so the baseline 3 applies — the schema does the heavy lifting.

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+resource ('Structure of one ILOSTAT dataflow') and enumerates exactly what is returned: dimensions in SDMX key order, codelists, time dimension, default selection, and data vintage. It explicitly distinguishes itself from ilo_get_data (values) and ilo_list_dimension_values (codes).

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?

Gives explicit sequencing guidance ('Use before ilo_get_data to know which filters exist') and two clear exclusions with the correct alternative named for each ('does not return statistical values', 'does not list the codes themselves (use ilo_list_dimension_values)'). Nothing is left to inference.

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

ilo_list_dimension_valuesList valid codes of a dimensionA
Read-onlyIdempotent
Inspect

Valid codes (id + label) of one dimension of an ILOSTAT dataflow — e.g. the country/area codes of REF_AREA (ISO 3166-1 alpha-3 such as BRA, plus X-codes for aggregates such as X01 World) or the categories of SEX (SEX_T/SEX_M/SEX_F) and AGE. Use search to resolve a name to a code (e.g. search "Brazil") instead of paging through hundreds of codes; codelists are shared across dataflows, so a code found here is valid wherever the same codelist is used. Use to build correct ilo_get_data filters. Does not return statistical values, does not say which codes actually have data for a given dataflow, and is not applicable to the time dimension (filter it via start_period/end_period in ilo_get_data).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum codes returned (default 200)
offsetNoCodes to skip, for pagination (default 0)
searchNoCase-insensitive filter on code id or label
dataflowYesDataflow id the dimension belongs to
dimensionYesDimension id from ilo_get_indicator_metadata (e.g. "REF_AREA", "SEX")
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
valuesYes
showingYes
codelistYes
dataflowYes
has_moreYes
dimensionYes
provenanceYes
attributionYes
next_offsetNo
total_codesYes

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/non-destructive, so safety is covered. The description adds real behavioral scope beyond them: codelists are shared across dataflows, results exclude statistical values, and codes do not indicate which have data. It stops short of describing pagination defaults or the raw return shape, so a 4 rather than 5.

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?

Front-loaded with purpose, then usage, then exclusions, in a compact block with no filler sentences. It is dense and runs long in a single paragraph, which slightly reduces scanability, but each clause carries information.

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 and annotations covering safety, the description only needed to supply scope and exclusions — which it does: shared codelists, absence of data-availability info, and the time-dimension carve-out. 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 limit/offset/search/dataflow/dimension/provenance_mode are already documented in the schema; baseline 3 applies. The description adds the intent of `search` (name-to-code resolution) and implies paging, but no syntax or format detail beyond the schema.

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 ('Valid codes (id + label) of one dimension of an ILOSTAT dataflow') and grounds it with concrete examples (REF_AREA ISO 3166-1 alpha-3, X-codes, SEX_T/SEX_M/SEX_F, AGE). An agent can distinguish this from ilo_get_data and search without opening a schema.

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 routes the agent: use `search` to resolve a name to a code instead of paging, and use this to build ilo_get_data filters. It also names an exclusion ('not applicable to the time dimension — filter it via start_period/end_period in ilo_get_data'), which is exactly the when-not guidance the dimension calls for.

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

ilo_search_indicatorsSearch ILOSTAT indicatorsA
Read-onlyIdempotent
Inspect

Search the ILOSTAT catalogue of ~1,200 indicator dataflows by keywords in the name or id (e.g. "unemployment rate sex age"). All terms must match (AND, case-insensitive), so start with 2–3 English words and drop terms if you get 0 results. Everyday and US wording is resolved to the ILO's own (labor→labour, wages/salary→earnings, informality→informal, gender→sex, productivity→output per worker); when that happens the response says so in vocabulary_notes. Results are ranked by ILO relevance weight, not by match count. Reading the id tells you the shape: suffix _RT = rate/ratio, NB = number (usually thousands); dataflows whose second token starts with 2 (e.g. DF_UNE_2EAP…) are ILO modelled estimates with full country/year coverage, the others are reported national data. Returns dataflow ids to use with ilo_get_data / ilo_get_indicator_metadata. Searches the local catalogue only — it does not return statistical values (use ilo_get_data), does not search dimension codes such as countries (use ilo_list_dimension_values) and does not cover non-ILO sources.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results (default 20)
queryYesKeywords, matched against dataflow name and id (AND between terms)
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?

While annotations already establish readOnly/idempotent/non-destructive behavior, the description goes well beyond them by disclosing AND semantics, case-insensitivity, synonym resolution, relevance ranking, id-shape conventions (_RT, _NB, 2-token modelled estimates), and vocabulary_notes behavior. No contradiction with annotations exists.

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?

The description is long but every sentence earns its place: purpose, query strategy, vocabulary behavior, ranking, id interpretation, and exclusions are all covered without redundancy. The core purpose is front-loaded before the detailed guidance.

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 output schema exists and the tool is a read-only search, the description covers everything an agent needs: what it searches, how to construct queries, how results are ordered, how to interpret ids, and which sibling tools to use for adjacent tasks. Nothing important 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%, so the baseline is 3, but the description adds meaning beyond the schema: it explains query semantics with examples, vocabulary mapping, ranking behavior, and how to interpret result ids. It doesn't add much about limit/offset/provenance_mode, but those are already fully described in the schema.

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: 'Search the ILOSTAT catalogue of ~1,200 indicator dataflows by keywords in the name or id.' It also differentiates itself from siblings by explicitly stating what it does not do: no statistical values, no dimension-code search, no non-ILO sources.

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?

Usage guidance is explicit and actionable: start with 2–3 English words, drop terms on zero results, and use alternatives for other needs (ilo_get_data for values, ilo_list_dimension_values for countries). It also names sibling tools directly, so an agent knows exactly when to choose this tool.

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
    • Changedilo_search_indicators2 fields changed
      • addedOutput schema / properties / hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / vocabulary_notes
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
  2. 4 tool updates
    • Changedilo_get_data1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedilo_get_indicator_metadata1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedilo_list_dimension_values1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedilo_search_indicators1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
  3. 1 tool update
    • Changedilo_get_data5 fields changed
      • changedInput schema / properties / filters / description
        Previous value: -"Dimension id → code or list of codes (from ilo_list_dimension_values). REF_AREA is required (up to 30 area codes)."New value: +"Dimension id → code or list of codes (from ilo_list_dimension_values). REF_AREA is required (up to 30 area codes); any other dimension is optional and, left out, returns all of its categories."
      • addedInput schema / properties / filters / properties
        Added value: +{
        +  "REF_AREA": {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      }
        +    ],
        +    "description": "Area codes — REQUIRED, at most 30 per call (e.g. [\"BRA\",\"ARG\"]). Without them the ILO gateway times out (HTTP 504). Discover codes with ilo_list_dimension_values (dimension REF_AREA)."
        +  }
        +}
      • removedInput schema / properties / filters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / filters / required
        Added value: +[
        +  "REF_AREA"
        +]
      • changedInput schema / required
        Previous value: -[
        -  "dataflow"
        -]New value: +[
        +  "dataflow",
        +  "filters"
        +]
  4. 6 tool updates
    • First observedfetch
    • First observedilo_get_data
    • First observedilo_get_indicator_metadata
    • First observedilo_list_dimension_values
    • First observedilo_search_indicators
    • First observedsearch

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.