Translate

Ten years of vendor XML,
translated.

POST an EPCIS 1.1 or 1.2 XML document and get EPCIS 2.0 JSON-LD back, with a fidelity report for the job: every source path that has no home in 2.0 is named, so loss is declared, never silent. No key, no account.

curl -sS https://epcis.dev/translate \
  -H 'content-type: application/xml' \
  --data-binary @receiving-1.2.xml
200 application/json
spine-translation-fidelity: round-trip-clean
spine-translation-lossy-paths: 0
{
  "type": "OK",
  "document": {
    "type": "EPCISDocument",
    "schemaVersion": "2.0",
    "epcisBody": { "eventList": [ … ] }
  },
  "fidelityReport": { … },
  "sourceSchemaVersion": "1.2"
}

The fidelity report is the contract.

Every job returns a report beside the output. roundTripClean is computed by recomputation: every source leaf must be accounted for in the output, and a miss fails the job. lossyPaths names every source path with no standard 2.0 home.

fidelityReport
{
  "roundTripClean": true,
  "lossyPaths": []
}

Three ways in, one engine.

  • POST /translateNo key.Translates and returns. You decide whether to capture.
  • POST /capture/xmlCapture key.Translates and captures in one call, under the gateway laws.
  • translateMCP tool, readOnlyHint: true.The same engine in an agent's toolchain.

Get a capture key.

Translate, validate and hash run here with no key. Capture, query and MCP open with a capture key.