Skip to main content
Glama

ilostat-mcp-server

Search ILOSTAT indicators

ilostat_search_indicators
Read-onlyIdempotent

Search ILOSTAT's catalog of labour-statistics indicators by plain-language terms and filters. Each hit is one indicator with its datasets — one per available frequency (annual, quarterly, monthly) — plus breakdowns, coverage years, number of reference areas, source database, and last update; pass a dataset ID to ilostat_describe_indicator for its units and breakdown codes, then to ilostat_query_indicator or ilostat_compare_geographies for values. Every search term must match a word or word prefix in the indicator's label, subject, database, breakdown names, code, or definition; a term that matches no word or word prefix anywhere in the catalog matches the words sharing its stem instead (informality finds informal, unionization finds union, disabled finds disability), and the notice names it. female, women, male, and men (or their plurals) also match every indicator broken down by sex, and the notice names the sex filter that selects those values in ilostat_query_indicator. British and American spellings (labour/labor) match alike. The measure filter lists every indicator of one measured quantity, as ilostat_describe_indicator's related indicators count them. Facet counts reflect all applied filters.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "ilostat_search_indicators"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNoHits per page, at most 50; a larger value, up to 1,000, is applied as 50 and the notice says so.
queryNoPlain-language terms, e.g. "youth unemployment" or "informal employment rate". Case, accents, and punctuation are ignored, labor matches labour, and a trailing plural s is tolerated; a term no catalog word starts with is matched by its stem (-ity, -ization, -ive, -ment, -ing, -ed, -ly, a plural s, and a silent e dropped, -ies read as y, -ble and -bly read as -bil). Omit to browse by filters (results then order by indicator code).
cursorNoOpaque continuation token: the previous page's next_cursor, passed unchanged.
measureNoMeasure code, exactly as ilostat_describe_indicator's measure.code gives it (e.g. EMP_TEMP_NB); case-insensitive. Keeps every indicator measuring that quantity, under any breakdown.
subjectNoSubject code, e.g. LUU (unemployment and labour underutilization); case-insensitive. ilostat_list_reference topic subjects lists them.
databaseNoSource database code, e.g. LFS or ILOEST (the ILO modelled estimates); case-insensitive. ilostat_list_reference topic databases lists them.
breakdownNoClassification type the indicator is broken down by, e.g. AGE, ECO, GEO, SEX; case-insensitive. ilostat_list_reference topic classification_types lists them.
frequencyNoKeep only datasets of this frequency: A annual, Q quarterly, M monthly. Narrows each hit's datasets; an indicator with none left drops out.
aggregates_onlyNoKeep only datasets carrying World, regional, or income-group rows, dropping indicators with none.

Output Schema

