Skip to main content
Glama

Browse Eurostat Theme Hierarchy

eurostat_browse_themes
Read-onlyIdempotent

Navigate the Eurostat theme tree. Without theme_code returns the top-level theme folders (Economy, Population, Transport, etc.) — the practical starting points. With a theme_code returns its immediate children: subtheme folders and datasets in that branch. Use this for structured discovery when you know the domain but not the dataset code, or to drill down from a broad topic to a specific dataset. Pair with eurostat_search_datasets for keyword-based discovery. The tree is the dissemination table of contents plus the Comext host's DS-* collections: detailed trade under ext_go_detail (inside ext_go, "International trade in goods") and PRODCOM under prom (inside icts, "Industry, trade and services"). A collection on neither, such as the legacy PRODCOM DS-056120, is not disseminated and appears nowhere in the tree.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
theme_codeNoFolder code to expand (e.g., "economy", "reg"). Omit to list the top-level theme folders.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
errorNoPresent when the call failed. Absent on success.
itemsNoImmediate children of the requested theme, or the root themes if theme_code was omitted.
nextStepNoSuggested next action based on these results. Populated when there is a clear follow-up call.
itemCountNoNumber of items returned in this level.
themeCodeNoFolder code that was browsed, or omitted for root.
parentPathNoBreadcrumb from root to the requested theme (e.g., ["Database by themes", "Economy and finance"]). Empty when browsing root.
otherPlacementsNoBreadcrumbs of the other branches that file this same theme_code. Eurostat lists a few folder codes in more than one branch; the items above come from the first one the catalogue lists, which never has fewer children than the branches named here but can list different ones. theme_code takes a bare code, so those branches cannot be addressed directly — browse down to them from the root instead. Omitted when the code has a single placement — the normal case.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `not_found`: The provided theme_code does not exist as a folder in the TOC. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: The provided theme_code does not exist in the TOC. `not_a_folder`: The provided theme_code identifies a dataset or table entry instead of a folder. Other values are possible when a failure originates below the handler."
    • changedOutput schema / properties / error / properties / data / properties / reason / examples
      Previous value: -[
      -  "not_found"
      -]New value: +[
      +  "not_found",
      +  "not_a_folder"
      +]
  2. Changed6 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedInput schema / additionalProperties
      Added value: +false
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "items",
      +      "parentPath",
      +      "itemCount"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / error
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "Present when the call failed. Absent on success.",
      +  "properties": {
      +    "code": {
      +      "description": "JSON-RPC error code for this failure.",
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "data": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "reason": {
      +          "description": "Machine-readable failure mode. Declared by this tool: `not_found`: The provided theme_code does not exist as a folder in the TOC. Other values are possible when a failure originates below the handler.",
      +          "examples": [
      +            "not_found"
      +          ],
      +          "type": "string"
      +        },
      +        "recovery": {
      +          "additionalProperties": {},
      +          "description": "Actionable next step for the caller.",
      +          "properties": {
      +            "hint": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "hint"
      +          ],
      +          "type": "object"
      +        },
      +        "retryable": {
      +          "description": "Whether retrying may succeed.",
      +          "type": "boolean"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "message": {
      +      "description": "Human-readable description of what went wrong.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "code",
      +    "message"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / required
      Removed value: -[
      -  "items",
      -  "parentPath",
      -  "itemCount"
      -]
  3. Changed1 schema field changed
    • addedOutput schema / properties / otherPlacements
      Added value: +{
      +  "description": "Breadcrumbs of the other branches that file this same theme_code. Eurostat lists a few folder codes in more than one branch; the items above come from the first one the catalogue lists, which never has fewer children than the branches named here but can list different ones. theme_code takes a bare code, so those branches cannot be addressed directly — browse down to them from the root instead. Omitted when the code has a single placement — the normal case.",
      +  "items": {
      +    "description": "Breadcrumb from root to one other folder carrying the requested code.",
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  "type": "array"
      +}
  4. Changed2 schema fields changed
    • changedInput schema / properties / theme_code / description
      Previous value: -"Folder code to expand (e.g., \"econ\", \"reg\"). Omit to list the top-level theme folders."New value: +"Folder code to expand (e.g., \"economy\", \"reg\"). Omit to list the top-level theme folders."
    • changedOutput schema / properties / parentPath / description
      Previous value: -"Breadcrumb from root to the requested theme (e.g., [\"Economy and finance\", \"National accounts\"]). Empty when browsing root."New value: +"Breadcrumb from root to the requested theme (e.g., [\"Database by themes\", \"Economy and finance\"]). Empty when browsing root."
  5. Changed3 schema fields changed
    • changedInput schema / properties / theme_code / description
      Previous value: -"Folder code to expand (e.g., \"econ\", \"reg\"). Omit to list the 11 top-level theme folders."New value: +"Folder code to expand (e.g., \"econ\", \"reg\"). Omit to list the top-level theme folders."
    • changedOutput schema / properties / items / description
      Previous value: -"Immediate children of the requested theme, or the 11 root themes if theme_code was omitted."New value: +"Immediate children of the requested theme, or the root themes if theme_code was omitted."
    • addedOutput schema / properties / nextStep
      Added value: +{
      +  "description": "Suggested next action based on these results. Populated when there is a clear follow-up call.",
      +  "type": "string"
      +}
  6. Changed3 schema fields changed
    • addedOutput schema / properties / itemCount
      Added value: +{
      +  "description": "Number of items returned in this level.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / themeCode
      Added value: +{
      +  "description": "Folder code that was browsed, or omitted for root.",
      +  "type": "string"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "items",
      -  "parentPath"
      -]New value: +[
      +  "items",
      +  "parentPath",
      +  "itemCount"
      +]
  7. First observed

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint true, so the safety and repeatability profile is covered. The description adds meaningful behavioral context beyond those annotations: it specifies that without theme_code the tool returns top-level theme folders, with theme_code it returns immediate children, and that the tree is a combination of the dissemination table of contents plus special Comext collections. It does not contradict 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 front-loaded with the core navigation behavior and then layers in usage guidance, alternative tools, and important caveats. Every sentence earns its place: the special-collection detail explains why some datasets may not appear in the tree, and the explicit sibling pairing prevents agent confusion. It is dense but not rambling.

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 read-only navigation tool with one optional parameter and an output schema, the description is complete. It explains the two invocation modes, gives examples, names the sibling tool for alternative discovery, and clarifies coverage limitations that could otherwise cause an agent to assume a missing dataset is an error. The annotations cover the safe, idempotent nature of the operation.

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 description coverage is 100%, so the parameter is already documented as a folder code to expand with examples like 'economy' and 'reg'. The description adds value by explaining the behavioral difference between omitting theme_code and providing it, and by clarifying that the result includes both subtheme folders and datasets in that branch. This pushes it slightly above the baseline for high schema coverage.

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: 'Navigate the Eurostat theme tree.' It clearly distinguishes the tool from siblings by stating this is for structured discovery when you know the domain but not the dataset code, and explicitly contrasts it with eurostat_search_datasets for keyword-based discovery. It also explains the two modes (top-level without theme_code, children with theme_code), leaving no ambiguity about what the tool does.

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 explicit instructions: use this tool for structured discovery or drilling down from a broad topic, and pair it with eurostat_search_datasets when keyword-driven discovery is more appropriate. It also covers edge cases by explaining which collections appear in the tree and which do not, such as the legacy PRODCOM DS-056120 not being disseminated.

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.