ILO Labour Statistics (ILOSTAT): unemployment, wages, informality
Measured conclusion: Alive, not deep-tested. L2 outcome: not_attempted.
Labour market data from the ILO (ILOSTAT) by country, year, sex and age, with provenance.
| Author | io.github.SidneyBissoli |
|---|---|
| Access | mixed |
| Publisher key required | No |
| Measured state | Alive, not deep-tested |
| L1 liveness | alive |
| L1 latency | 2481 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"ILO Labour Statistics (ILOSTAT): unemployment, wages, informality": {
"url": "https://ilo.sidneybissoli.com/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (6)
ilo_search_indicatorsread-onlySearch 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.
Parameters:
query(required) — string — Keywords, matched against dataflow name and id (AND between terms)limit— integer — Maximum results (default 20)offset— integer — Results to skip, for pagination (default 0)provenance_mode— string — Provenance verbosity: 'concise' (default — source, url, vintage, retrieval date, citation, license) or 'detailed' (full canonical block with dataset, dimension key and notices)
Hints: read-only yes · destructive no · idempotent yes · open-world no
ilo_get_indicator_metadataread-onlyStructure 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).
Parameters:
dataflow(required) — string — Dataflow id from ilo_search_indicators (e.g. "DF_UNE_DEAP_SEX_AGE_RT")provenance_mode— string — Provenance verbosity: 'concise' (default — source, url, vintage, retrieval date, citation, license) or 'detailed' (full canonical block with dataset, dimension key and notices)
Hints: read-only yes · destructive no · idempotent yes · open-world yes
ilo_list_dimension_valuesread-onlyValid 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).
Parameters:
dataflow(required) — string — Dataflow id the dimension belongs todimension(required) — string — Dimension id from ilo_get_indicator_metadata (e.g. "REF_AREA", "SEX")limit— integer — Maximum codes returned (default 200)offset— integer — Codes to skip, for pagination (default 0)search— string — Case-insensitive filter on code id or labelprovenance_mode— string — Provenance verbosity: 'concise' (default — source, url, vintage, retrieval date, citation, license) or 'detailed' (full canonical block with dataset, dimension key and notices)
Hints: read-only yes · destructive no · idempotent yes · open-world yes
ilo_get_dataread-onlyStatistical 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): read each value with the unit and multiplier the ILO states in its row attributes (UNIT_MEASURE, UNIT_MULT — e.g. UNIT_MULT 3 = thousands). Read TIME_PERIOD with the FREQ column (annual, quarterly or monthly) and OBS_STATUS when present (break in series, estimated or provisional value). Values are the current release, dated by data_vintage (the dataflow LAST_UPDATE): the ILO revises published figures and re-estimates modelled series (_2 ids) at each release, past years included. Does not search indicators (use ilo_search_indicators).
Parameters:
dataflow(required) — string — Dataflow id from ilo_search_indicators (e.g. "DF_UNE_DEAP_SEX_AGE_RT")filters(required) — object — 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.end_period— string — Last period, e.g. "2024"start_period— string — First period, e.g. "2015"provenance_mode— string — Provenance verbosity: 'concise' (default — source, url, vintage, retrieval date, citation, license) or 'detailed' (full canonical block with dataset, dimension key and notices)last_n_observations— integer — Alternative to periods: only the latest N observations per series
Hints: read-only yes · destructive no · idempotent yes · open-world yes
searchread-onlySearches the ILOSTAT labour statistics (≈1,200 SDMX dataflows: employment, unemployment, wages, working time, informality, SDG labour indicators) catalog and returns up to 10 matching documents as { id, title, url }, ordered by relevance (an empty list means nothing matched). This tool exists for the OpenAI Deep Research contract: ChatGPT deep research, company knowledge and research workflows over the Responses API require exactly the tools `search` and `fetch`. Pass one of the returned ids to `fetch` to read the document. For direct questions and for data (values, series, rankings) prefer the `ilo_*` tools, which return the actual data with provenance — this is a catalog index, not a data query. Query: natural language or keywords, Portuguese or English; accents and case are ignored. Behavior: read-only and idempotent — the catalog comes from the public source and is cached in memory.
Parameters:
query(required) — string — Search terms, natural language or keywords (accents and case are ignored)
Hints: read-only yes · destructive no · idempotent yes · open-world yes
fetchread-onlyReturns 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.
Parameters:
id(required) — string — Identifier of a document returned by `search`
Hints: read-only yes · destructive no · idempotent yes · open-world yes
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.