Comprehensive Model Context Protocol server for managing Home Assistant through AI assistants.
EUDR is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Compile EUDR Annex II Due Diligence Statements from operator, supplier, and plot geolocation.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http eudr-mcp https://eudr.dev/mcp
# 2 — ask your agent for something these tools do
# eudr_check_plots, eudr_fetch_evidence, eudr_assess_evidence_gaps and 18 more
EUDR costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http eudr-mcp https://eudr.dev/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
21 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Check up to six production plots for forest loss after 31 December 2020, the cut-off in Regulation (EU) 2023/1115. Takes GeoJSON boundaries, the commodity, and the country of production. Returns a per-plot verdict, the loss years observed, how much of each plot was inspected, and a handle for the underlying satellite evidence. This answers Article 3(a) only: it does not check land tenure, permits,
| Parameter | Type | Required | Notes |
|---|---|---|---|
| geojson | object | no | One plot, as a GeoJSON Polygon, MultiPolygon or Point in WGS84 (EPSG:4326). Article 2(28) requires six decimal places. A Point is admissible only for a plot under four hectares that is not forest. Sup |
| plots | array | no | Several plots checked together, each keeping its own verdict. Use this when a consignment draws on more than one plot. Six at a time answers inside a conversation; a consignment with more plots than t |
| commodity | string | yes | With kind=trade, return just this Annex I commodity's lanes: cocoa, coffee, rubber, soya, oil_palm, cattle or wood. |
| country | string | yes | ISO-3166-1 alpha-2 code of the country of production. It sets the benchmark risk tier. |
| hs_code | string | no | Optional HS code, 2 to 8 digits. Overrides the commodity-to-Annex-I mapping. |
| quantity_kg | number | no | Optional net mass of the consignment. It does not affect the verdict. |
Retrieve the signed satellite facts behind a completed check, a page at a time, using the evidence_cid that check returned. Each entry is a content address that resolves at emem.dev and verifies offline against the responder's key. Use this when someone needs to audit or cite the evidence, not to summarise a result.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| evidence_cid | string | yes | The handle returned by eudr_check_plots. |
| offset | integer | no | Index to start from. Defaults to 0. |
| limit | integer | no | How many facts to return, up to 200. Defaults to 50. |
Check what each supplier's file is still missing against Article 9(1) of Regulation (EU) 2023/1115, the closed list of information an operator must hold before filing. Returns the unmet items with their article reference and what to request, separating items that block filing from items that merely leave the file incomplete. This is a checklist over the fields you supply; it reads no documents and
| Parameter | Type | Required | Notes |
|---|---|---|---|
| suppliers | array | yes | The suppliers to weigh up, each with what is already held about them. One entry per supplier. |
Look up the country benchmark tier under Implementing Regulation (EU) 2025/1093, the Annex I commodity to HS-code mapping under Regulation (EU) 2023/1115, the seaports and airports a consignment can leave or enter through (UN/LOCODE), or which countries actually supply the Union with each commodity and in what volume (UN Comtrade 2023, with World Bank indicator prices). Returns the table this engi
| Parameter | Type | Required | Notes |
|---|---|---|---|
| kind | string | yes | country_risk for the benchmark tiers, commodities for the Annex I mapping, ports for UN/LOCODE seaports and airports, trade for who supplies the Union with what. |
| country | string | no | With kind=country_risk, return just this country's tier instead of the whole table. With kind=ports, return just that country's seaports and airports instead of the Union's points of entry. |
| commodity | string | no | With kind=trade, return just this Annex I commodity's import lanes instead of all seven. |
Verify a statement receipt: re-derive its content address from the canonical payload and check the ed25519 signature. Use it on a receipt a counterparty hands you. A valid signature establishes who signed and that the bytes are unchanged; it does not establish that the claim inside is true.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| receipt | object | yes | The receipt as issued: schema, cid, payload, canonical_b64, signature_b64, signer, signed_at. |
Compile and sign an Annex II Due Diligence Statement. This WRITES: it stores a compile task holding the operator and supplier details you pass, and sends the plot geometry, HS code, country and quantity to emem.dev to be measured and independently signed. Operator and supplier identity are not forwarded upstream. Returns a task handle; read the outcome with eudr_get_dds. Nothing is filed with any
| Parameter | Type | Required | Notes |
|---|---|---|---|
| operator | object | yes | Who places the goods on the EU market and answers for this statement (Annex II point 1). Not forwarded to the satellite service. |
| supplier | object | yes | Who the goods were bought from, as the operator's own records name them. Not forwarded to the satellite service. |
| product | object | yes | What is being placed on the market: its HS code, what it is in words, and its net mass (Annex II point 2). |
| geolocation | object | yes | Where it was produced and when it was harvested (Annex II point 3). The plot geometry, country, HS code and quantity are the only things sent to the satellite service. |
| producer | object | no | The primary producer, where that is not the supplier. |
Read the state of a compile started by eudr_prepare_dds. While it runs, returns the current state. Once finished, returns the verdict, the receipt's content address and signing key, and the link to the printable statement.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| task_id | string | yes | The task_id returned by eudr_prepare_dds. |
The complete derivation chain behind a compiled statement, in order: polygon to grid addresses, signed measurements, the algorithm and the registries it was pinned against, cell verdicts to a consignment verdict, citations, and which of three independent keys signed what. A stage whose evidence is absent is reported as absent with its reason. Use it when someone asks how a result was reached rathe
| Parameter | Type | Required | Notes |
|---|---|---|---|
| task_id | string | yes | The task_id of a compile that has produced a statement. |
Parse a consignment list into structured shipments ready to check. Accepts a CSV export (the column set eudr.dev publishes) or a GS1 EPCIS 2.0 JSON-LD document. Returns one row per shipment with supplier, commodity, country, quantity and plot boundaries, plus a warning for every row that could not be read and the reason. Nothing is stored and nothing is submitted; this only reads the document you
| Parameter | Type | Required | Notes |
|---|---|---|---|
| format | string | yes | csv for the published column set, epcis for a GS1 EPCIS 2.0 JSON-LD document. |
| document | string | yes | The document itself. CSV text including its header row, or the EPCIS document as JSON text. |
| offset | integer | no | Which shipment to start detailing from. Totals always cover the whole document. |
| limit | integer | no | How many shipments to return in full, including plot boundaries. Defaults to 8, which is what eudr_check_plots accepts in one call. |
Export a compiled statement as TRACES NT submission XML, signed Annex II JSON, or plot boundaries as GeoJSON. Exporting is not filing: nothing is submitted to any authority. TRACES export is refused for a non-negligible verdict, because Article 4(1) bars placing those goods and a non-filable assessment must not be handed out as a submission document.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| task_id | string | yes | The task_id of a completed compile. |
| format | string | yes | traces_xml for the EUDR Information System submission shape, annex_ii_json for the signed statement, plots_geojson for the boundaries as a FeatureCollection. |
| activity | string | no | TRACES activity type. Defaults to the activity the statement was compiled with. |
List the Due Diligence Statements already in the signed-in organisation's account, newest first, with verdict, reference, commodity, country, quantity and date. Use this to answer what has been filed, what is outstanding, and what a past consignment concluded, rather than asking the user to re-enter details their account already holds.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | integer | no | How many to return. Defaults to 20. |
| country | string | no | Only statements for this country of production. |
| verdict | string | no | Keep only the statements that reached this verdict. Leave it out for all of them. |
Summarise the signed-in organisation's position: how many statements are filable, how many are blocked by a non-negligible verdict, how many are unresolved, broken down by commodity and country, plus outstanding supplier evidence requests. Answers "where do we stand" without enumerating every record.
No parameter schema on file.
List the supplier evidence requests this organisation has issued: who was asked, whether they responded, and when each request expires. Answers which suppliers still owe plot boundaries and production details.
No parameter schema on file.
Create a one-time link a supplier can use to submit their plot boundaries and production details straight into this organisation's account, without needing an account of their own. This writes: it creates a credential that lets whoever holds the link submit data to you, and returns that link once. Send it only to the intended supplier. No email is sent by this call.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| supplier_name | string | yes | Your name for the counterparty, shown to them on the intake page. |
| string | no | Optional, recorded so you can see where the link was meant to go. It is not verified and nothing is sent to it. | |
| valid_for_days | integer | no | How long the link works. Defaults to 30. |
Report this organisation's credit balance, how many signed statements it will cover, and what has been spent. Checking plots, looking up references, assessing supplier gaps and reading traces cost nothing and are always available — only compiling a signed statement draws the balance down. Use this before starting a batch of compiles so the user is not surprised part-way through. The first call for
No parameter schema on file.
Report the Article 11 risk-mitigation plans this organisation has open against flagged shipments: which steps are outstanding, which article each discharges, whether a step needs a person or can be re-run automatically, and what evidence has been recorded. A non-negligible verdict creates an obligation under Article 11 to act before the product is placed on the market; this answers how far that ha
| Parameter | Type | Required | Notes |
|---|---|---|---|
| shipment_id | string | no | Optional. One shipment's plan; omit for every open plan. |
List the organisation's farms and its recent buying decisions (GO / GO WITH CONDITIONS / NEEDS A PERSON / NO-GO per destination), with which carry a recorded outcome and which were overridden. Use it to find a farm id before eudr_decide_lot, or to see how decisions have turned out. Read-only.
No parameter schema on file.
Run the organisation's own buying process on a banana lot from one of its farms: every destination in its library gets GO / GO WITH CONDITIONS / NEEDS A PERSON / NO-GO with the chance the whole chain holds, the margin P10/P50/P90, the most the buyer can pay and keep that outcome, the deal zone against the farmer's ask, and what the farmer is told (never the walk-away price). Every default the lot
| Parameter | Type | Required | Notes |
|---|---|---|---|
| farm_id | string | yes | A farm id from eudr_procurement_overview. |
| lot | object | yes | The lot: crop, plants, harvestable_share, bunch_kg, maturity, days_since_flowering, expected_daily_mean_c (each a {low, mid, high} range where a range), fingers, chemicals, certificates, offer {farm_g |
List the farms in this organisation's record: id, name, country, whether a boundary is confirmed and its area in hectares (geodesic, holes out), and how many EU statements were made for each. Read-only.
No parameter schema on file.
Add a farm to this organisation's record. A name is enough; give the crop, country and a pin (lat, lon) when known. Give its boundary as boundary (a GeoJSON Polygon or MultiPolygon, longitude first), or as fields: several field outlines (for example Fields of The World parcels) that are joined into one farm by closing the bunds and tracks between neighbours (join_m, default 3 m each way), fi
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | What the farm is called, as the buyer and the farmer would say it. |
| crop | string | no | What grows there, in plain words (cocoa, coffee, oil palm). It decides whether the EU deforestation rules apply at all. |
| country | string | no | ISO 3166-1 alpha-2. |
| lat | number | no | A pin on the farm, in WGS84 degrees. Use it when no boundary is known. |
| lon | number | no | The pin's longitude, WGS84 degrees. GeoJSON order is longitude first; this field is not. |
| boundary | object | no | GeoJSON Polygon or MultiPolygon. |
| fields | array | no | GeoJSON Polygons to join into one farm. |
| join_m | number | no | How far apart two field outlines may be and still be treated as one farm, in metres each way. Default 3, which closes the bunds and tracks between neighbouring parcels. |
Set the boundary of a farm already in the record, as boundary (GeoJSON Polygon or MultiPolygon) or as fields to join into one farm (see eudr_create_farm). It becomes the farm's confirmed boundary, recorded as set by this agent credential, and what follows runs at once: the country from where the land lies, the forest record warmed, the land check. This writes to the organisation's record, and
| Parameter | Type | Required | Notes |
|---|---|---|---|
| farm_id | string | yes | The farm whose boundary this is, as eudr_create_farm or eudr_list_farms returned it. |
| boundary | object | no | The outline, as a GeoJSON Polygon or MultiPolygon, longitude first. Give this or fields. |
| fields | array | no | Several field outlines to join into one farm, as GeoJSON Polygons. Give this or boundary. |
| join_m | number | no | How far apart two field outlines may be and still count as one farm, in metres each way. Default 3. |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install EUDR or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | moderate | capability blast radius (moderate) — client exposure if the model is manipulated | −3 |
| coverage-honesty | manifest | inspection depth (manifest) — how much of the target the scan could see | −4 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
The scan read each tool’s name, description, input schema and annotations exactly as the server listed them the last time it answered us; no code was reviewed. We ask the server again about once a month, and a list that changed is graded again.
The implementation source was not read — this reflects the declared tool metadata only.
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. moderate is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| eudr_check_plots | external-sink | external-sink: declares readOnlyHint: false, openWorldHint: true |
| eudr_fetch_evidence | untrusted-input | untrusted-input: keyword "fetch" |
| eudr_assess_evidence_gaps | no tags | |
| eudr_lookup_reference | no tags | |
| eudr_verify_receipt | no tags | |
| eudr_prepare_dds | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| eudr_get_dds | no tags | |
| eudr_execution_trace | no tags | |
| eudr_import_shipments | no tags | |
| eudr_export_statement | no tags | |
| eudr_list_statements | no tags | |
| eudr_compliance_status | no tags | |
| eudr_list_supplier_requests | no tags | |
| eudr_request_supplier_evidence | state-write | state-write: declares readOnlyHint: false |
| eudr_account_usage | state-write | state-write: declares readOnlyHint: false |
| eudr_mitigation_status | no tags | |
| eudr_procurement_overview | no tags | |
| eudr_decide_lot | state-write | state-write: declares readOnlyHint: false |
| eudr_list_farms | no tags | |
| eudr_create_farm | external-sink | external-sink: declares readOnlyHint: false, openWorldHint: true |
| eudr_set_farm_boundary | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 1.0.0.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish EUDR can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.