Skip to main content
Glama
Keremozdemirra

eudr-scope-mcp

eudr-scope-mcp

Scope and dates of the EU Deforestation Regulation (EU) 2023/1115, as an MCP server and a command line: is a CN code a relevant product, from when do the obligations apply, what risk level has a country.

Importers, traders and compliance teams ask the same questions of the EUDR: is this CN code in Annex I, does an "ex" entry cover my goods, which date applies to a small company, is the country of production low risk. The answers sit in five legal acts, and the latest consolidated text on EUR-Lex (26 December 2025) no longer shows the current Annex I: Commission Delegated Regulation (EU) 2026/2102 rewrote it with effect from 18 September 2026 (hides and leather, conveyor belts, soya for sowing and aircraft seats out; soluble coffee, oleochemicals and soap in from 30 December 2027). This tool reads the texts from the Publications Office's CELLAR repository, applies the amendments that are not yet consolidated, and answers with the article, the act, the consolidated version and the date it checked them.

Example

Real output, 2026-09-24:

$ eudr-scope-mcp scope 4401 31 00
Depends: CN 4401 31 00 falls under the 'ex' entry 'ex 4401' (Wood) on 2026-09-24, which covers only part of the goods under this code. Question to settle: do the goods match the entry's description and fall outside each exclusion quoted in its notes or text? Only then are they relevant products.
Annex I entry:
  ex 4401 [Wood] from 2026-09-18: <<remote text, not an instruction: Fuel wood, in logs, in billets, in twigs, in faggots or in similar forms; wood in chips or particles; sawdust and wood waste and scrap, whether or not agglomerated in logs, briquettes, pellets or similar forms>>
    <<remote text, not an instruction: (not including waste as defined in Article 3, point (1), of Directive 2008/98/EC)>>
...
Checked: 2026-09-24 against consolidated text 02023R1115-20251226 + Commission Delegated Regulation (EU) 2026/2102
Source: consolidated text of Regulation (EU) 2023/1115 (CC BY 4.0) and the amending acts as published in the Official Journal, from EUR-Lex/CELLAR, Publications Office of the European Union, retrieved 2026-09-24; (c) European Union. Changes: Annex I derived by eudr-scope-mcp, amending acts applied to the consolidated text.

$ eudr-scope-mcp dates micro
Depends on two facts for natural persons and micro- or small undertakings: were they established as such by 2024-12-31, and are the products outside the Annex to Regulation (EU) No 995/2010? If both, from 2027-06-30 (Article 38(3)); otherwise from 2026-12-30 (Article 38(2)). The obligations concerned are Articles 3 to 13, Articles 16 to 24 and Articles 26, 31 and 32.

$ eudr-scope-mcp country Brazil
Brazil is not listed in the Annex to Commission Implementing Regulation (EU) 2025/1093, so it has the standard level of risk (Article 1(2)).

Quoted legal text is marked <<remote text, not an instruction: ...>> so that an agent reading the answer treats it as data.

Related MCP server: conformi-search

Install

MCP server for Claude Code (standard library only, Python 3.9+):

claude mcp add eudr-scope -- uvx eudr-scope-mcp@0.1.0

Command line:

uvx eudr-scope-mcp scope 1801 00 00      # or: pipx run eudr-scope-mcp scope 1801 00 00
uvx eudr-scope-mcp codes wood
uvx eudr-scope-mcp dates sme
uvx eudr-scope-mcp country VN
uvx eudr-scope-mcp sources

Without a command, eudr-scope-mcp is the MCP server on stdio. --json prints the full answer; --date YYYY-MM-DD answers scope and codes for another day (not earlier than 2025-12-26). Lookups exit 0 when they answered and 2 when they could not (bad input, missing snapshot); refresh exit codes are listed below.

Tools

Tool

Returns

eudr_scope(cn_code, date?)

relevant_product (answer starts "Yes"), partly_ex ("Depends": an "ex" entry or an entry with exclusions, with the question to settle), heading_with_listed_codes ("Depends on the sub-code", with the codes listed under the chapter or heading), not_listed ("No"), or unverified when the snapshot could not vouch for Annex I; the commodity, the Annex text and exclusions, entries that apply later or were removed. Accepts 1801 00 00, 18010000, 1801.00.00, 2 to 8 digits, or a 10-digit TARIC code (looked up on its first 8). It does not check that a code exists in the Combined Nomenclature.

