Serveur MCP

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

io.github.SidneyBissoli/ilo-mcp-server
Données et analytique Recherche et exploration Public et accessible MCP 2025-11-25

Ce que fait ce MCP

Searches ILOSTAT labor-statistics indicators and retrieves documented observations, metadata, dimension codes, and source information.

fetch
Deep Research Document
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.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Identifier of a document returned by `search`'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id', 'title', 'text', 'url', 'provenance', 'attribution'], 'properties': {'id': {'type': 'string', 'minLength': 1, 'description': 'Unique identifier of the document on this server; what `fetch` takes'}, 'url': {'type': 'string', 'description': "Canonical public URL of the document â\x80\x94 ChatGPT's citation depends on it"}, 'text': {'type': 'string', 'description': 'Full readable content of the document (Markdown)'}, 'title': {'type': 'string', 'description': 'Human-readable title of the document'}, 'metadata': {'type': 'object', 'description': 'Additional key/value pairs about the document (kind, source, periodâ\x80¦)', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'provenance': {'anyOf': [{'type': 'object', 'required': ['source', 'source_url', 'data_vintage', 'retrieved_at', 'retrieval', 'citation', 'license'], 'properties': {'source': {'type': 'string'}, 'license': {'type': ['string', 'null']}, 'citation': {'type': 'string'}, 'retrieval': {'anyOf': [{'type': 'object', 'required': ['requests', 'attempts', 'anomalies', 'unstable'], 'properties': {'attempts': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'requests': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'unstable': {'type': 'boolean'}, 'anomalies': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'count'], 'properties': {'kind': {'enum': ['timeout', 'network', 'http_4xx', 'http_5xx', 'rate_limited', 'malformed_body'], 'type': 'string'}, 'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}, 'additionalProperties': False}}}, 'additionalProperties': False}, {'type': 'null'}]}, 'source_url': {'type': 'string'}, 'data_vintage': {'type': ['string', 'null']}, 'retrieved_at': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['contract_version', 'source', 'dataset', 'dimension_key', 'data_vintage', 'retrieved_at', 'source_url', 'api_version', 'license', 'citation', 'notices', 'derived', 'derivation_note', 'served_from_cache', 'retrieval', 'field_sources'], 'properties': {'source': {'type': 'object', 'required': ['name', 'agency', 'database', 'endpoint'], 'properties': {'name': {'type': 'string'}, 'agency': {'type': ['string', 'null']}, 'database': {'type': ['string', 'null']}, 'endpoint': {'type': ['string', 'null']}}, 'additionalProperties': False}, 'dataset': {'type': 'object', 'required': ['id', 'version', 'name'], 'properties': {'id': {'type': ['string', 'null']}, 'name': {'type': ['string', 'null']}, 'version': {'type': ['string', 'null']}}, 'additionalProperties': False}, 'derived': {'type': 'boolean'}, 'license': {'type': 'object', 'required': ['id', 'name', 'url', 'terms_url', 'verified_at'], 'properties': {'id': {'type': ['string', 'null']}, 'url': {'type': ['string', 'null']}, 'name': {'type': ['string', 'null']}, 'terms_url': {'type': ['string', 'null']}, 'verified_at': {'type': ['string', 'null']}}, 'additionalProperties': False}, 'notices': {'type': 'array', 'items': {'type': 'string'}}, 'citation': {'type': 'string'}, 'retrieval': {'anyOf': [{'type': 'object', 'required': ['requests', 'attempts', 'anomalies', 'unstable'], 'properties': {'attempts': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'requests': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'unstable': {'type': 'boolean'}, 'anomalies': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'count'], 'properties': {'kind': {'enum': ['timeout', 'network', 'http_4xx', 'http_5xx', 'rate_limited', 'malformed_body'], 'type': 'string'}, 'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}, 'additionalProperties': False}}}, 'additionalProperties': False}, {'type': 'null'}]}, 'source_url': {'type': 'string'}, 'api_version': {'type': ['string', 'null']}, 'data_vintage': {'type': ['string', 'null']}, 'retrieved_at': {'type': 'string'}, 'dimension_key': {'anyOf': [{'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}, {'type': 'null'}]}, 'field_sources': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'required': ['fields', 'source_url', 'dataset_id', 'data_vintage', 'retrieved_at'], 'properties': {'fields': {'type': 'array', 'items': {'type': 'string'}, 'minItems': 1}, 'dataset_id': {'type': ['string', 'null']}, 'source_url': {'type': 'string'}, 'data_vintage': {'type': ['string', 'null']}, 'retrieved_at': {'type': ['string', 'null']}}, 'additionalProperties': False}}, {'type': 'null'}]}, 'derivation_note': {'type': ['string', 'null']}, 'contract_version': {'type': 'string', 'const': '1.1'}, 'served_from_cache': {'type': ['boolean', 'null']}}, 'additionalProperties': False}], 'description': 'Provenance block (contract v1.1). concise (default): source, source_url, data_vintage, retrieved_at, retrieval, citation, license; detailed: the full canonical block (dataset, dimension_key, notices, served_from_cache, ...). retrieval is the origin diagnostic of this call â\x80\x94 requests made to ILOSTAT, attempts including retries, anomalies overcome (timeout, network, rate_limited, http_5xx, http_4xx, malformed_body) and unstable (true when anything had to be retried: treat the figures as obtained with difficulty); null when nothing was fetched from ILOSTAT (catalogue or cached answer)'}, 'attribution': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}
ilo_get_data
Get ILOSTAT data
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).
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['dataflow', 'filters'], 'properties': {'filters': {'type': 'object', 'required': ['REF_AREA'], 'properties': {'REF_AREA': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}, 'minItems': 1}], 'description': 'Area codes â\x80\x94 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).'}}, 'description': 'Dimension id â\x86\x92 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.', 'additionalProperties': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}, 'minItems': 1}]}}, 'dataflow': {'type': 'string', 'minLength': 1, 'description': 'Dataflow id from ilo_search_indicators (e.g. "DF_UNE_DEAP_SEX_AGE_RT")'}, 'end_period': {'type': 'string', 'minLength': 1, 'description': 'Last period, e.g. "2024"'}, 'start_period': {'type': 'string', 'minLength': 1, 'description': 'First period, e.g. "2015"'}, 'provenance_mode': {'enum': ['concise', 'detailed'], 'type': 'string', 'description': "Provenance verbosity: 'concise' (default â\x80\x94 source, url, vintage, retrieval date, citation, license) or 'detailed' (full canonical block with dataset, dimension key and notices)"}, 'last_n_observations': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Alternative to periods: only the latest N observations per series'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['dataflow', 'columns', 'rows_count', 'rows', 'provenance', 'attribution'], 'properties': {'rows': {'type': 'array', 'items': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}}, 'columns': {'type': 'array', 'items': {'type': 'string'}}, 'dataflow': {'type': 'object', 'required': ['id', 'version', 'name'], 'properties': {'id': {'type': 'string'}, 'name': {'type': ['string', 'null']}, 'version': {'type': 'string'}}, 'additionalProperties': False}, 'provenance': {'anyOf': [{'type': 'object', 'required': ['source', 'source_url', 'data_vintage', 'retrieved_at', 'retrieval', 'citation', 'license'], 'properties': {'source': {'type': 'string'}, 'license': {'type': ['string', 'null']}, 'citation': {'type': 'string'}, 'retrieval': {'anyOf': [{'type': 'object', 'required': ['requests', 'attempts', 'anomalies', 'unstable'], 'properties': {'attempts': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'requests': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'unstable': {'type': 'boolean'}, 'anomalies': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'count'], 'properties': {'kind': {'enum': ['timeout', 'network', 'http_4xx', 'http_5xx', 'rate_limited', 'malformed_body'], 'type': 'string'}, 'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}, 'additionalProperties': False}}}, 'additionalProperties': False}, {'type': 'null'}]}, 'source_url': {'type': 'string'}, 'data_vintage': {'type': ['string', 'null']}, 'retrieved_at': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['contract_version', 'source', 'dataset', 'dimension_key', 'data_vintage', 'retrieved_at', 'source_url', 'api_version', 'license', 'citation', 'notices', 'derived', 'derivation_note', 'served_from_cache', 'retrieval', 'field_sources'], 'properties': {'source': {'type': 'object', 'required': ['name', 'agency', 'database', 'endpoint'], 'properties': {'name': {'type': 'string'}, 'agency': {'type': ['string', 'null']}, 'database': {'type': ['string', 'null']}, 'endpoint': {'type': ['string', 'null']}}, 'additionalProperties': False}, 'dataset': {'type': 'object', 'required': ['id', 'version', 'name'], 'properties': {'id': {'type': ['string', 'null']}, 'name': {'type': ['string', 'null']}, 'version': {'type': ['string', 'null']}}, 'additionalProperties': False}, 'derived': {'type': 'boolean'}, 'license': {'type': 'object', 'required': ['id', 'name', 'url', 'terms_url', 'verified_at'], 'properties': {'id': {'type': ['string', 'null']}, 'url': {'type': ['string', 'null']}, 'name': {'type': ['string', 'null']}, 'terms_url': {'type': ['string', 'null']}, 'verified_at': {'type': ['string', 'null']}}, 'additionalProperties': False}, 'notices': {'type': 'array', 'items': {'type': 'string'}}, 'citation': {'type': 'string'}, 'retrieval': {'anyOf': [{'type': 'object', 'required': ['requests', 'attempts', 'anomalies', 'unstable'], 'properties': {'attempts': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'requests': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'unstable': {'type': 'boolean'}, 'anomalies': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'count'], 'properties': {'kind': {'enum': ['timeout', 'network', 'http_4xx', 'http_5xx', 'rate_limited', 'malformed_body'], 'type': 'string'}, 'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}, 'additionalProperties': False}}}, 'additionalProperties': False}, {'type': 'null'}]}, 'source_url': {'type': 'string'}, 'api_version': {'type': ['string', 'null']}, 'data_vintage': {'type': ['string', 'null']}, 'retrieved_at': {'type': 'string'}, 'dimension_key': {'anyOf': [{'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}, {'type': 'null'}]}, 'field_sources': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'required': ['fields', 'source_url', 'dataset_id', 'data_vintage', 'retrieved_at'], 'properties': {'fields': {'type': 'array', 'items': {'type': 'string'}, 'minItems': 1}, 'dataset_id': {'type': ['string', 'null']}, 'source_url': {'type': 'string'}, 'data_vintage': {'type': ['string', 'null']}, 'retrieved_at': {'type': ['string', 'null']}}, 'additionalProperties': False}}, {'type': 'null'}]}, 'derivation_note': {'type': ['string', 'null']}, 'contract_version': {'type': 'string', 'const': '1.1'}, 'served_from_cache': {'type': ['boolean', 'null']}}, 'additionalProperties': False}], 'description': 'Provenance block (contract v1.1). concise (default): source, source_url, data_vintage, retrieved_at, retrieval, citation, license; detailed: the full canonical block (dataset, dimension_key, notices, served_from_cache, ...). retrieval is the origin diagnostic of this call â\x80\x94 requests made to ILOSTAT, attempts including retries, anomalies overcome (timeout, network, rate_limited, http_5xx, http_4xx, malformed_body) and unstable (true when anything had to be retried: treat the figures as obtained with difficulty); null when nothing was fetched from ILOSTAT (catalogue or cached answer)'}, 'rows_count': {'type': 'number'}, 'attribution': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': {}}
ilo_get_indicator_metadata
Get ILOSTAT indicator metadata
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).
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['dataflow'], 'properties': {'dataflow': {'type': 'string', 'minLength': 1, 'description': 'Dataflow id from ilo_search_indicators (e.g. "DF_UNE_DEAP_SEX_AGE_RT")'}, 'provenance_mode': {'enum': ['concise', 'detailed'], 'type': 'string', 'description': "Provenance verbosity: 'concise' (default â\x80\x94 source, url, vintage, retrieval date, citation, license) or 'detailed' (full canonical block with dataset, dimension key and notices)"}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id', 'version', 'name', 'data_vintage', 'dimensions', 'time_dimension', 'provenance', 'attribution'], 'properties': {'id': {'type': 'string'}, 'name': {'type': ['string', 'null']}, 'version': {'type': 'string'}, 'dimensions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'codelist'], 'properties': {'id': {'type': 'string'}, 'codelist': {'type': ['string', 'null']}}, 'additionalProperties': False}}, 'provenance': {'anyOf': [{'type': 'object', 'required': ['source', 'source_url', 'data_vintage', 'retrieved_at', 'retrieval', 'citation', 'license'], 'properties': {'source': {'type': 'string'}, 'license': {'type': ['string', 'null']}, 'citation': {'type': 'string'}, 'retrieval': {'anyOf': [{'type': 'object', 'required': ['requests', 'attempts', 'anomalies', 'unstable'], 'properties': {'attempts': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'requests': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'unstable': {'type': 'boolean'}, 'anomalies': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'count'], 'properties': {'kind': {'enum': ['timeout', 'network', 'http_4xx', 'http_5xx', 'rate_limited', 'malformed_body'], 'type': 'string'}, 'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}, 'additionalProperties': False}}}, 'additionalProperties': False}, {'type': 'null'}]}, 'source_url': {'type': 'string'}, 'data_vintage': {'type': ['string', 'null']}, 'retrieved_at': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['contract_version', 'source', 'dataset', 'dimension_key', 'data_vintage', 'retrieved_at', 'source_url', 'api_version', 'license', 'citation', 'notices', 'derived', 'derivation_note', 'served_from_cache', 'retrieval', 'field_sources'], 'properties': {'source': {'type': 'object', 'required': ['name', 'agency', 'database', 'endpoint'], 'properties': {'name': {'type': 'string'}, 'agency': {'type': ['string', 'null']}, 'database': {'type': ['string', 'null']}, 'endpoint': {'type': ['string', 'null']}}, 'additionalProperties': False}, 'dataset': {'type': 'object', 'required': ['id', 'version', 'name'], 'properties': {'id': {'type': ['string', 'null']}, 'name': {'type': ['string', 'null']}, 'version': {'type': ['string', 'null']}}, 'additionalProperties': False}, 'derived': {'type': 'boolean'}, 'license': {'type': 'object', 'required': ['id', 'name', 'url', 'terms_url', 'verified_at'], 'properties': {'id': {'type': ['string', 'null']}, 'url': {'type': ['string', 'null']}, 'name': {'type': ['string', 'null']}, 'terms_url': {'type': ['string', 'null']}, 'verified_at': {'type': ['string', 'null']}}, 'additionalProperties': False}, 'notices': {'type': 'array', 'items': {'type': 'string'}}, 'citation': {'type': 'string'}, 'retrieval': {'anyOf': [{'type': 'object', 'required': ['requests', 'attempts', 'anomalies', 'unstable'], 'properties': {'attempts': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'requests': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'unstable': {'type': 'boolean'}, 'anomalies': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'count'], 'properties': {'kind': {'enum': ['timeout', 'network', 'http_4xx', 'http_5xx', 'rate_limited', 'malformed_body'], 'type': 'string'}, 'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}, 'additionalProperties': False}}}, 'additionalProperties': False}, {'type': 'null'}]}, 'source_url': {'type': 'string'}, 'api_version': {'type': ['string', 'null']}, 'data_vintage': {'type': ['string', 'null']}, 'retrieved_at': {'type': 'string'}, 'dimension_key': {'anyOf': [{'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}, {'type': 'null'}]}, 'field_sources': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'required': ['fields', 'source_url', 'dataset_id', 'data_vintage', 'retrieved_at'], 'properties': {'fields': {'type': 'array', 'items': {'type': 'string'}, 'minItems': 1}, 'dataset_id': {'type': ['string', 'null']}, 'source_url': {'type': 'string'}, 'data_vintage': {'type': ['string', 'null']}, 'retrieved_at': {'type': ['string', 'null']}}, 'additionalProperties': False}}, {'type': 'null'}]}, 'derivation_note': {'type': ['string', 'null']}, 'contract_version': {'type': 'string', 'const': '1.1'}, 'served_from_cache': {'type': ['boolean', 'null']}}, 'additionalProperties': False}], 'description': 'Provenance block (contract v1.1). concise (default): source, source_url, data_vintage, retrieved_at, retrieval, citation, license; detailed: the full canonical block (dataset, dimension_key, notices, served_from_cache, ...). retrieval is the origin diagnostic of this call â\x80\x94 requests made to ILOSTAT, attempts including retries, anomalies overcome (timeout, network, rate_limited, http_5xx, http_4xx, malformed_body) and unstable (true when anything had to be retried: treat the figures as obtained with difficulty); null when nothing was fetched from ILOSTAT (catalogue or cached answer)'}, 'attribution': {'type': 'array', 'items': {'type': 'string'}}, 'data_vintage': {'type': ['string', 'null']}, 'time_dimension': {'type': ['string', 'null']}}, 'additionalProperties': {}}
ilo_list_dimension_values
List valid codes of a dimension
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).
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['dataflow', 'dimension'], 'properties': {'limit': {'type': 'integer', 'maximum': 500, 'minimum': 1, 'description': 'Maximum codes returned (default 200)'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Codes to skip, for pagination (default 0)'}, 'search': {'type': 'string', 'minLength': 1, 'description': 'Case-insensitive filter on code id or label'}, 'dataflow': {'type': 'string', 'minLength': 1, 'description': 'Dataflow id the dimension belongs to'}, 'dimension': {'type': 'string', 'minLength': 1, 'description': 'Dimension id from ilo_get_indicator_metadata (e.g. "REF_AREA", "SEX")'}, 'provenance_mode': {'enum': ['concise', 'detailed'], 'type': 'string', 'description': "Provenance verbosity: 'concise' (default â\x80\x94 source, url, vintage, retrieval date, citation, license) or 'detailed' (full canonical block with dataset, dimension key and notices)"}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['dataflow', 'dimension', 'codelist', 'total_codes', 'showing', 'offset', 'values', 'has_more', 'provenance', 'attribution'], 'properties': {'offset': {'type': 'number'}, 'values': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name'], 'properties': {'id': {'type': 'string'}, 'name': {'type': ['string', 'null']}}, 'additionalProperties': False}}, 'showing': {'type': 'number'}, 'codelist': {'type': 'string'}, 'dataflow': {'type': 'string'}, 'has_more': {'type': 'boolean'}, 'dimension': {'type': 'string'}, 'provenance': {'anyOf': [{'type': 'object', 'required': ['source', 'source_url', 'data_vintage', 'retrieved_at', 'retrieval', 'citation', 'license'], 'properties': {'source': {'type': 'string'}, 'license': {'type': ['string', 'null']}, 'citation': {'type': 'string'}, 'retrieval': {'anyOf': [{'type': 'object', 'required': ['requests', 'attempts', 'anomalies', 'unstable'], 'properties': {'attempts': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'requests': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'unstable': {'type': 'boolean'}, 'anomalies': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'count'], 'properties': {'kind': {'enum': ['timeout', 'network', 'http_4xx', 'http_5xx', 'rate_limited', 'malformed_body'], 'type': 'string'}, 'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}, 'additionalProperties': False}}}, 'additionalProperties': False}, {'type': 'null'}]}, 'source_url': {'type': 'string'}, 'data_vintage': {'type': ['string', 'null']}, 'retrieved_at': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['contract_version', 'source', 'dataset', 'dimension_key', 'data_vintage', 'retrieved_at', 'source_url', 'api_version', 'license', 'citation', 'notices', 'derived', 'derivation_note', 'served_from_cache', 'retrieval', 'field_sources'], 'properties': {'source': {'type': 'object', 'required': ['name', 'agency', 'database', 'endpoint'], 'properties': {'name': {'type': 'string'}, 'agency': {'type': ['string', 'null']}, 'database': {'type': ['string', 'null']}, 'endpoint': {'type': ['string', 'null']}}, 'additionalProperties': False}, 'dataset': {'type': 'object', 'required': ['id', 'version', 'name'], 'properties': {'id': {'type': ['string', 'null']}, 'name': {'type': ['string', 'null']}, 'version': {'type': ['string', 'null']}}, 'additionalProperties': False}, 'derived': {'type': 'boolean'}, 'license': {'type': 'object', 'required': ['id', 'name', 'url', 'terms_url', 'verified_at'], 'properties': {'id': {'type': ['string', 'null']}, 'url': {'type': ['string', 'null']}, 'name': {'type': ['string', 'null']}, 'terms_url': {'type': ['string', 'null']}, 'verified_at': {'type': ['string', 'null']}}, 'additionalProperties': False}, 'notices': {'type': 'array', 'items': {'type': 'string'}}, 'citation': {'type': 'string'}, 'retrieval': {'anyOf': [{'type': 'object', 'required': ['requests', 'attempts', 'anomalies', 'unstable'], 'properties': {'attempts': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'requests': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'unstable': {'type': 'boolean'}, 'anomalies': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'count'], 'properties': {'kind': {'enum': ['timeout', 'network', 'http_4xx', 'http_5xx', 'rate_limited', 'malformed_body'], 'type': 'string'}, 'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}, 'additionalProperties': False}}}, 'additionalProperties': False}, {'type': 'null'}]}, 'source_url': {'type': 'string'}, 'api_version': {'type': ['string', 'null']}, 'data_vintage': {'type': ['string', 'null']}, 'retrieved_at': {'type': 'string'}, 'dimension_key': {'anyOf': [{'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}, {'type': 'null'}]}, 'field_sources': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'required': ['fields', 'source_url', 'dataset_id', 'data_vintage', 'retrieved_at'], 'properties': {'fields': {'type': 'array', 'items': {'type': 'string'}, 'minItems': 1}, 'dataset_id': {'type': ['string', 'null']}, 'source_url': {'type': 'string'}, 'data_vintage': {'type': ['string', 'null']}, 'retrieved_at': {'type': ['string', 'null']}}, 'additionalProperties': False}}, {'type': 'null'}]}, 'derivation_note': {'type': ['string', 'null']}, 'contract_version': {'type': 'string', 'const': '1.1'}, 'served_from_cache': {'type': ['boolean', 'null']}}, 'additionalProperties': False}], 'description': 'Provenance block (contract v1.1). concise (default): source, source_url, data_vintage, retrieved_at, retrieval, citation, license; detailed: the full canonical block (dataset, dimension_key, notices, served_from_cache, ...). retrieval is the origin diagnostic of this call â\x80\x94 requests made to ILOSTAT, attempts including retries, anomalies overcome (timeout, network, rate_limited, http_5xx, http_4xx, malformed_body) and unstable (true when anything had to be retried: treat the figures as obtained with difficulty); null when nothing was fetched from ILOSTAT (catalogue or cached answer)'}, 'attribution': {'type': 'array', 'items': {'type': 'string'}}, 'next_offset': {'type': 'number'}, 'total_codes': {'type': 'number'}}, 'additionalProperties': {}}
ilo_search_indicators
Search ILOSTAT indicators
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.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Maximum results (default 20)'}, 'query': {'type': 'string', 'minLength': 1, 'description': 'Keywords, matched against dataflow name and id (AND between terms)'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Results to skip, for pagination (default 0)'}, 'provenance_mode': {'enum': ['concise', 'detailed'], 'type': 'string', 'description': "Provenance verbosity: 'concise' (default â\x80\x94 source, url, vintage, retrieval date, citation, license) or 'detailed' (full canonical block with dataset, dimension key and notices)"}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['total_matches', 'showing', 'offset', 'indicators', 'has_more', 'provenance', 'attribution'], 'properties': {'hint': {'type': 'string'}, 'offset': {'type': 'number'}, 'showing': {'type': 'number'}, 'has_more': {'type': 'boolean'}, 'indicators': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'version'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'version': {'type': 'string'}}, 'additionalProperties': False}}, 'provenance': {'anyOf': [{'type': 'object', 'required': ['source', 'source_url', 'data_vintage', 'retrieved_at', 'retrieval', 'citation', 'license'], 'properties': {'source': {'type': 'string'}, 'license': {'type': ['string', 'null']}, 'citation': {'type': 'string'}, 'retrieval': {'anyOf': [{'type': 'object', 'required': ['requests', 'attempts', 'anomalies', 'unstable'], 'properties': {'attempts': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'requests': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'unstable': {'type': 'boolean'}, 'anomalies': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'count'], 'properties': {'kind': {'enum': ['timeout', 'network', 'http_4xx', 'http_5xx', 'rate_limited', 'malformed_body'], 'type': 'string'}, 'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}, 'additionalProperties': False}}}, 'additionalProperties': False}, {'type': 'null'}]}, 'source_url': {'type': 'string'}, 'data_vintage': {'type': ['string', 'null']}, 'retrieved_at': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['contract_version', 'source', 'dataset', 'dimension_key', 'data_vintage', 'retrieved_at', 'source_url', 'api_version', 'license', 'citation', 'notices', 'derived', 'derivation_note', 'served_from_cache', 'retrieval', 'field_sources'], 'properties': {'source': {'type': 'object', 'required': ['name', 'agency', 'database', 'endpoint'], 'properties': {'name': {'type': 'string'}, 'agency': {'type': ['string', 'null']}, 'database': {'type': ['string', 'null']}, 'endpoint': {'type': ['string', 'null']}}, 'additionalProperties': False}, 'dataset': {'type': 'object', 'required': ['id', 'version', 'name'], 'properties': {'id': {'type': ['string', 'null']}, 'name': {'type': ['string', 'null']}, 'version': {'type': ['string', 'null']}}, 'additionalProperties': False}, 'derived': {'type': 'boolean'}, 'license': {'type': 'object', 'required': ['id', 'name', 'url', 'terms_url', 'verified_at'], 'properties': {'id': {'type': ['string', 'null']}, 'url': {'type': ['string', 'null']}, 'name': {'type': ['string', 'null']}, 'terms_url': {'type': ['string', 'null']}, 'verified_at': {'type': ['string', 'null']}}, 'additionalProperties': False}, 'notices': {'type': 'array', 'items': {'type': 'string'}}, 'citation': {'type': 'string'}, 'retrieval': {'anyOf': [{'type': 'object', 'required': ['requests', 'attempts', 'anomalies', 'unstable'], 'properties': {'attempts': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'requests': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'unstable': {'type': 'boolean'}, 'anomalies': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'count'], 'properties': {'kind': {'enum': ['timeout', 'network', 'http_4xx', 'http_5xx', 'rate_limited', 'malformed_body'], 'type': 'string'}, 'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}, 'additionalProperties': False}}}, 'additionalProperties': False}, {'type': 'null'}]}, 'source_url': {'type': 'string'}, 'api_version': {'type': ['string', 'null']}, 'data_vintage': {'type': ['string', 'null']}, 'retrieved_at': {'type': 'string'}, 'dimension_key': {'anyOf': [{'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}, {'type': 'null'}]}, 'field_sources': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'required': ['fields', 'source_url', 'dataset_id', 'data_vintage', 'retrieved_at'], 'properties': {'fields': {'type': 'array', 'items': {'type': 'string'}, 'minItems': 1}, 'dataset_id': {'type': ['string', 'null']}, 'source_url': {'type': 'string'}, 'data_vintage': {'type': ['string', 'null']}, 'retrieved_at': {'type': ['string', 'null']}}, 'additionalProperties': False}}, {'type': 'null'}]}, 'derivation_note': {'type': ['string', 'null']}, 'contract_version': {'type': 'string', 'const': '1.1'}, 'served_from_cache': {'type': ['boolean', 'null']}}, 'additionalProperties': False}], 'description': 'Provenance block (contract v1.1). concise (default): source, source_url, data_vintage, retrieved_at, retrieval, citation, license; detailed: the full canonical block (dataset, dimension_key, notices, served_from_cache, ...). retrieval is the origin diagnostic of this call â\x80\x94 requests made to ILOSTAT, attempts including retries, anomalies overcome (timeout, network, rate_limited, http_5xx, http_4xx, malformed_body) and unstable (true when anything had to be retried: treat the figures as obtained with difficulty); null when nothing was fetched from ILOSTAT (catalogue or cached answer)'}, 'attribution': {'type': 'array', 'items': {'type': 'string'}}, 'next_offset': {'type': 'number'}, 'total_matches': {'type': 'number'}, 'vocabulary_notes': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': {}}
search
Deep Research Search
Searches 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.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query'], 'properties': {'query': {'type': 'string', 'description': 'Search terms, natural language or keywords (accents and case are ignored)'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['results', 'provenance', 'attribution'], 'properties': {'results': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'url'], 'properties': {'id': {'type': 'string', 'minLength': 1, 'description': 'Unique identifier of the document on this server; what `fetch` takes'}, 'url': {'type': 'string', 'description': "Canonical public URL of the document â\x80\x94 ChatGPT's citation depends on it"}, 'title': {'type': 'string', 'description': 'Human-readable title of the document'}}, 'additionalProperties': False}, 'description': 'Matching documents, in relevance order'}, 'provenance': {'anyOf': [{'type': 'object', 'required': ['source', 'source_url', 'data_vintage', 'retrieved_at', 'retrieval', 'citation', 'license'], 'properties': {'source': {'type': 'string'}, 'license': {'type': ['string', 'null']}, 'citation': {'type': 'string'}, 'retrieval': {'anyOf': [{'type': 'object', 'required': ['requests', 'attempts', 'anomalies', 'unstable'], 'properties': {'attempts': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'requests': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'unstable': {'type': 'boolean'}, 'anomalies': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'count'], 'properties': {'kind': {'enum': ['timeout', 'network', 'http_4xx', 'http_5xx', 'rate_limited', 'malformed_body'], 'type': 'string'}, 'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}, 'additionalProperties': False}}}, 'additionalProperties': False}, {'type': 'null'}]}, 'source_url': {'type': 'string'}, 'data_vintage': {'type': ['string', 'null']}, 'retrieved_at': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['contract_version', 'source', 'dataset', 'dimension_key', 'data_vintage', 'retrieved_at', 'source_url', 'api_version', 'license', 'citation', 'notices', 'derived', 'derivation_note', 'served_from_cache', 'retrieval', 'field_sources'], 'properties': {'source': {'type': 'object', 'required': ['name', 'agency', 'database', 'endpoint'], 'properties': {'name': {'type': 'string'}, 'agency': {'type': ['string', 'null']}, 'database': {'type': ['string', 'null']}, 'endpoint': {'type': ['string', 'null']}}, 'additionalProperties': False}, 'dataset': {'type': 'object', 'required': ['id', 'version', 'name'], 'properties': {'id': {'type': ['string', 'null']}, 'name': {'type': ['string', 'null']}, 'version': {'type': ['string', 'null']}}, 'additionalProperties': False}, 'derived': {'type': 'boolean'}, 'license': {'type': 'object', 'required': ['id', 'name', 'url', 'terms_url', 'verified_at'], 'properties': {'id': {'type': ['string', 'null']}, 'url': {'type': ['string', 'null']}, 'name': {'type': ['string', 'null']}, 'terms_url': {'type': ['string', 'null']}, 'verified_at': {'type': ['string', 'null']}}, 'additionalProperties': False}, 'notices': {'type': 'array', 'items': {'type': 'string'}}, 'citation': {'type': 'string'}, 'retrieval': {'anyOf': [{'type': 'object', 'required': ['requests', 'attempts', 'anomalies', 'unstable'], 'properties': {'attempts': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'requests': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'unstable': {'type': 'boolean'}, 'anomalies': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'count'], 'properties': {'kind': {'enum': ['timeout', 'network', 'http_4xx', 'http_5xx', 'rate_limited', 'malformed_body'], 'type': 'string'}, 'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}, 'additionalProperties': False}}}, 'additionalProperties': False}, {'type': 'null'}]}, 'source_url': {'type': 'string'}, 'api_version': {'type': ['string', 'null']}, 'data_vintage': {'type': ['string', 'null']}, 'retrieved_at': {'type': 'string'}, 'dimension_key': {'anyOf': [{'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}, {'type': 'null'}]}, 'field_sources': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'required': ['fields', 'source_url', 'dataset_id', 'data_vintage', 'retrieved_at'], 'properties': {'fields': {'type': 'array', 'items': {'type': 'string'}, 'minItems': 1}, 'dataset_id': {'type': ['string', 'null']}, 'source_url': {'type': 'string'}, 'data_vintage': {'type': ['string', 'null']}, 'retrieved_at': {'type': ['string', 'null']}}, 'additionalProperties': False}}, {'type': 'null'}]}, 'derivation_note': {'type': ['string', 'null']}, 'contract_version': {'type': 'string', 'const': '1.1'}, 'served_from_cache': {'type': ['boolean', 'null']}}, 'additionalProperties': False}], 'description': 'Provenance block (contract v1.1). concise (default): source, source_url, data_vintage, retrieved_at, retrieval, citation, license; detailed: the full canonical block (dataset, dimension_key, notices, served_from_cache, ...). retrieval is the origin diagnostic of this call â\x80\x94 requests made to ILOSTAT, attempts including retries, anomalies overcome (timeout, network, rate_limited, http_5xx, http_4xx, malformed_body) and unstable (true when anything had to be retried: treat the figures as obtained with difficulty); null when nothing was fetched from ILOSTAT (catalogue or cached answer)'}, 'attribution': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}
Modifié
fetch
29 September 2026 02:58
Modifié
search
29 September 2026 02:58
Modifié
ilo_get_data
29 September 2026 02:58
Modifié
ilo_list_dimension_values
29 September 2026 02:58
Modifié
ilo_get_indicator_metadata
29 September 2026 02:58
Modifié
ilo_search_indicators
29 September 2026 02:58
Ajouté
fetch
17 September 2026 12:52
Ajouté
search
17 September 2026 12:52
Ajouté
ilo_get_data
17 September 2026 12:52
Ajouté
ilo_list_dimension_values
17 September 2026 12:52
Ajouté
ilo_get_indicator_metadata
17 September 2026 12:52
Ajouté
ilo_search_indicators
17 September 2026 12:52