Skip to main content
Glama

ILO Labour Statistics (ILOSTAT)

Server Details

ILOSTAT labour statistics with provenance (source, vintage, license). 6 tools incl. search/fetch.

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

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
filtersNoDimension id → code or list of codes (from ilo_list_dimension_values). REF_AREA is required (up to 30 area codes).
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.7/5.0
Behavior5/5

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

Annotations already declare readOnly, idempotent, and non-destructive behavior, so the description only needs to add context beyond that. It adds valuable behavioral detail: no aggregation, no transformation, raw values only, unfiltered dimensions return all categories, and a 30-area cap with batching/pagination guidance. 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.

Conciseness5/5

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

Four sentences deliver purpose, filter examples, constraints, batching strategy, raw-data semantics, and sibling routing with no filler. The core scope is front-loaded, and every sentence earns its place.

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?

Combined with a fully documented input schema and an output schema, the description covers intended use, required parameters, operational limits, batching strategy, raw-data behavior, and sibling differentiation. There is no critical missing information for an agent to select and call this tool correctly.

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 meaning by giving concrete filter/period examples, enforcing REF_AREA as required, explaining the 30-area limit, and clarifying what happens when dimensions are unfiltered. It leaves last_n_observations and provenance_mode to the schema, but those are already well documented there.

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 action and object: retrieving statistical observations from one ILOSTAT dataflow, filtered by dimension codes and period. It explicitly scopes behavior as raw ILOSTAT data and distinguishes itself from ilo_search_indicators, making its purpose unmistakable.

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 clear operational guidance: REF_AREA is required, max 30 areas per call, batch for broad panels, paginate by period, and unfiltered dimensions return all categories. It names ilo_search_indicators as the alternative for indicator search, though it does not explicitly route to ilo_get_indicator_metadata or ilo_list_dimension_values.

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 cover the safe, read-only, idempotent nature of the tool. The description adds meaningful behavioral context by disclosing exactly what is returned (structure, not values or codes) and what the vintage represents. This goes beyond 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.

Conciseness5/5

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

The description is three sentences with no filler. The core definition is front-loaded, followed by usage timing and explicit exclusions. Every sentence earns its place.

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 metadata-retrieval tool with two well-documented parameters, a rich output schema, and safety annotations, the description fully covers what the agent needs: what is returned, what is intentionally excluded, and how it relates to sibling tools. No critical guidance 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 the schema already explains both parameters. The description reinforces that 'dataflow' identifies a specific ILOSTAT dataflow and that the tool is a prerequisite for knowing filters, but it does not add new parameter-level details beyond the schema. Baseline 3 is appropriate.

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 a specific verb and resource: it returns the structure of one ILOSTAT dataflow, including dimensions, codelists, time dimension, default selection, and vintage. It also explicitly differentiates itself from siblings by stating it does not return statistical values and does not list codes, which are handled by other tools.

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?

The description gives clear usage direction: 'Use before ilo_get_data to know which filters exist.' It also names the alternative for code listing: 'use ilo_list_dimension_values,' and states what the tool does not do, preventing misuse. This is explicit when-and-when-not guidance.

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.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds substantial behavioral context beyond those: codelists are shared across dataflows, the tool does not indicate data availability, and it excludes the time dimension. These are non-obvious behaviors an agent needs to know before calling the tool.

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 dense but every sentence earns its place: definition and examples, routing to `search`, intended use, and explicit limitations. The core purpose is front-loaded, and the caveats are grouped clearly at the end. No filler or repetition of schema details.

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 six parameters, a rich input schema, and an output schema, the description covers the necessary operational context: what the codes represent, how to use search vs. paging, cross-dataflow validity, limitations regarding data availability, and time-dimension handling. 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?

Schema coverage is 100%, so the baseline is 3. The description adds meaningful extra context for the `search` parameter ('resolve a name to a code' with a 'Brazil' example) and clarifies the relationship between `dataflow` and `dimension` by noting codelists are shared across dataflows. This goes beyond the schema's per-parameter descriptions without duplicating them.

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+resource: 'Valid codes (id + label) of one dimension of an ILOSTAT dataflow,' and reinforces it with concrete examples (REF_AREA, SEX, AGE). It also distinguishes itself from siblings by stating what it does not do ('does not return statistical values') and by pointing to the `search` tool for name-to-code resolution.

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?

The description explicitly says when to use this tool ('Use to build correct ilo_get_data filters') and when not to use it ('does not say which codes actually have data for a given dataflow', 'not applicable to the time dimension'). It names the alternative (`search`) and explains the condition that selects it, so an agent gets clear routing guidance.

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; 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
offsetYes
showingYes
has_moreYes
indicatorsYes
provenanceYes
attributionYes
next_offsetNo
total_matchesYes

TDQS

A4.7/5.0
Behavior5/5

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

The description reveals important behavioral details beyond the readOnly/idempotent annotations: AND matching, case-insensitivity, ranking by ILO relevance weight rather than match count, id suffix conventions (_RT, _NB), and the distinction between ILO modelled estimates and reported national data.

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 dense but every sentence contributes: core purpose, query tips, result interpretation, usage with siblings, and exclusions. It front-loads the main action and appends only relevant operational detail.

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 a rich output schema present, the description does what is needed: it explains what the search returns, how results are ordered, how to decode ids, and how to route follow-up calls to sibling tools. Nothing essential is missing for correct invocation.

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 coverage is 100%, so the baseline applies. The description adds interpretive guidance about how the query behaves (AND, case-insensitive, relevance ranking) and how to read result ids, but it does not significantly extend the meaning of the individual parameters beyond the schema 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, 'Search', and a concrete resource, 'the ILOSTAT catalogue of ~1,200 indicator dataflows by keywords in the name or id'. It also explicitly distinguishes itself from its siblings by saying it does not return statistical values, does not search dimension codes, and does not cover 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?

It gives actionable guidance: start with 2–3 English words, drop terms if 0 results, and use the returned dataflow ids with ilo_get_data / ilo_get_indicator_metadata. It also names alternatives for what this tool does not do, such as ilo_list_dimension_values for dimension codes.

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. Dates show when Glama detected each change.

  1. 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

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.6/5.0
Disambiguation4/5

The ilo_* tools are clearly role-separated: get data, inspect metadata, list dimension codes, and search indicators. The only real ambiguity is between `search` and `ilo_search_indicators`, which both query the same catalogue, though the descriptions clarify that one returns documents for `fetch` while the other returns dataflow ids for data queries.

Naming Consistency4/5

Most tools follow a predictable `ilo_<verb>_<object>` pattern: get_data, get_indicator_metadata, list_dimension_values, search_indicators. `fetch` and `search` break that pattern, but this is an explicitly forced adapter to the OpenAI Deep Research contract rather than random inconsistency.

Tool Count5/5

Six tools are well-scoped for the stated domain: the search/fetch pair handles document retrieval, and the four `ilo_*` tools cover indicator discovery, metadata inspection, dimension-value lookup, and raw statistical data extraction. No tool feels redundant or unnecessary.

Completeness4/5

The set covers the full workflow from finding an indicator dataflow, inspecting its structure, listing valid codelist values, and retrieving raw data. A minor gap is that `ilo_list_dimension_values` suggests using `search` to resolve a name like 'Brazil' to a code, but `search` actually returns catalogue documents rather than codelist codes, so name-to-code resolution lacks a direct tool.