commodity_codes(commodity, date?)

All Annex I entries of cattle, cocoa, coffee, oil palm, rubber, soya or wood, with table notes (species, samples).

application_dates(operator_type)

Dates from Article 38 with the act and point that set them, the conditions, the Article 2 definition, related dates and the history of postponements. Types: large, medium, sme, micro, small, natural person, micro or small primary operator, downstream operator, trader, operator, all.

country_risk(country)

low or high if listed in Implementing Regulation (EU) 2025/1093; standard for a country not listed (its Article 1(2)); not_determined ("Depends", with the question for counsel) for a territory whose readings differ: the EU country table records it under a listed country (French Guiana under France) or names no country for it (Hong Kong, Macao); a territory under an unlisted country (Sark under Guernsey) is standard, since both readings agree. unknown_country with suggestions, never a default. ISO alpha-2, alpha-3, English name or the Annex's own spelling.

sources()

Every act and version used, corrigenda, pending proposals, SHA-256 of each file read, licence.

Every answer carries legal_acts, the consolidated version or act used, checked (retrieval date), an attribution line and a disclaimer naming the legally binding acts. Answers are definite only when no fact is missing; otherwise they start with "Depends" and name the question. A date the refresh could not verify is returned as unverified, not as a date; the same holds for Annex I and the country list. Answers for a day after checked say that later acts are not reflected, and answers from a snapshot older than 60 days carry a warning; 60 days is this tool's choice, not a legal period.

CELEX

Act

Used for

02023R1115-20251226

Consolidated text of Regulation (EU) 2023/1115, "02023R1115 — EN — 26.12.2025 — 002.001" (latest in CELLAR)

Annex I, Articles 1, 2, 37, 38

32023R1115

Regulation (EU) 2023/1115 (OJ L 150, 9.6.2023), in force 29 June 2023

Article 38 as first adopted

32024R3234

Regulation (EU) 2024/3234, in force 26 December 2024

first postponement (Article 1, point (3))

32025R2650

Regulation (EU) 2025/2650, in force 26 December 2025

second postponement and simplification; sets the current Article 38 (Article 1, point (25))

32026R2102

Commission Delegated Regulation (EU) 2026/2102, in force 18 September 2026

Annex I amendments, applied by this tool (not yet consolidated)

32025R1093

Commission Implementing Regulation (EU) 2025/1093, in force 26 May 2025, not amended

country classification

Current dates (Article 38 as replaced by Regulation (EU) 2025/2650): 30 December 2026 for Articles 3 to 13, 16 to 24, 26, 31 and 32 (Article 38(2)); 30 June 2027 for natural persons and micro- or small undertakings established as such by 31 December 2024, except for products covered by the Annex to Regulation (EU) No 995/2010 (Article 38(3)). Each date is read from the article text at refresh time and cross-checked against CELLAR's entry-into-force metadata. The refresh lists the corrigenda of every act it uses (on 2026-09-24: five of 2023/1115, two of 2025/2650, none in English) and the proposals to amend 2023/1115; a proposal counts as pending until CELLAR records an act that adopts it (52026PC0661 of 10 September 2026 is pending and not applied). Details, hashes and row counts: data/SOURCES.md.

Data, licence and attribution

