Card snapshot
eudr.dev
·
2026-09-22 08:00:35 UTC
·
9f0bdbd5375c8a8b1236029bab2da1a5c6843e9c0d0cfd7a8c7e727b914ca1d9
This is a frozen copy of the agent's agent-card.json as we observed it at the timestamp above. We capture a new snapshot every time the card's content hash changes. Useful for: forensic drift analysis, verifying downstream callers see the right version, reproducing routing decisions made historically.
{
"protocolVersion": "0.3.0",
"schema_version": "a2a/1.0",
"version": "0.3.0",
"name": "eudr.dev",
"description": "Compiles EU Deforestation Regulation Annex II Due Diligence Statements from operator + supplier + plot geolocation. Built on emem.dev (content-addressed, ed25519-signed Earth observation). Receipts verifiable offline. Ingests scenarios from CSV and GS1 EPCIS 2.0; exports receipts to the official TRACES NT v2 XML / SOAP shape.",
"url": "https://eudr.dev",
"provider": {
"organization": "Vortx \u00b7 emem.dev",
"url": "https://emem.dev"
},
"identity": {
"did": "did:web:eudr.dev",
"pubkey_b32": "rc6pbb6bxrfhpt4jr6yhmklkjubresa4kc4uofdxp33qncmpi2vq",
"pubkey_b64": "iLzwh8G8SnfPiY+wdilqTQMSSBxQuUcUd373BomPRqs="
},
"capabilities": {
"streaming": true,
"push_notifications": false,
"state_transition_history": true,
"task_states": [
"submitted",
"working",
"input_required",
"auth_required",
"completed",
"failed",
"canceled",
"rejected"
],
"transports": [
"http+jsonrpc",
"http+sse"
],
"jsonrpc_methods": [
"SendMessage",
"SendStreamingMessage",
"GetTask",
"ListTasks",
"CancelTask",
"SubscribeToTask",
"GetExtendedAgentCard"
]
},
"preferredTransport": "JSONRPC",
"additionalInterfaces": [
{
"url": "https://eudr.dev/a2a/rpc",
"transport": "JSONRPC"
}
],
"interfaces": [
{
"protocol": "mcp",
"transport": "streamable-http",
"url": "https://eudr.dev/mcp",
"versions": [
"2026-07-28",
"2025-11-25",
"2025-06-18",
"2025-03-26",
"2024-11-05"
],
"auth": "none",
"note": "Dual-era Model Context Protocol. Answers both the `initialize` handshake and the stateless per-request form with `server/discover`. POST only."
},
{
"protocol": "a2a",
"transport": "http+jsonrpc",
"url": "https://eudr.dev/a2a/rpc",
"versions": [
"a2a/1.0"
],
"auth": "anonymous",
"note": "Agent-to-Agent task envelope. NOT an MCP endpoint: an MCP client pointed here gets `method not found`."
}
],
"securitySchemes": {
"apiKey": {
"type": "http",
"description": "A bearer API key from the operator's dashboard. The honest instrument for a headless agent, which has no user-agent to redirect and for which a browser flow is not merely awkward but structurally uncompletable.",
"scheme": "bearer"
},
"oauth2": {
"type": "oauth2",
"description": "OAuth 2.1 with PKCE against this service's own authorization server. No third-party identity provider is involved. `eudr:read` covers checks and reading your own records; `eudr:write` is needed to compile and sign a statement.",
"flows": {
"authorizationCode": {
"authorizationUrl": "https://eudr.dev/oauth/authorize",
"tokenUrl": "https://eudr.dev/oauth/token",
"scopes": {
"eudr:read": "Check plots, read reference data, verify receipts, read your own statements",
"eudr:write": "Compile and sign an Annex II Due Diligence Statement"
}
}
}
}
},
"security": [
{
"oauth2": [
"eudr:read"
]
},
{
"apiKey": []
}
],
"documentationUrl": "https://eudr.dev/docs",
"iconUrl": "https://eudr.dev/console/assets/icon-192.png",
"supportsAuthenticatedExtendedCard": false,
"authentication": [
"anonymous",
"bearer"
],
"payment_methods": [],
"pricing": {
"mode": "paid",
"note": "Prepaid credits, one credit to one euro. Only eudr.compliance.dds.compile is charged, at 5 credits; every other skill is free and stays free. An organisation is granted 100 credits on sign-up, which covers 20 statements, and buys more at eudr.dev. A compile that fails is refunded automatically. Callers with no account may compile the demo scenarios published on the homepage, free and without credentials; any other plot needs an account."
},
"skills": [
{
"id": "dds-compile",
"name": "Compile a Due Diligence Statement",
"description": "Compile an Annex II Due Diligence Statement from a scenario (operator + supplier + product + plot geolocation). Runs the 7-stage pipeline: geo \u2192 forest \u2192 legality \u2192 tenure \u2192 risk \u2192 dds \u2192 settle. Forest stage is polygon-fully-sampled (max 51 200 cells per plot at ~91 m\u00b2 per cell; smallholder plots get ~110 cells, 30-ha plots ~3 000) so the verdict is per-cell-counted, not area-projected. Returns a signed Annex-II-shaped document plus the chain of ed25519-signed source CIDs from emem.dev, four content-addressed manifest CIDs (algorithms_cid, bands_cid, schema_cid, registry_cid) for offline replay, and the upstream-signed statement_of_compliance attributing the operator block (Annex II \u00a71). The printable report additionally surfaces nine emem-algorithm-backed forensics panels: foundation-encoder change consensus since 2020, cross-modal S1\u2a02S2 consistency, wildfire & burn history, wetland binary (Art. 2(13)), EO harvest-date detection, land-degradation trend, canopy chlorophyll (NDRE), soil moisture (SAR), soil organic carbon (S2+DEM).",
"inputModes": [
"application/json"
],
"outputModes": [
"application/json",
"application/dds+json"
],
"examples": [
"Compile the Annex II statement for this cocoa consignment from Soubr\u00e9.",
"I have the plot boundaries and the supplier details \u2014 produce the filing document.",
"Build a signed due diligence statement I can hand to my importer."
],
"taskType": "eudr.compliance.dds.compile",
"priceEur": 5.0,
"priceAtomicX402": 5000000,
"partialRefundOnBlock": true,
"tags": [
"eudr",
"compliance",
"annex_ii"
]
},
{
"id": "plot-check",
"name": "Check a plot for deforestation since the cut-off",
"description": "Per-plot deforestation verdict via emem.dev /v1/eudr_dds \u2014 Hansen GFC + ESA WorldCover, optionally cross-checked against the JRC GFC2020 v3 baseline. Returns a per-cell verdict matrix with fact CIDs. Subset of `dds.compile` \u2014 runs only the forest stage.",
"inputModes": [
"application/json"
],
"outputModes": [
"application/json"
],
"examples": [
"Was there forest loss on this polygon after 31 December 2020?",
"Check these four coffee plots in Ethiopia against the EUDR cut-off.",
"Is this land deforestation-free under Article 3(a)?"
],
"taskType": "eudr.deforestation.plot_check",
"priceEur": 0.0,
"priceAtomicX402": 0,
"partialRefundOnBlock": false,
"tags": [
"eudr",
"deforestation"
]
},
{
"id": "legality",
"name": "Look up a country's EUDR risk tier",
"description": "Country-tier + supplier-identifier verification against Commission Implementing Regulation (EU) 2025/1093. Decides whether Article 13 simplified due diligence applies. The baseline module does not verify tenure, permits, or FPIC \u2014 plug a partner provider via the `LegalityProvider` trait for those.",
"inputModes": [
"application/json"
],
"outputModes": [
"application/json"
],
"examples": [
"What risk tier is C\u00f4te d'Ivoire under the country benchmarking?",
"Does simplified due diligence apply to timber from Romania?",
"Which countries on my supplier list are classed high risk?"
],
"taskType": "eudr.legality.country_check",
"priceEur": 0.0,
"priceAtomicX402": 0,
"partialRefundOnBlock": false,
"tags": [
"eudr",
"legality"
]
},
{
"id": "verify-receipt",
"name": "Verify a signed statement offline",
"description": "Re-derive the CID and verify the ed25519 signature on a receipt issued by this agent. Runs offline; the only network call needed is a one-time fetch of the agent's pubkey.",
"inputModes": [
"application/json"
],
"outputModes": [
"application/json"
],
"examples": [
"Check that this receipt CID really was signed by eudr.dev.",
"A supplier sent me a due diligence statement \u2014 is the signature genuine?",
"Verify this statement without trusting the party who gave it to me."
],
"taskType": "eudr.receipt.verify",
"priceEur": 0.0,
"priceAtomicX402": 0,
"partialRefundOnBlock": false,
"tags": [
"eudr",
"audit"
]
},
{
"id": "traces-export",
"name": "Export a statement as TRACES NT submission XML",
"description": "Convert a signed DDS receipt into the official TRACES NT v2 XML shape (namespace http://ec.europa.eu/tracesnt/certificate/eudr/submission/v2) or into a complete SOAP+WS-Security envelope ready to POST to the EU Information System. Accepts an activity type (IMPORT, EXPORT, DOMESTIC, TRADE). The CLI command `eudr export-traces` is the offline path.",
"inputModes": [
"application/json"
],
"outputModes": [
"application/xml"
],
"examples": [
"Give me the TRACES NT XML for this statement.",
"Export the filing document in the official EU Information System format."
],
"taskType": "eudr.traces.export",
"priceEur": 0.0,
"priceAtomicX402": 0,
"partialRefundOnBlock": false,
"tags": [
"eudr",
"submission",
"traces"
]
},
{
"id": "monitor-subscribe",
"name": "Watch a plot for new forest loss",
"description": "Subscribe to continuous monitoring on a filed plot. The agent re-runs the deforestation check on a cadence (default monthly) and emits a SignedReceipt-shaped event when a new Hansen loss year appears on any sampled cell post-cut-off. Re-attestation under Art. 8(2). Pricing is per re-check; the first check after Hansen's annual update is free.",
"inputModes": [
"application/json"
],
"outputModes": [
"application/json"
],
"examples": [
"Tell me if anything changes on this plot after I have filed.",
"Keep watching these plots and alert me on new loss."
],
"taskType": "eudr.monitor.subscribe",
"priceEur": 0.0,
"priceAtomicX402": 0,
"partialRefundOnBlock": false,
"tags": [
"eudr",
"monitoring",
"art-8-2"
]
}
],
"defaultInputModes": [
"application/json"
],
"defaultOutputModes": [
"application/json",
"application/dds+json",
"text/event-stream"
],
"regulation_anchors": [
"Regulation (EU) 2023/1115",
"Regulation (EU) 2025/2650 (Dec 2025 amendment \u2014 12-month delay + simplifications)",
"Commission Implementing Regulation (EU) 2025/1093 (country benchmarks)",
"EUDR Information System (TRACES NT)",
"Regulation (EU) 2024/1689 (AI Act) Art. 50 transparency"
],
"ai_system_disclosure": {
"is_ai_system": true,
"notice": "You are interacting with an AI system. eudr.dev is an autonomous AI agent that compiles due-diligence evidence into signed, offline-verifiable receipts. Its outputs are evidence summaries, not legal advice; the human operator remains responsible for the due-diligence statement they file.",
"regulation": "Regulation (EU) 2024/1689 (AI Act), Article 50(1)",
"provider_role": "Downstream deployer of AI-assisted Earth-observation pipelines; not a general-purpose AI model provider; not an Annex III high-risk use.",
"human_oversight": "Verdicts are reproducible from the signed per-cell evidence chain; a non-negligible or indeterminate result is never auto-filed, and TRACES submission is the operator's act under their own EU Login identity."
}
}