# EU Trade Explorer (remote · mcp.tradedashboard.eu)

EU customs-trade & industrial-production statistics (Eurostat Comext/PRODCOM)

- Trust score: 66/100 (medium)
- Change this week: +6
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `mcp.tradedashboard.eu`: 66/100 (this document), [markdown](https://verifymcp.io/servers/eu-tradedashboard-eu-trade-explorer/mcp.md), [page](https://verifymcp.io/servers/eu-tradedashboard-eu-trade-explorer/mcp)

## Channel facts

- Endpoint: `https://mcp.tradedashboard.eu/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.1`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 66/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 37 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 52/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 10375 tokens (~280/item across 37 items; 37 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (5% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http eu-tradedashboard-eu-trade-explorer https://mcp.tradedashboard.eu/mcp
```

### Codex

```toml
[mcp_servers.eu-tradedashboard-eu-trade-explorer]
url = "https://mcp.tradedashboard.eu/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "eu-tradedashboard-eu-trade-explorer": {
      "type": "remote",
      "url": "https://mcp.tradedashboard.eu/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add eu-tradedashboard-eu-trade-explorer --url https://mcp.tradedashboard.eu/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  eu-tradedashboard-eu-trade-explorer:
    url: "https://mcp.tradedashboard.eu/mcp"
```

### Other

```json
{
  "mcpServers": {
    "eu-tradedashboard-eu-trade-explorer": {
      "type": "http",
      "url": "https://mcp.tradedashboard.eu/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 66, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-01 (score 65, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 64, +2)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 62, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 62, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 61, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes. Other categories moved too: Schema Quality & AI Usability fell 1.

### 2026-07-27 (score 60, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 60)

First indexed and scored.

## MCP tools (37)

### `guidelines_for_a_short_report` (~83 tokens)

Read this first for a quick report. Returns the short-report
    workflow: resolve a product code, then call `get_full_report` for the
    five most important report sections in one shot -- enough for a quick,
    simple report. Also covers access/quota, the shared `query` object and
    the `compact` option.

Output parameters:

- `result` (string)

### `guidelines_for_a_long_report` (~89 tokens)

Read this first for an in-depth report. Returns the long-report
    workflow: which of the 35+ tools to combine per angle (partners,
    concentration, volatility & shocks, autonomy), the dashboard menu/tab
    structure for pointing readers at views, and the methodological notes
    needed to interpret and cite figures correctly. Call this before
    guessing at tool use.

Output parameters:

- `result` (string)

### `get_countries` (~86 tokens)

Reference data for reporters/partners: selectable EU/Euro-area/member
    states, named partner presets, predefined reporter/partner groups, and
    per-language country-name translations. Use this to find valid values
    for the `reporter`, `partner_set`, `partners` and `reporter_members`
    fields used throughout the other tools' `query` argument.

### `get_chapters` (~112 tokens)

List all top-level Combined Nomenclature chapters (2-digit codes).

    Bootstraps browsing the nomenclature top-down; drill into a chapter with
    `get_subtree`.

Input parameters:

- `lang` (string): Language for translated labels in the response. One of: bg, cs, da, de, el, en, es, et, fi, fr, ga, hr, hu, it, lt, lv, mt, nl, pl, pt, ro, sk, sl, sv.

### `get_subtree` (~174 tokens)

Return the Combined Nomenclature sub-tree rooted at `code` (its
    children, and their children, ...), each with a `code` and a `text`
    description. Use this to see whether a heading you're about to use (e.g.
    as `query.product` elsewhere) is actually a clean match, or bundles
    several distinct sub-products together.

Input parameters:

- `code` (string, required): Combined Nomenclature code to expand, e.g. '7010'.
- `lang` (string): Language for translated labels in the response. One of: bg, cs, da, de, el, en, es, et, fi, fr, ga, hr, hu, it, lt, lv, mt, nl, pl, pt, ro, sk, sl, sv.

### `validate_code` (~201 tokens)

Validate and describe one or more Combined Nomenclature codes.

    For a single code, returns the full hierarchy of description levels
    (`levels`), the resolved `product_name`, and `has_subcodes`. For a
    comma-separated list, returns `{"results": [...]}` with one entry per
    code (each either a success dict or an `{"code", "error"}` pair).

Input parameters:

- `code` (string, required): One CN code, or a comma-separated list of up to 50 codes (e.g. '73030010, 73030090'). The literal 'TOTAL' is also accepted.
- `lang` (string): Language for translated labels in the response. One of: bg, cs, da, de, el, en, es, et, fi, fr, ga, hr, hu, it, lt, lv, mt, nl, pl, pt, ro, sk, sl, sv.

### `search_codes` (~201 tokens)

Keyword/code search over the Combined Nomenclature (or PRODCOM).

    Returns ranked `{code, label, path}` candidates. Prefer
    `resolve_product_code` for a one-call keyword-or-code helper; use this
    directly if you specifically want the raw ranked candidate list.

Input parameters:

- `lang` (string): Language for translated labels in the response. One of: bg, cs, da, de, el, en, es, et, fi, fr, ga, hr, hu, it, lt, lv, mt, nl, pl, pt, ro, sk, sl, sv.
- `limit` (integer): Max number of candidates to return.
- `q` (string, required): Keyword or code fragment to search for.
- `source` (string): Nomenclature to search. A dotted PRODCOM code (e.g. '23.13') is auto-detected either way and reverse-mapped to CN codes.

### `get_data_range` (~82 tokens)

Return the period coverage (`data_min`/`data_max`, 'YYYY-MM') actually
    cached for the given product code(s) -- use before picking
    `period_start`/`period_end` so you don't request an empty window.

Input parameters:

- `products`: CN code(s) to check coverage for. Omit for the overall store range.

### `get_overview` (~222 tokens)

Headline figures: total import/export quantities, values and
    weighted-average prices per period, the trade balance, and a top-partner
    breakdown. The best first call for any new product/reporter slice.

Input parameters:

- `compact` (boolean): If true, condense long numeric time series (more than ~6 points -- typically monthly/quarterly windows or wide multi-partner/multi-period breakdowns) into summary statistics (first, last, min, max, m…
- `query` (required): The product/reporter/partner-set/period/frequency slice to query -- the same request body every tradedashboard.eu analytical endpoint takes. See its own field descriptions (product, reporter, partner…

### `get_partner_detail` (~239 tokens)

Per-partner import/export breakdown. For each flow, the top-N trading
    partners ranked both by quantity and by value (so you can compare
    volume-based vs. value-based rankings), each with its own quantity,
    value and price time series, plus an optional 'Other' bucket.

Input parameters:

- `compact` (boolean): If true, condense long numeric time series (more than ~6 points -- typically monthly/quarterly windows or wide multi-partner/multi-period breakdowns) into summary statistics (first, last, min, max, m…
- `query` (required): The product/reporter/partner-set/period/frequency slice to query -- the same request body every tradedashboard.eu analytical endpoint takes. See its own field descriptions (product, reporter, partner…

### `get_reporter_detail` (~240 tokens)

Per-EU-member-state import/export breakdown -- the reporter-side
    counterpart of `get_partner_detail`. Top-N member states (by quantity and
    by value) with their quantity, value and price series. Aggregate
    reporters (EU, Euro area, groups) are excluded from the ranking.

Input parameters:

- `compact` (boolean): If true, condense long numeric time series (more than ~6 points -- typically monthly/quarterly windows or wide multi-partner/multi-period breakdowns) into summary statistics (first, last, min, max, m…
- `query` (required): The product/reporter/partner-set/period/frequency slice to query -- the same request body every tradedashboard.eu analytical endpoint takes. See its own field descriptions (product, reporter, partner…

### `get_reporter_benchmark` (~315 tokens)

Every EU reporter ranked by value for one year -- the country-view
    counterpart of `get_reporter_detail`. Returns a single-year snapshot
    (every real EU member state's quantity, value and price per flow,
    ranked by value) plus a benchmark price time series: the EU-wide
    weighted average, the cross-reporter min/max envelope, and the
    selected reporter's own line when `query.reporter` is a single real
    member state. Use it to answer "how does this country compare to
    every other EU reporter?".

Input parameters:

- `compact` (boolean): If true, condense long numeric time series (more than ~6 points -- typically monthly/quarterly windows or wide multi-partner/multi-period breakdowns) into summary statistics (first, last, min, max, m…
- `query` (required): The product/reporter/partner-set/period/frequency slice to query -- the same request body every tradedashboard.eu analytical endpoint takes. See its own field descriptions (product, reporter, partner…
- `year`: Year for the cross-sectional snapshot. Defaults to the latest full year with data.

### `get_map_data` (~216 tokens)

Choropleth-ready aggregates: per-period totals (quantity, value,
    price) for imports and exports, keyed by GISCO country code on both the
    reporter and partner sides.

Input parameters:

- `compact` (boolean): If true, condense long numeric time series (more than ~6 points -- typically monthly/quarterly windows or wide multi-partner/multi-period breakdowns) into summary statistics (first, last, min, max, m…
- `query` (required): The product/reporter/partner-set/period/frequency slice to query -- the same request body every tradedashboard.eu analytical endpoint takes. See its own field descriptions (product, reporter, partner…

### `get_top_entities` (~184 tokens)

Just the ordered list of top entities for a slice -- no time series.
    A lightweight helper for populating entity pickers or quickly checking
    who the top partners/reporters are without pulling full series.

Input parameters:

- `entity_level` (string): Dimension to rank: 'partner' (trading partners) or 'reporter' (EU member states).
- `flow` (string): Trade flow to use.
- `n`: Number of top entities to return. Defaults to query.n_top when omitted.
- `query` (required): The product/reporter/partner-set/period/frequency slice to query -- the same request body every tradedashboard.eu analytical endpoint takes. See its own field descriptions (product, reporter, partner…

### `get_production_series` (~285 tokens)

EU27 and per-country PRODCOM production series: EU quantity, EU
    production unit value, and the same two per reporting country (all
    DS-059358 reporters, not just EU-27, since production data carries no
    trade columns). Country-level figures are heavily confidentiality
    -suppressed; suppressed/absent values come back as null, not zero. Use
    `query.prodcom_code` to pin a specific PRODCOM mapping when a CN code
    maps to several.

Input parameters:

- `compact` (boolean): If true, condense long numeric time series (more than ~6 points -- typically monthly/quarterly windows or wide multi-partner/multi-period breakdowns) into summary statistics (first, last, min, max, m…
- `query` (required): The product/reporter/partner-set/period/frequency slice to query -- the same request body every tradedashboard.eu analytical endpoint takes. See its own field descriptions (product, reporter, partner…

### `get_product_compare` (~257 tokens)

Sub-product comparison: for a single parent CN code, expands into its
    children (or, for a multi-code request, compares the entered codes
    directly) and returns per-subcode quantity/value/price series for both
    flows -- so each sub-product plots as its own line instead of being
    aggregated away. A leaf code with no children returns `leaf: true`.

Input parameters:

- `compact` (boolean): If true, condense long numeric time series (more than ~6 points -- typically monthly/quarterly windows or wide multi-partner/multi-period breakdowns) into summary statistics (first, last, min, max, m…
- `query` (required): The product/reporter/partner-set/period/frequency slice to query -- the same request body every tradedashboard.eu analytical endpoint takes. See its own field descriptions (product, reporter, partner…

### `get_concentration` (~335 tokens)

Herfindahl-Hirschman Index (HHI) of trade concentration across
    partners or member states, per period (0 = perfectly spread, 10000 = one
    entity holds the whole market), plus the top-8-by-value share breakdown
    (rest bundled as 'Others'). Higher HHI = more dependent on a handful of
    counterparties.

Input parameters:

- `compact` (boolean): If true, condense long numeric time series (more than ~6 points -- typically monthly/quarterly windows or wide multi-partner/multi-period breakdowns) into summary statistics (first, last, min, max, m…
- `entity_level` (string): Dimension to analyse. 'partner' -- how concentrated/volatile is the reporter's trade across its trading partners? 'reporter' -- how concentrated/volatile is a given partner's trade across EU member s…
- `partner_name`: Partner country name (English). Required when entity_level='reporter'.
- `query` (required): The product/reporter/partner-set/period/frequency slice to query -- the same request body every tradedashboard.eu analytical endpoint takes. See its own field descriptions (product, reporter, partner…

### `get_concentration_compare` (~241 tokens)

Partner-concentration (HHI) compared across sub-products: one HHI
    line per sub-product rather than per flow, to see which sub-products
    drive a parent code's overall concentration.

Input parameters:

- `compact` (boolean): If true, condense long numeric time series (more than ~6 points -- typically monthly/quarterly windows or wide multi-partner/multi-period breakdowns) into summary statistics (first, last, min, max, m…
- `n_subcodes` (integer): Max number of sub-products to plot as separate HHI lines.
- `query` (required): The product/reporter/partner-set/period/frequency slice to query -- the same request body every tradedashboard.eu analytical endpoint takes. See its own field descriptions (product, reporter, partner…

### `get_concentration_map` (~355 tokens)

Cross-sectional HHI per country for one year -- the choropleth
    counterpart of get_concentration. 'partner' entity_level = for every EU
    member state, HHI of its trade across partners; 'reporter' = for every
    partner, HHI of its trade across EU member states (subject to the
    Rotterdam/Antwerp entry-point distortion).

Input parameters:

- `compact` (boolean): If true, condense long numeric time series (more than ~6 points -- typically monthly/quarterly windows or wide multi-partner/multi-period breakdowns) into summary statistics (first, last, min, max, m…
- `entity_level` (string): Dimension to analyse. 'partner' -- how concentrated/volatile is the reporter's trade across its trading partners? 'reporter' -- how concentrated/volatile is a given partner's trade across EU member s…
- `partner_name`: Partner country name (English). Required when entity_level='reporter'.
- `query` (required): The product/reporter/partner-set/period/frequency slice to query -- the same request body every tradedashboard.eu analytical endpoint takes. See its own field descriptions (product, reporter, partner…
- `year`: Year for the snapshot. Defaults to the latest full year with data.

### `get_specialisation` (~280 tokens)

Intra-EU revealed symmetric comparative advantage (RSCA) per member
    state -- a Balassa index benchmarked against the EU instead of the
    world. Runs -1 (under-specialised) to +1 (strongly specialised), value
    -based and intra-EU only. Treat with caution: intra-EU flows are
    distorted by the Rotterdam/Antwerp quasi-transit effect.

Input parameters:

- `compact` (boolean): If true, condense long numeric time series (more than ~6 points -- typically monthly/quarterly windows or wide multi-partner/multi-period breakdowns) into summary statistics (first, last, min, max, m…
- `query` (required): The product/reporter/partner-set/period/frequency slice to query -- the same request body every tradedashboard.eu analytical endpoint takes. See its own field descriptions (product, reporter, partner…
- `year`: Year for the snapshot. Defaults to the latest full year with data.

### `get_production_concentration` (~276 tokens)

How concentrated production of a product is across all DS-059358
    reporting countries (PRODCOM; EU member states plus EFTA/candidate/other
    reporters -- not only the EU-27). HHI of PRODVAL across countries over
    time, plus each country's production share. Suppressed/absent country
    figures come back as null, not zero. Use `query.prodcom_code` to pin a
    specific PRODCOM mapping.

Input parameters:

- `compact` (boolean): If true, condense long numeric time series (more than ~6 points -- typically monthly/quarterly windows or wide multi-partner/multi-period breakdowns) into summary statistics (first, last, min, max, m…
- `query` (required): The product/reporter/partner-set/period/frequency slice to query -- the same request body every tradedashboard.eu analytical endpoint takes. See its own field descriptions (product, reporter, partner…

### `get_volatility` (~479 tokens)

Coefficient-of-variation (CV = stdev / mean) volatility per
    partner/reporter x product pair, over inactive-period-excluded history.
    Higher CV = the flow swings more relative to its typical level. Returns
    per-entity CV bars (with drill-down series) and, unless
    include_heatmap=false, an entity x sub-product CV heatmap.

Input parameters:

- `combos`: Comma-separated flow x indicator keys to compute at once: imp-qty, imp-price, exp-qty, exp-price. When set, overrides flow/indicator and returns a dict keyed by combo.
- `compact` (boolean): If true, condense long numeric time series (more than ~6 points -- typically monthly/quarterly windows or wide multi-partner/multi-period breakdowns) into summary statistics (first, last, min, max, m…
- `entity_level` (string): Dimension to analyse. 'partner' -- how concentrated/volatile is the reporter's trade across its trading partners? 'reporter' -- how concentrated/volatile is a given partner's trade across EU member s…
- `flow` (string): Trade flow to use.
- `include_heatmap` (boolean): Whether to compute the entity x sub-product CV heatmap (false is faster, bar chart only).
- `indicator` (string): Measure for single-grid mode (ignored when combos is set).
- `n_top_entities` (integer): Number of top entities to include in the volatility bar chart.
- `n_top_products` (integer): Max number of sub-products in the entity x product heatmap.
- `partner_name`: Partner country name (English). Required when entity_level='reporter'.
- `query` (required): The product/reporter/partner-set/period/frequency slice to query -- the same request body every tradedashboard.eu analytical endpoint takes. See its own field descriptions (product, reporter, partner…

### `get_pattern_shift` (~298 tokens)

Before/after trade-pattern shift around a split point
    (`query.midpoint`): for each entity, compares average quantity and price
    before vs. after, and returns scatter points (quantity-change % vs.
    price-change %) with quadrant labels -- top-right = demand-driven growth,
    top-left = supply constraint/monopoly risk, bottom-right =
    dumping/oversupply risk, bottom-left = market contraction. Suggested
    workflow: spot a shock date via get_supply_shocks / get_price_shocks
    first, then set it as `query.midpoint` here.

Input parameters:

- `compact` (boolean): If true, condense long numeric time series (more than ~6 points -- typically monthly/quarterly windows or wide multi-partner/multi-period breakdowns) into summary statistics (first, last, min, max, m…
- `query` (required): The product/reporter/partner-set/period/frequency slice to query -- the same request body every tradedashboard.eu analytical endpoint takes. See its own field descriptions (product, reporter, partner…

### `get_supply_shocks` (~461 tokens)

Detect abnormal collapses in trade volumes ("sudden volume changes").
    Flags periods where a partner/product pair's volume drops well below its
    historical average (>2 sigma by default). Returns ranked shock events
    per flow, each with timeline phases (baseline, decline, disruption,
    recovery, ...), magnitude, abnormality score and underlying series.

Input parameters:

- `compact` (boolean): If true, condense long numeric time series (more than ~6 points -- typically monthly/quarterly windows or wide multi-partner/multi-period breakdowns) into summary statistics (first, last, min, max, m…
- `cumulative_share` (number): Only the top trading partners that together account for this share of total trade are analysed.
- `entity_level` (string): Dimension to analyse. 'partner' -- how concentrated/volatile is the reporter's trade across its trading partners? 'reporter' -- how concentrated/volatile is a given partner's trade across EU member s…
- `max_tolerated_gap` (integer): Consecutive quiet periods allowed within an otherwise stable trading relationship.
- `min_abnormality` (number): Minimum statistical abnormality of the volume crash, in sigma. Lower = more (weaker) shocks flagged.
- `min_active_years` (integer): Consecutive years of regular trade required before a collapse can be flagged.
- `partner_name`: Partner country name (English). Required when entity_level='reporter'.
- `query` (required): The product/reporter/partner-set/period/frequency slice to query -- the same request body every tradedashboard.eu analytical endpoint takes. See its own field descriptions (product, reporter, partner…
- `relative_threshold` (number): Minimum drop relative to peak volume to count as a collapse (0.10 = 10% drop).

### `get_price_shocks` (~423 tokens)

Detect sudden price regime shifts ("rapid price changes"), accounting
    for each flow's usual volatility so naturally volatile flows aren't
    over-flagged. Returns ranked shock events per flow with timeline phases
    (price spike/drop, volatile trade, return to baseline, ...), magnitude
    and series.

Input parameters:

- `compact` (boolean): If true, condense long numeric time series (more than ~6 points -- typically monthly/quarterly windows or wide multi-partner/multi-period breakdowns) into summary statistics (first, last, min, max, m…
- `cumulative_share` (number): Only the top trading partners that together account for this share of total trade are analysed.
- `entity_level` (string): Dimension to analyse. 'partner' -- how concentrated/volatile is the reporter's trade across its trading partners? 'reporter' -- how concentrated/volatile is a given partner's trade across EU member s…
- `lookback_years` (integer): Years before the shock used to establish the coefficient-of-variation baseline.
- `max_shocks_per_pair` (integer): Number of non-overlapping shocks kept per trading partner.
- `min_abnormality` (number): Minimum unusualness of the price shift vs. baseline volatility (CV multiples). Lower = more (weaker) shocks flagged.
- `partner_name`: Partner country name (English). Required when entity_level='reporter'.
- `query` (required): The product/reporter/partner-set/period/frequency slice to query -- the same request body every tradedashboard.eu analytical endpoint takes. See its own field descriptions (product, reporter, partner…

### `get_net_import_reliance` (~326 tokens)

Net Import Reliance (NIR) = (Imports - Exports) / Apparent
    consumption, annual, joining PRODCOM production with Comext trade. E.g.
    40% means 40% of EU consumption is met by imports; negative means the EU
    is a net exporter. Returns the NIR % series, its supply/disposition
    components, sibling-category/per-code comparisons, the resolved PRODCOM
    codes and availability notes (CN-to-PRODCOM mapping is not always 1:1;
    see the `self.notes` / `unavailability_type` fields in the response). Use
    `query.prodcom_code` to pin a specific mapping.

Input parameters:

- `compact` (boolean): If true, condense long numeric time series (more than ~6 points -- typically monthly/quarterly windows or wide multi-partner/multi-period breakdowns) into summary statistics (first, last, min, max, m…
- `query` (required): The product/reporter/partner-set/period/frequency slice to query -- the same request body every tradedashboard.eu analytical endpoint takes. See its own field descriptions (product, reporter, partner…

### `get_trade_intensity` (~268 tokens)

Trade Intensity (TI) = (Imports + Exports) / (Imports + Production),
    annual. Near 1 = highly trade-exposed sector; near 0 = predominantly
    domestic. Used in the Commission's CEEAG methodology for carbon-leakage
    / State-aid eligibility. Returns the TI series, its components,
    sibling-category/per-code comparisons, resolved PRODCOM codes and
    availability notes.

Input parameters:

- `compact` (boolean): If true, condense long numeric time series (more than ~6 points -- typically monthly/quarterly windows or wide multi-partner/multi-period breakdowns) into summary statistics (first, last, min, max, m…
- `query` (required): The product/reporter/partner-set/period/frequency slice to query -- the same request body every tradedashboard.eu analytical endpoint takes. See its own field descriptions (product, reporter, partner…

### `get_export_propensity` (~253 tokens)

Export Propensity = Exports / Production, annual: the share of EU
    production that is exported. Not clamped -- values above 100% are
    legitimate (re-exports, stock drawdown, scope differences). Returns the
    export-propensity matrix, a sibling/per-code comparison, resolved
    PRODCOM codes and availability notes.

Input parameters:

- `compact` (boolean): If true, condense long numeric time series (more than ~6 points -- typically monthly/quarterly windows or wide multi-partner/multi-period breakdowns) into summary statistics (first, last, min, max, m…
- `query` (required): The product/reporter/partner-set/period/frequency slice to query -- the same request body every tradedashboard.eu analytical endpoint takes. See its own field descriptions (product, reporter, partner…

### `get_subcontracting` (~251 tokens)

EU27 sub-contracting intensity: the share of sold production that is
    toll (sub-contracted) manufacturing rather than own-account output.
    Returns intensity (%) across value/quantity, its component series,
    per-period data-quality status, resolved PRODCOM codes and availability
    notes. The own/sub split only exists from 2021 onward.

Input parameters:

- `compact` (boolean): If true, condense long numeric time series (more than ~6 points -- typically monthly/quarterly windows or wide multi-partner/multi-period breakdowns) into summary statistics (first, last, min, max, m…
- `query` (required): The product/reporter/partner-set/period/frequency slice to query -- the same request body every tradedashboard.eu analytical endpoint takes. See its own field descriptions (product, reporter, partner…

### `get_subcontracting_members` (~264 tokens)

Per-country sub-contracting intensity (PRODCOM): for each reporting
    country, the share of its sold production that is toll manufacturing --
    which countries act as processing hubs vs. autonomous producers. Spans
    all DS-059358 reporters that report the own/sub split; others simply
    don't appear. Country cells are heavily confidentiality-suppressed
    (null, not zero, when absent).

Input parameters:

- `compact` (boolean): If true, condense long numeric time series (more than ~6 points -- typically monthly/quarterly windows or wide multi-partner/multi-period breakdowns) into summary statistics (first, last, min, max, m…
- `query` (required): The product/reporter/partner-set/period/frequency slice to query -- the same request body every tradedashboard.eu analytical endpoint takes. See its own field descriptions (product, reporter, partner…

### `resolve_product_code` (~348 tokens)

Resolve a free-text query or CN code(s) into validated product
    code(s) with descriptions -- the recommended first step before using
    a code as `product` in any other tool's `query`. Saves the search ->
    validate -> (optional) subtree round-trip: a bare keyword runs a search,
    a single code (or comma-separated list) is validated and described
    directly.

    Tip: Comext/CN nomenclature is frequently coarser than a colloquial
    product name (e.g. there is no code for "glass jars" alone -- only
    heading 7010, which bundles jars with bottles, flasks and closures).
    Check `has_subcodes` and, if useful, set `include_children=true` to see
    whether a finer sub-code is actually a better match before committing to
    one code for a whole report.

Input parameters:

- `include_children` (boolean): When resolving a single direct code, also fetch its immediate CN subtree so finer-grained alternatives are visible in one call.
- `lang` (string): Language for translated labels in the response. One of: bg, cs, da, de, el, en, es, et, fi, fr, ga, hr, hu, it, lt, lv, mt, nl, pl, pt, ro, sk, sl, sv.
- `limit` (integer): Max keyword-search results (ignored for direct code validation).
- `query` (string, required): Free-text keyword (e.g. 'glass jars') OR one or more CN codes, comma-separated (e.g. '7010' or '7010, 7013').

### `get_product_profile` (~278 tokens)

Report-section helper ("Scope & definitions"): the resolved product
    code + label, a one-sentence caveat when the code bundles several
    sub-products (`has_subcodes`), the data-coverage window actually cached
    for it, and whether it has a usable PRODCOM mapping (gating the
    autonomy/vulnerability section). Deliberately thin -- no full CN
    hierarchy breadcrumb or sibling enumeration.

    Returns `{narrative_facts, chart_data, available, reason}` -- see
    `get_market_summary` for the shape this convention follows across all of
    this bridge's report-section helpers.

Input parameters:

- `lang` (string): Language for translated labels in the response. One of: bg, cs, da, de, el, en, es, et, fi, fr, ga, hr, hu, it, lt, lv, mt, nl, pl, pt, ro, sk, sl, sv.
- `query` (required): The product/reporter/partner-set/period/frequency slice to query -- the same request body every tradedashboard.eu analytical endpoint takes. See its own field descriptions (product, reporter, partner…

### `get_market_summary` (~499 tokens)

Report-section helper ("General overview"): condensed, report-ready
    digest of how a market has evolved over the chosen window -- one call
    instead of separately fetching and cross-referencing get_overview +
    get_reporter_detail + get_concentration + get_net_import_reliance
    yourself. Set `query.frequency = "year"` for a multi-year evolution
    summary (recommended over the model's default of "quarter").

    Every figure reflects `query` exactly as given -- the same
    product/reporter/partner_set/period slice a dashboard user would have
    selected. Nothing here substitutes a different reporter or partner_set
    (e.g. to contrast intra-EU against extra-EU trade): call this again
    with a different `query.partner_set` for that, the same way a dashboard
    user would switch the sidebar's selector.

    Returns `{narrative_facts, chart_data, available, reason}`.
    `narrative_facts` combines, for the flow selected by `query.partner_set`:
    - Headline trade: first/last/min/max/pct_change for export & import
      value, quantity and price, plus the trade-balance trend.
    - Partner concentration: first/last/pct_change of the value-based HHI
      for imports and exports.
    - Top partners *and* top EU reporters by value: each one's
      first/last/pct_change -- i.e. who is gaining or losing share.
    - Net import reliance: first/last/pct_change of the annual NIR % for
      `query`'s own `reporter`/`partner_set` (only `frequency` is normalised
      to "year", since NIR is structurally annual and the upstream API
      always returns it that way regardless); omitted if the product has no
      PRODCOM mapping.
    `chart_data` carries the full-fidelity headline trade and top-partner/
    top-reporter series for charting.

Input parameters:

- `query` (required): The product/reporter/partner-set/period/frequency slice to query -- the same request body every tradedashboard.eu analytical endpoint takes. See its own field descriptions (product, reporter, partner…

### `get_market_structure_summary` (~326 tokens)

Report-section helper ("Market structure"): combines, in priority
    order, the intra-EU specialisation snapshot (`get_specialisation`,
    already map-ready), partner-concentration detail (`get_concentration`,
    keeping the top-8-by-value share breakdown as `chart_data` alongside the
    condensed HHI trend) and, when a PRODCOM mapping exists for the product,
    EU production volumes (`get_production_series`). These three are
    independent data sources bundled only because they all describe "market
    structure" -- the specialisation RSCA is trade-based and has no relation
    to the PRODCOM production figures; treat them as separate findings, not
    a single connected story. `most_specialised_reporters` /
    `least_specialised_reporters` are pre-sorted by actual RSCA (highest/
    lowest first respectively) -- use them as-is rather than re-deriving a
    ranking. `query.prodcom_code` is passed through untouched -- picking
    among ambiguous PRODCOM mappings is left to the caller, never guessed
    here.

    Returns `{narrative_facts, chart_data, available, reason}`.

Input parameters:

- `query` (required): The product/reporter/partner-set/period/frequency slice to query -- the same request body every tradedashboard.eu analytical endpoint takes. See its own field descriptions (product, reporter, partner…

### `get_volatility_summary` (~295 tokens)

Report-section helper ("Volatility & shocks"): the entities analysed
    are picked by `get_volatility` (ranks by trade volume, reports each
    one's CV) and by `get_price_shocks`/`get_supply_shocks` at default
    parameters (both already scoped to top-value partners via
    `cumulative_share=0.8`) -- never re-picked from the shocks themselves.
    Retries shock detection once with loosened thresholds before concluding
    "no shocks"; an empty result is itself a reportable finding, not a gap.
    When shocks are found, the top events by abnormality and their series
    are the section's findings; when none are found (even after the retry),
    stability is the finding. `get_pattern_shift` is intentionally not part
    of this bundle -- its before/after quadrant framing is too easily
    misread; call it directly if you specifically need it.

    Returns `{narrative_facts, chart_data, available, reason}`.

Input parameters:

- `query` (required): The product/reporter/partner-set/period/frequency slice to query -- the same request body every tradedashboard.eu analytical endpoint takes. See its own field descriptions (product, reporter, partner…

### `get_autonomy_summary` (~270 tokens)

Report-section helper ("Autonomy & vulnerability"): net import
    reliance (`get_net_import_reliance`) is always the headline fact/chart.
    Trade intensity and export propensity (`get_trade_intensity` /
    `get_export_propensity`) are both computed, then a deterministic
    salience score -- distance from an unremarkable ~50% band, plus the
    magnitude of its own change -- decides which one leads the narrative;
    this choice is never left to the caller. `trade_intensity_pct` is
    returned fully unit-consistent (first/last/min/max all expressed as a
    percentage, matching `export_propensity_pct`). Sub-contracting is
    deliberately not included in this section at all -- it is an unrelated,
    tiny-base PRODCOM series that only muddied the narrative.

    Returns `{narrative_facts, chart_data, available, reason}`.

Input parameters:

- `query` (required): The product/reporter/partner-set/period/frequency slice to query -- the same request body every tradedashboard.eu analytical endpoint takes. See its own field descriptions (product, reporter, partner…

### `get_full_report` (~484 tokens)

Fetch every report section (scope, overview, market structure,
    volatility, autonomy) for one shared `query` in a single call, instead
    of calling `get_product_profile` / `get_market_summary` /
    `get_market_structure_summary` / `get_volatility_summary` /
    `get_autonomy_summary` separately yourself. Guarantees all five
    sections describe the exact same product/reporter/partner/period
    slice -- five separate calls have no such guarantee, since nothing
    stops `query` from being re-typed slightly differently across them, or
    one of the five simply being forgotten.

    `query`'s own field defaults (`reporter='European Union'`,
    `partner_set='non-EU countries'`, `period_start='2015-01'`,
    `frequency='quarter'`, `remove_outliers=true`, ...) are exactly the
    sensible defaults for a first-cut report; override any of them for a
    different slice -- e.g. a specific member state, a custom partner
    group, a narrower period.

    Returns `{"query": {...}, "sections": {<name>: {narrative_facts,
    chart_data, links, available, reason}, ...}}` for `<name>` in
    `product_profile`, `market_summary`, `market_structure`, `volatility`,
    `autonomy`. `links` maps each `narrative_facts` key to a ready-made
    `https://tradedashboard.eu/...` URL for that same fact -- never
    construct one of these yourself; use the one already provided.

Input parameters:

- `lang` (string): Language for translated labels in the response. One of: bg, cs, da, de, el, en, es, et, fi, fr, ga, hr, hu, it, lt, lv, mt, nl, pl, pt, ro, sk, sl, sv.
- `query` (required): The product/reporter/partner-set/period/frequency slice to query -- the same request body every tradedashboard.eu analytical endpoint takes. See its own field descriptions (product, reporter, partner…

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/eu-tradedashboard-eu-trade-explorer/mcp#diagnostics

## Score history

- 2026-08-03: 66
- 2026-08-02: 65
- 2026-08-01: 65
- 2026-07-31: 64
- 2026-07-30: 62
- 2026-07-29: 62
- 2026-07-28: 61
- 2026-07-27: 60
- 2026-07-26: 60

## Links

- Remote endpoint: https://mcp.tradedashboard.eu/mcp
- Website: https://tradedashboard.eu/
- Changelog RSS feed: https://verifymcp.io/servers/eu-tradedashboard-eu-trade-explorer/mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/eu-tradedashboard-eu-trade-explorer/mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/eu-tradedashboard-eu-trade-explorer/mcp