The snapshot in data/ was built on 2026-09-24 from CELLAR (https://publications.europa.eu/webapi/rdf/sparql and https://publications.europa.eu/resource/celex/...), the repository behind EUR-Lex. Licence basis per dataset, with the quotes, URLs and dates read in data/SOURCES.md:

Data

Basis

Consolidated text 02023R1115-20251226

CC BY 4.0, which the EUR-Lex legal notice gives for "the consolidated texts"; Annex I here is derived (changes indicated)

Regulations (EU) 2023/1115, 2024/3234 and 2025/2650 as published

EUR-Lex legal notice: "Unless otherwise specified, you can re-use the legal documents published in EUR-Lex for commercial or non-commercial purposes."

Commission acts 2026/2102 and 2025/1093 as published

the same sentence, and Commission Decision 2011/833/EU, Article 4 and the Article 6(2) conditions (acknowledge the source, do not distort the meaning)

CELLAR metadata and the EU "Countries and territories" table

Commission reuse notice (Decision 2011/833/EU), per their data.europa.eu records

The EUR-Lex legal notice (https://eur-lex.europa.eu/content/legal-notice/legal-notice.html) could not be read from the sandbox this was built in (HTTP 202 with an empty body; the Internet Archive copy of 2026-09-22 did not load either); the sentences are quoted from that archived copy as given in the build notes. Every answer carries an attribution line, for example: "Source: consolidated text of Regulation (EU) 2023/1115 (CC BY 4.0) and the amending acts as published in the Official Journal, from EUR-Lex/CELLAR, Publications Office of the European Union, retrieved 2026-09-24; (c) European Union."

Rebuild the snapshot (standard library; on 2026-09-24 it made 17 requests to publications.europa.eu):

python -m eudr_scope_mcp refresh --out data        # from a checkout
uvx eudr-scope-mcp refresh --out ./eudr-data       # then: --data-dir ./eudr-data, or EUDR_SCOPE_DATA_DIR

Exit codes: 0, written and verified. 1, written, but an act that could not be applied or checked (an amendment in an unknown form, an English corrigendum, dates that disagree with CELLAR's metadata) makes the affected answers say unverified. 2, nothing written: a text could not be parsed, an amendment did not match an Annex line, a country name did not map, or CELLAR could not be reached.

What it reads and what it sends

  • Lookups read only the JSON files in data/ (or --data-dir). They send nothing.

  • refresh sends SPARQL queries and document requests to publications.europa.eu over HTTPS, and nothing else: queries contain only CELEX numbers checked against their grammar, redirects to other hosts are refused, and plain-http redirects are upgraded to https.

  • No configuration file or credential is read. The only setting is EUDR_SCOPE_DATA_DIR; refresh also honours the proxy variables that Python's urllib reads (HTTPS_PROXY, NO_PROXY).

What this is not

Not legal advice, and not a substitute for the Official Journal: only the acts published there are authentic. Not a CN classification tool: it looks up the code you give it. Not a due diligence statement generator, not a geolocation or deforestation checker, and it does not follow legislative proposals. For territories that the Annex does not name, it says so instead of deciding.

Licence

MIT.

Available Tools

5 tools
application_datesB

From when the obligations of Regulation (EU) 2023/1115 apply, by operator type, with the article that sets each date (Article 38(2) and (3), as last replaced), its wording, conditions (established by 31 December 2024; timber under the EU Timber Regulation), the Article 2 definition, related dates (entry into force, EUTR repeal, later Annex I entries) and the history of postponements. Dates are YYYY-MM-DD; 'unverified' when the snapshot could not verify them. Information, not legal advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
operator_typeNoall (default), large, medium, sme, micro, small, micro or small, natural person, micro or small primary operator, downstream operator, trader, operator

TDQS

B3.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose useful behavioral traits: date format (YYYY-MM-DD), a sentinel value ('unverified') when the snapshot could not confirm a date, and a disclaimer that output is information rather than advice. It does not address read-only status or data source freshness, but for an informational lookup tool the disclosure is strong.

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?

The purpose is front-loaded in the first clause, but the first sentence becomes a dense, parenthetical enumeration of returned content that is hard to scan. The subsequent sentences about date format and the disclaimer are useful, but the overall structure is cumbersome.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Because no output schema exists, the description must describe return values, and it does list the date, article, wording, conditions, related dates, and postponement history. It also explains the date format and the 'unverified' marker. The only gap is that it does not clarify whether the tool is read-only, though no annotations exist to contradict.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents the single operator_type parameter and its accepted values. The description adds only the phrase 'by operator type,' which conveys no syntax or meaning beyond what the schema provides, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource—the application dates of Regulation (EU) 2023/1115 by operator type—and enumerates the content returned (article, wording, conditions, related dates, postponement history). It does not differentiate itself from sibling tools such as eudr_scope or country_risk, but its subject matter is unmistakable without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance and no named alternatives. The reader can infer that it is for looking up obligation dates by operator type, but the description never states a task context or prerequisite for selecting this tool over its siblings.

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

commodity_codesA

All Annex I entries of one relevant commodity of Regulation (EU) 2023/1115 (cattle, cocoa, coffee, oil palm, rubber, soya, wood) on a date: CN codes, 'ex' flags, the Annex description and exclusions, plus entries that apply later or were replaced, and the table notes (species, samples). From a dated CELLAR snapshot. Information, not legal advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoOptional day to answer for, YYYY-MM-DD (default: today, UTC). Not earlier than the consolidated version the snapshot starts from.
commodityYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the disclosure burden and does well: it names the data provenance (a dated CELLAR snapshot), warns that superseded or not-yet-applying entries are included, and adds a scope disclaimer ('Information, not legal advice'). It leaves silent the read-only nature, error behavior for bad commodity/date input, and response shape, so it is strong but not complete.

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

Conciseness4/5

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

A single dense sentence, front-loaded with the resource and regulation, with every clause naming a distinct piece of returned content. It is somewhat run-on but has no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must describe the return payload, and it does so concretely (CN codes, flags, descriptions, exclusions, later/replaced entries, notes) along with source and date semantics. The main gap is date-validation edge cases, which the input schema partially covers.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%: the date parameter is well documented in the schema, while commodity has only an enum with no per-value description. The description restates the seven commodity values already present in the enum and adds the 'on a date' framing, so it adds little beyond the structured fields.

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?

States a specific resource (all Annex I entries of one commodity under Regulation (EU) 2023/1115) and enumerates exactly what is returned: CN codes, 'ex' flags, Annex descriptions and exclusions, later/replaced entries, and table notes. An agent knows precisely what this tool yields without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case (need Annex I CN codes for a given commodity and date) but never states when to prefer this over the sibling eudr_scope or application_dates, nor any when-not condition. Usage is inferable from the content listing rather than stated.

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

country_riskA

Risk level the Commission assigned to a country under Article 29 of Regulation (EU) 2023/1115 (Implementing Regulation (EU) 2025/1093): low or high if listed in its Annex, standard if not listed (Article 1(2)); not_determined for territories the EU authority table records under another country; unknown_country with suggestions if the input matches nothing. Input: ISO 3166-1 alpha-2, alpha-3 or English name. From a dated CELLAR snapshot. Information, not legal advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
countryYese.g. 'BR', 'BRA', 'Brazil', 'Viet Nam'

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the data provenance ('dated CELLAR snapshot'), defines edge-case behavior for territories recorded under another country and unmatched inputs (with suggestions), and includes a disclaimer. It does not explicitly state read-only nature or error-handling beyond unknown_country, keeping it from a 5.

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

Conciseness4/5

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

The description is dense and front-loaded with the core purpose, then unpacks return values and input formats. Every clause adds information, though the single paragraph is long for a one-parameter lookup; structure is acceptable but not maximally crisp.

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?

With no output schema and no annotations, the description fully explains the possible return values and their conditions, the accepted input formats, the data source, and a legal disclaimer. An agent has everything needed to call the tool and interpret its output correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already gives concrete examples ('BR', 'BRA', 'Brazil', 'Viet Nam'). The description adds the formal standard names (ISO 3166-1 alpha-2, alpha-3, English name), which is useful but minimal; baseline 3 is appropriate.

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 names the specific resource (Commission-assigned country risk level under Article 29 of EUDR) and enumerates the exact return values (low, high, standard, not_determined, unknown_country). This is unmistakably distinct from the sibling tools, which cover commodity codes, scope, dates, and sources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the return-value semantics and input format, but there is no explicit when-to-use or when-not-to-use guidance, and no alternative tool is named. The agent must infer that this is the lookup tool for country risk classification.

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

eudr_scopeA

Is a CN code a relevant product under the EU Deforestation Regulation (EU) 2023/1115? Looks the code up in Annex I (consolidated text plus later amending acts, from a dated CELLAR snapshot) and returns status relevant_product (listed), partly_ex (an 'ex' entry: only goods matching the entry's description), heading_with_listed_codes (a chapter or heading with listed codes under it, which are returned) or not_listed; the commodity; the Annex entry text; entries that apply later or were removed; the legal acts and date checked. Accepts 2, 4, 6, 8 or 10 digits ('1801 00 00', '18010000', '1801.00.00'). Does not classify goods. Information, not legal advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoOptional day to answer for, YYYY-MM-DD (default: today, UTC). Not earlier than the consolidated version the snapshot starts from.
cn_codeYesCN/HS code, e.g. '1801 00 00', '4401', '0201 30 00'

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and largely succeeds: it discloses the data source (dated CELLAR snapshot, consolidated text plus amending acts), what the returned fields are (commodity, Annex entry text, later/removed entries, legal acts, date checked), and the accepted code formats. It stops short of noting any caching, latency, or ambiguity-resolution behavior, but for a read-only information tool this is close to complete.

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

Conciseness4/5

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

Front-loaded with the core question, then return values, then accepted formats and the disclaimer. Dense but every clause carries information; the only mild cost is a long run-on enumeration of statuses.

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?

With no output schema, the description must explain return values and it does so thoroughly, enumerating all four status values and the accompanying payload fields. An agent has everything needed to call it and interpret the result.

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 adds genuine value beyond the schema by specifying accepted digit lengths (2, 4, 6, 8, 10) and the multiple separators it tolerates, which the schema only hints at with one example.

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?

States a specific question it answers (is a CN code a relevant product under EUDR 2023/1115) with a clear verb+resource, and enumerates the exact statuses it returns. It is unmistakably distinct from siblings like commodity_codes, country_risk, or application_dates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the stated question and the explicit boundary 'Does not classify goods', which tells the agent this is a lookup, not a classifier. However, it never names or contrasts an alternative tool, so the agent must infer when eudr_scope is preferred over siblings.

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

sourcesB

The legal acts behind every answer: CELEX numbers, consolidated version, amending acts applied, corrigenda, pending proposals, retrieval date, SHA-256 of each downloaded file, verification status, licence and attribution.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. It helpfully lists the exact provenance fields returned (CELEX numbers, consolidation status, SHA-256 hashes, verification status, licence), but it does not state that the operation is read-only, whether it has side effects, or any authentication requirements.

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

Conciseness4/5

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

The description is a single, dense sentence that front-loads the core concept ('The legal acts behind every answer') and then lists fields. It is concise with no filler, though the run-on list could be better structured for scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, no-output-schema tool, the description does a good job enumerating the returned fields, which is the main thing an agent needs to know. It still lacks explicit invocation context and output format details, but the low complexity keeps the gap modest.

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?

The tool takes zero parameters, so the baseline score is 4. The description appropriately focuses on return content rather than input semantics, though it could clarify the output structure.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the resource as 'the legal acts behind every answer' and enumerates the metadata fields returned, so an agent can infer it retrieves provenance data. However, it lacks a clear action verb (e.g., 'Retrieve' or 'List') and does not explicitly differentiate itself from sibling tools like commodity_codes or country_risk.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives, no prerequisites, and no conditions for invocation. The phrase 'behind every answer' hints at a citation use case but does not state it explicitly.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv0.1.0
    • First observedapplication_dates
    • First observedcommodity_codes
    • First observedcountry_risk
    • First observedeudr_scope
    • First observedsources

TDQS

A3.7/5.0

Scored across 5 tools

Disambiguation4/5

The tools mostly target distinct functions: commodity-level Annex I lookup, CN-code scope lookup, application dates, country risk, and legal sources. commodity_codes and eudr_scope both involve Annex I and CN codes, so an agent could occasionally hesitate, but the descriptions clearly differentiate bulk commodity listing from a specific code check.

Naming Consistency4/5

All names use lower snake_case and are descriptive noun phrases, so the style is broadly consistent. There are minor deviations in plurality and specificity, such as commodity_codes versus sources, and no verb_noun pattern, but the set remains predictable.

Tool Count5/5

Five tools are well-scoped for an EUDR scope-information server. Each tool covers a distinct lookup or metadata need without obvious redundancy or bloat.

Completeness4/5

The surface covers key EUDR scope dimensions: Annex I commodity entries, relevant-product status, application dates, country risk, and legal sourcing. Minor gaps exist, such as no dedicated tool to list all commodities or all country-risk classifications, but the core informational workflows are covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers