Say what you will capture.

A capture key is the write half of epcis.dev: capture, query, and the MCP door open with it, and capturedBy — the warrantor the gateway stamps on every event — is the account it names. The calculators — /translate, /validate, /hash — answer on this origin without one.

Two things here: the list that provisions keys, and the interface you can run right now — on this origin, and on your own bench:

Get on the list for a capture key.

Step one is an address and what you mean to point at the door; after it, a handful of optional questions — each one chosen by your previous answer — about what you have actually done, never what you might buy. Keys are provisioned from this list, in order.

What will you capture?

Keys are provisioned from this list, in order. One email when yours is ready — one, not a drip campaign; no newsletter, no sequence. If we stop working on this, you get one message saying so and your address is deleted. Either way it is one message.

Write-only: one address in, no reply-to-book-time, no scheduling link. The list lives on this origin and goes nowhere else. The row is exactly what you give it — address, intent, timestamp, and the answers you choose to type. Nothing derived: no referrer, no user-agent, no analytics.

We answer in writing. We take at most five conversations a month, only when you ask for one, and only after you already have the written read.

Run the interface while you wait.

No key stands in front of the calculators: POST /translate, /validate and /hash answer on this origin, and npx epcis.dev runs the full gateway — capture laws, validation, event hash, error bodies — on your own bench. Audit the rest without asking anyone: the pinned digests on the conformance page — re-hash GS1's artefacts yourself — and the dated ledger.

Validated. Stamped. Hashed. Appended. Keys are provisioned from this list, in order — one email when yours is ready, and only that one.

The dated ledger →