NameRequiredDescriptionDefault
capNoThe limit applied to this page.
hitsNoThis page of hits. With a query: tier, then more reference areas first, then code. Without: by code.
errorNoPresent when the call failed. Absent on success.
shownNoHits returned on this page.
totalNoIndicators matched after all filters.
facetsNoCounts over the fully filtered match set, not just this page.
noticeNoThat a limit past the page cap was applied as the cap, why the query was browsed by filters alone, which terms were matched by stem and as which catalog words (check those hits are on topic), the sex filter a sex word names, how to widen a search that matched nothing, that the cursor starts past the last match, and how to reach the remaining pages — whichever apply, joined.
truncatedNoTrue when more hits remain beyond this page.
next_cursorNoPass as cursor to get the next page; absent on the last page.
catalog_as_ofNoISO timestamp the searched catalog was last confirmed current.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / query / description
      Previous value: -"Plain-language terms, e.g. \"youth unemployment\" or \"informal employment rate\". Case, accents, and punctuation are ignored, labor matches labour, and a trailing plural s is tolerated; a term no catalog word starts with is matched by its stem (-ity, -ization, -ive, -ment, -ing, -ed, -ly, and a plural s dropped, -ies read as y). Omit to browse by filters (results then order by indicator code)."New value: +"Plain-language terms, e.g. \"youth unemployment\" or \"informal employment rate\". Case, accents, and punctuation are ignored, labor matches labour, and a trailing plural s is tolerated; a term no catalog word starts with is matched by its stem (-ity, -ization, -ive, -ment, -ing, -ed, -ly, a plural s, and a silent e dropped, -ies read as y, -ble and -bly read as -bil). Omit to browse by filters (results then order by indicator code)."
    • changedOutput schema / properties / hits / items / properties / match_scope / description
      Previous value: -"Where every term matched: label (tier 1), label plus subject, database, breakdowns, and code (tier 2), or the definition text too (tier 3). Absent when browsing without a query."New value: +"Where every term matched (a sex word beside other terms is left out): label (tier 1), label plus subject, database, breakdowns, and code (tier 2), or the definition text too (tier 3). Absent when browsing without a query."
    • changedOutput schema / properties / notice / description
      Previous value: -"That a limit past the page cap was applied as the cap, why the query was browsed by filters alone, which terms were matched by stem and as which catalog words (check those hits are on topic), how to widen a search that matched nothing, that the cursor starts past the last match, and how to reach the remaining pages — whichever apply, joined."New value: +"That a limit past the page cap was applied as the cap, why the query was browsed by filters alone, which terms were matched by stem and as which catalog words (check those hits are on topic), the sex filter a sex word names, how to widen a search that matched nothing, that the cursor starts past the last match, and how to reach the remaining pages — whichever apply, joined."
  2. Changed6 schema fields changed
    • changedInput schema / properties / limit / description
      Previous value: -"Hits per page (1–50)."New value: +"Hits per page, at most 50; a larger value, up to 1,000, is applied as 50 and the notice says so."
    • changedInput schema / properties / limit / maximum
      Previous value: -50New value: +1000
    • addedInput schema / properties / measure
      Added value: +{
      +  "description": "Measure code, exactly as ilostat_describe_indicator's measure.code gives it (e.g. EMP_TEMP_NB); case-insensitive. Keeps every indicator measuring that quantity, under any breakdown.",
      +  "maxLength": 32,
      +  "type": "string"
      +}
    • changedInput schema / properties / query / description
      Previous value: -"Plain-language terms, e.g. \"youth unemployment\" or \"informal employment rate\". Case, accents, and punctuation are ignored, labor matches labour, and a trailing plural s is tolerated. Omit to browse by filters (results then order by indicator code)."New value: +"Plain-language terms, e.g. \"youth unemployment\" or \"informal employment rate\". Case, accents, and punctuation are ignored, labor matches labour, and a trailing plural s is tolerated; a term no catalog word starts with is matched by its stem (-ity, -ization, -ive, -ment, -ing, -ed, -ly, and a plural s dropped, -ies read as y). Omit to browse by filters (results then order by indicator code)."
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `unknown_filter_code`: database, subject, or breakdown is not an ILOSTAT code. `invalid_cursor`: cursor does not decode. `catalog_unavailable`: No catalog snapshot has loaded and the load failed, or the first load has not finished within 30 s. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `unknown_filter_code`: database, subject, breakdown, or measure is not an ILOSTAT code. `invalid_cursor`: cursor does not decode. `catalog_unavailable`: No catalog snapshot has loaded and the load failed, or the first load has not finished within 30 s. Other values are possible when a failure originates below the handler."
    • changedOutput schema / properties / notice / description
      Previous value: -"Why the query was browsed by filters alone, how to widen a search that matched nothing, that the cursor starts past the last match, and how to reach the remaining pages — whichever apply, joined."New value: +"That a limit past the page cap was applied as the cap, why the query was browsed by filters alone, which terms were matched by stem and as which catalog words (check those hits are on topic), how to widen a search that matched nothing, that the cursor starts past the last match, and how to reach the remaining pages — whichever apply, joined."
  3. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, closed-world behavior, and the description adds genuine operational context: stem-fallback matching, sex-term special casing, British/American spelling equivalence, facet counts reflecting all applied filters, and notices naming unmatched terms. Some of this (stem suffixes, plural handling) restates the query parameter's schema text, which slightly dilutes the added value beyond structured fields.

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

Conciseness3/5

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

Purpose and workflow are front-loaded correctly, but the body is one very long, clause-chained paragraph, and the stem-matching examples (informality/informal, unionization/union, disabled/disability) duplicate detail already spelled out in the query parameter schema. Those sentences don't earn their place twice.

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 9-parameter, zero-required search tool with an output schema and full annotation coverage, the description supplies everything an agent needs: what a hit contains, how terms are matched, how filters interact, and which sibling to call next. Remaining gaps (pagination mechanics, rate limits) are covered by the cursor parameter and annotations.

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 still adds cross-tool meaning the schema lacks, notably that the measure filter returns every indicator of one measured quantity 'as ilostat_describe_indicator's related indicators count them.' It does not add much for limit/cursor/subject/database/breakdown beyond what the schema already says.

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 opening sentence names a specific verb ('Search') and resource ('ILOSTAT's catalog of labour-statistics indicators') and immediately delimits the result shape (one hit = one indicator with its datasets). It then routes to ilostat_describe_indicator, ilostat_query_indicator, and ilostat_compare_geographies, so an agent can place it precisely among its seven siblings 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?

The description gives an explicit pipeline: search here, then pass a dataset ID to ilostat_describe_indicator for units/breakdown codes, then to ilostat_query_indicator or ilostat_compare_geographies for values. It also states the browse-mode condition ('Omit to browse by filters') in the query parameter, so when-to-use and when-to-do-something-else are both covered.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.