# Technical documentation.

The reference for the epcis.dev gateway and the npm package of the same name. Three ways in. Pick yours:

- **curl** — `POST /translate`, `/validate` and `/hash` answer on this origin with no
  key and no account: [curl the live doors](/docs/quickstart/curl/).
- **npx** — `npx epcis.dev` runs the same engine on your bench, with the proof fixtures
  shipped inside the package: [60 seconds with npx](/docs/quickstart/npx/).
- **MCP** — one paste wires a client; the same tools answer at `POST /mcp` on this
  origin: [MCP for agents](/docs/quickstart/mcp/).

## The sixty-second proof

Executed 2026-07-31 against the published npm package `epcis.dev@0.1.0`:

```
$ npm i epcis.dev
$ CORPUS=node_modules/epcis.dev/golden-corpus

$ npx epcis.dev validate $CORPUS/valid-standard/object-event-shipping.json
valid	schema=epcis-json-schema.json	version=2.0.1

$ npx epcis.dev hash $CORPUS/valid-standard/object-event-shipping.json
hash	0	ni:///sha-256;e5624abcce4b2fc226743e8891f69c12a07ad508953749d9b9ede6771424f91e?ver=CBV2.0

$ npx epcis.dev translate $CORPUS/xml-translation/object-event-1.2.xml --out out.json
delivered	source=1.2	events=1	fidelity=round-trip-clean
wrote	out.json
```

Three verbs, three verdicts: a validation against the pinned official GS1 EPCIS 2.0.1
schema, the CBV 2.0 §8.9 event hash as an `ni:///sha-256` URI, and a 1.2→2.0
translation delivered round-trip-clean into `out.json` (without `--out`, the full
document JSON prints as stdout line 2). The same engine answers the same three verbs on
this origin — `POST /translate`, `/validate`, `/hash` — with no key.

Transcripts in these docs are executed, never typed: the site build re-runs the cheap
ones against the engine on every build, so a changed engine output fails the build
instead of shipping a stale transcript.

## What's live

| surface | key | what it does |
|---|---|---|
| `POST /translate` | none | EPCIS 1.1 / 1.2 XML in, 2.0 JSON-LD out, a fidelity report per job |
| `POST /validate` | none | the verdict and per-path errors against the pinned GS1 EPCIS 2.0.1 schema |
| `POST /hash` | none | the CBV 2.0 §8.9 event hash, as `ni:///sha-256` URIs |
| `POST /capture` · `GET /events` · `POST /mcp` | capture key | the write half, hosted at `api.epcis.dev` |
| `npx epcis.dev` | none | the same engine on your machine: translate, validate, hash, capture, mcp, conformance |
| `npm i epcis.dev` | none | MIT, no runtime dependencies, the pinned GS1 artifacts and reference vectors inside |

---

