The workflow a user, an AI agent, or an auditor walks through when they interact with eudr.dev. The page focuses on what happens, not how it's coded; the code lives behind a closed runtime. The open-source story sits one layer down at emem, the Earth-memory protocol that supplies every signed per-cell fact this agent cites. For logic, algorithm, or wire-format questions, refer to emem.
| Input | Output |
|---|---|
| A scenario (operator, supplier, product, geolocation) in JSON, with at least: HS code, country of production, plot polygon (or point for cattle / plots ≤ 4 ha), harvest window. | A signed Annex II Due Diligence Statement (JSON + printable PDF), with a per-cell evidence chain to emem, an ed25519 signature anchored as a CIDv1, and a TRACES-NT-v2-shaped XML export when the operator runs eudr export-traces. |
The DDS verdict is one of negligible, non_negligible, not_in_scope, or indeterminate. Only negligible is filable under Art. 4(1). The other labels still produce a signed document so the operator's records carry the assessment.
Every DDS compile walks through seven stages. Each one emits a structured event over SSE so a live client can render progress; each one lands verbatim in the final receipt's stage_traces.
scenario JSON
│
▼
┌─────────────────┐ Polygon → centroid → emem cell64.
│ 1. geo │ Smallholder flag (≤ 5 ha), OGC-simple check,
│ │ plot-area computation.
└─────────────────┘
│
▼
┌─────────────────┐ Per cell: Hansen GFC loss-year,
│ 2a. forest │ ESA WorldCover 2021 class,
│ │ JRC GFC2020 baseline, RADD alerts.
└─────────────────┘ Verdict per cell + fact CIDs.
│
▼
┌─────────────────┐ Per cell: NDVI, NDRE, NDMI, S1 backscatter,
│ 2b. snapshots │ JRC GSW recurrence. Per plot: soil
│ │ (SoilGrids), weather (met.no), elevation
│ │ (Cop-DEM). Tolerant of partial outages.
└─────────────────┘
│
▼
┌─────────────────┐ Implementing Reg. (EU) 2025/1093 country
│ 3. legality │ tier (low/standard/high).
│ │ Art. 13 simplified-DD flag.
└─────────────────┘
│
▼
┌─────────────────┐ Tenure / FPIC / labour-rights plug-in.
│ 4. tenure │ Empty in the baseline module; partner
│ │ providers extend it.
└─────────────────┘
│
▼
┌─────────────────┐ Composite risk score 0–1.
│ 5. risk │ Verdict: negligible / non_negligible /
│ │ not_in_scope / indeterminate.
└─────────────────┘
│
▼
┌─────────────────┐ Annex II JSON document. Operator block,
│ 6. dds │ product block, geolocation array, declaration
│ │ text, signature placeholder.
└─────────────────┘
│
▼
┌─────────────────┐ Pay-on-pass settlement record (free during
│ 7. settle │ the public preview; PayPal or x402 USDC when
│ │ paid mode is enabled).
└─────────────────┘
│
▼
signed receipt (JSON envelope + CIDv1 + ed25519 signature)
Stage 2a is the heavy emem call: ~30–90 seconds depending on plot size. Everything else completes in seconds (or microseconds, for the local-computation stages).
| Interface | Audience | Endpoint |
|---|---|---|
HTTP /v1/ | AI agents (LangChain, CrewAI, custom JSON-RPC clients) | POST /v1/dds/generate, POST /v1/spatial/verify, POST /v1/receipt/verify, GET /v1/reference/{countries,commodities} |
| A2A JSON-RPC | Agent-to-agent flows over the A2A v1.0 protocol | POST /a2a/rpc with method SendMessage / GetTask. Agent card at /.well-known/agent-card.json. |
| MCP (stdio) | Local AI tooling (Claude Desktop, Cursor, Continue, Cody, Zed) | eudr-mcp binary; install snippet at /.well-known/mcp.json. |
| Browser console | Humans filing a single shipment by hand | / home page → Human mode → form + sample picker. |
All four converge on the same compile pipeline. The agent card and the OpenAPI spec (at /openapi.json) advertise the same tools with the same semantics so AI agents see one consistent surface regardless of transport.
A single Due Diligence Statement carries two independent signatures that an auditor can verify offline:
raw 0x55 + multihash blake3-256 0x1e, encoded base32-lower with the multibase 'b' prefix), and signed with ed25519 over the CID bytes. The signer's public key is published at the agent card's verification_method[0].publicKeyMultibase.source_receipts.emem.per_cell[].fact_cids[]. Dereference any of them at https://emem.dev/v1/facts/<cid> to retrieve the pre-image and re-hash.The two layers are independent. Even if eudr.dev's signing identity ever rotates, the emem facts under a historical receipt remain verifiable from emem.dev's side. The verification procedure for both layers is detailed in /docs/audit/verify-offline.
| Data | Where it lives | Retention |
|---|---|---|
| Working task (in-flight compile) | Process memory + SQLite | EUDR_TASK_RETENTION_DAYS (default 7 days). |
| Audit log | SQLite, pseudonymised via BLAKE3 + per-instance salt | Indefinite (Art. 17(3)(b) legal-obligation basis). |
| Signed receipts | Operator's own archive | 5 years per Art. 12(5). The engine does not hold a copy after retention. |
| Per-cell evidence | emem.dev's content-addressed store | Persistent on emem's side, not in eudr.dev. |
| Operator PII | Only as long as the task is live | Erased on DELETE /a2a/tasks/{id} or on retention sweep. |
| Open source? | Where | |
|---|---|---|
| emem | Yes | github.com/Vortx-AI/emem. The Earth-memory protocol, the responder, the materializer set, the wire format, the verification primitives. |
| eudr.dev | No | Independent AI agent operated by Vortx AI Private Limited. The compile pipeline and the HTTP surface are a closed runtime; the receipts they produce are still offline-verifiable using the open primitives below. |
| Receipt verification primitives (BLAKE3, ed25519, CIDv1, JCS-canonical JSON) | Open | Industry-standard, multiple open implementations. The verifier needs no eudr.dev code. |
| Annex II shape | Open (regulator) | Defined by Reg. (EU) 2023/1115 as amended by Reg. (EU) 2025/2650. |
If you want to read code (the algorithms, the wire shapes, the responder logic) that's all at emem. eudr.dev composes those into a Reg. (EU) 2023/1115-shaped surface and signs the resulting DDS under its own DID.