Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Changed the definition of "eudr_check_plots" and "eudr_lookup_reference"
{"additionalProperties":false,"properties":{"commodity":{"description":"TheWithAnnexkind=trade,IreturncommodityjustproducedthisonAnnextheIplot.","enum"commodity's lanes:["cattle","cocoa","coffee","oil_palm","rubber","soya","woodoil_palm, cattle or wood."],"type":"string"},"country":{" ⟨198 unchanged words⟩
Look up country risktiers and, Annex I commodities, ports and trade lanes
⟨5 unchanged words⟩ tier under Implementing Regulation (EU) 2025/1093,orthe Annex I commodity to HS-code mapping under Regulation (EU)2023/1115.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 engineactuallyevaluates against, with its source and the date it was verified.
{"additionalProperties":false,"properties":{"commodity":{"description":"With kind=trade, return just this Annex I commodity's import lanes instead of all seven.","enum":["cocoa","coffee","rubber","soya","oil_palm","cattle","wood"],"type":"string"},"Changed the definition of "eudr_check_plots" and "eudr_lookup_reference"
⟨8 unchanged words⟩ {"type":"string"},"deforestation_free":{"description":"true when the land measured clean, false when post-cut-off loss was found, and null when the question was not settled — nothing measured, or a commodity Annex I does not cover. Null is not false: it means there is no finding.","type":["boolean","null"]},"engine":{"type":"string"}, ⟨64 unchanged words⟩ "per_plot":{"items":{"type":"object"},"type":"array"},"plots_not_checked":{"description":"Plots that ran out of time before they were measured. Present only when some were. When it is non-empty the verdict is indeterminate by construction, whatever the plots that did come back said — they do not cover the ones that did not.","items":{"type":"string"},"type":"array"},"risk_score": ⟨35 unchanged words⟩
Changed the definition of "eudr_check_plots" and "eudr_set_farm_boundary"
Check up toeightsix production plots for forest loss after 31 December ⟨126 unchanged words⟩
⟨119 unchanged words⟩ a consignment draws on more than one plot. Six at a time answers inside a conversation; a consignment with more plots than that is a compile — use eudr_prepare_dds, which runs as a task.","items":{"additionalProperties":false,"properties" ⟨34 unchanged words⟩ "],"type":"object"},"maxItems":256,"minItems":1,"type":"array"}, ⟨23 unchanged words⟩
Authorization not required, issuer https://eudr.dev
Authorization not required, issuer https://eudr.dev
Authorization not required, issuer https://eudr.dev
Authorization not required, issuer https://eudr.dev
Changed the definition of "eudr_account_usage", "eudr_check_plots" and "eudr_prepare_dds"
⟨10 unchanged words⟩ ,"credits_per_analysis":{"type":"integer"},"credits_per_extra_plot":{"description":"Added for each plot after the first, from per_plot_pricing_from.","type":"integer"},"credits_received":{"type":"integer"},"credits_spent" ⟨9 unchanged words⟩ :{"type":"string"},"organisation":{"type":"string"},"per_plot_pricing_from":{"format":"date","type":"string"},"recent_activity":{"items ⟨17 unchanged words⟩
Only numbers and dates differ: this server embeds live figures in the definition, so the text moves without the contract changing.
⟨165 unchanged words⟩ Added "eudr_create_farm", "eudr_list_farms" and "eudr_set_farm_boundary" (18 tools before, 21 now)
Add a farm, with its boundary if known — 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), fields farther apart kept as separate pieces. With a boundary, what follows runs at once: the country from where the land lies when none is given, the forest record warmed, and the land check when the …
List this organisation's farms — 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.
Set a farm's boundary — 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.
Authorization not required, issuer https://eudr.dev
Authorization not required, issuer https://eudr.dev
Added "eudr_decide_lot" and "eudr_procurement_overview" (16 tools before, 18 now)
Decide whether to buy a banana lot, where to sell it, and up to what price — 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 needed is returned as a stated assumption. Banana only; other crops are refused by name. The run is stored as a decision the organisation can later record an outcome against. Send `lot` in the shape …
Buying decisions across this organisation's farms — 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.
Changed the definition of "eudr_assess_evidence_gaps"
⟨9 unchanged words⟩ description":"Postal address (Article 9(1)(de)).","type":"string"},"commodity ⟨42 unchanged words⟩ description":"Email address (Article 9(1)(de)).","type":"string"},"hs_code ⟨115 unchanged words⟩
Certificate recorded, valid to 2026-12-14
Authorization not required, issuer https://eudr.dev
Changed the definition of "eudr_mitigation_status"
⟨91 unchanged words⟩ on eudr.dev, because Article 11(3) requiresthemitigationreasoningdecisions to beretaineddocumented and demonstrable; eudr.dev records each againstathe namedperson.person who made it, which is our choice rather than the Regulation's wording.
Unknown → Live
First tool surface recorded: 16 tools (server version 0.3.0)
https://eudr.dev/mcp (mcp_streamable_http) — from mcp_registry, with the record
Showing the latest 19 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨20 unchanged words⟩ "enum":["country_risk","commodities","ports","trade"],"type":"string"},"low_risk":{ ⟨25 unchanged words⟩
⟨7 unchanged words⟩ ":true,"title":"Look up country risktiers and, Annex I commodities, ports and trade lanes"}
⟨9 unchanged words⟩ 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.","pattern":"^[A-Za-z]{2}$" ⟨13 unchanged words⟩ I mapping.","enum":["country_risk","commodities","ports"],"type":"string"}},"required" ⟨3 unchanged words⟩
⟨19 unchanged words⟩ kind":{"enum":["country_risk","commodities","ports"],"type":"string"},"low_risk":{ ⟨25 unchanged words⟩
⟨57 unchanged words⟩ the land check. This writes to the organisation'srecord.record, and REPLACES any boundary the farm already had: the previous outline stops being the farm's boundary, and because the boundary decides which land is checked, the compliance answers and the area derived from it change with it. The superseded outline is kept in the farm's history and can be read back, but this call does not undo on its own — confirm with the user before overwriting a boundary somebody else set.
{"destructiveHint":falsetrue,"idempotentHint":false,"openWorldHint":true,"readOnlyHint" ⟨6 unchanged words⟩
⟨71 unchanged words⟩ first. Costs 5 credits from the organisation's wallet (from 30 October 2026, plus 1 for each plot after the first), refunded automatically if the compile fails; every ⟨5 unchanged words⟩
⟨3 unchanged words⟩ geolocation":{"additionalProperties":false,"properties":{"additional_plots":{"description":"Every further plot of the consignment. Each is measured and filed on its own; the consignment is negligible only if every plot is.","items":{"additionalProperties":false,"properties":{"country":{"description":"Only when the plot lies in another country than the consignment's.","pattern":"^[A-Za-z]{2}$","type":"string"},"harvest_window":{"type":"string"},"plot_geojson":{"description":"GeoJSON Polygon, MultiPolygon or Point in WGS84.","type":"object"},"plot_id":{"maxLength":64,"type":"string"},"quantity_kg":{"description":"This plot's share; omitted, the rest of the consignment is split evenly.","minimum":0,"type":"number"}},"required":["plot_id","plot_geojson"],"type":"object"},"maxItems":500,"type":"array"},"country":{"pattern":"^[A-Za-z]{2}$","type":"string"},"country_subregion":{"type":"string"},"harvest_window" ⟨14 unchanged words⟩ or Point in WGS84.","type":"object"},"plot_id":{"description":"The primary plot's own identifier (a field, cadastral or cooperative code).","maxLength":64,"type":"string"}},"required":["country","harvest_window" ⟨152 unchanged words⟩