visibility.cloud

Four narrow doors.
One layer that composes them.

Each .dev door does one thing completely, and you can use it right now without talking to anyone. visibility.cloud is the layer above them, where they compose into one record you can ask questions of — and it is the only surface in the family that carries a contract.

visibility.cloudcomposes across all four, and carries the contract

One event record: every door writes and reads the same one.

barcoding.dev

the barcode layer

It reads and writes identity on the symbol — GS1, VIN, ISBN, UDI, NDC, SSCC — and names the source and license on every answer.

POST, JSON body {"payload":"…"}. No key, no account.

VerbCodeWhat it answers
resolve200any identifier-bearing string → scheme, canonical form, parsed fields
verify200check digit, structure and prefix legitimacy, from pinned tables
generate200the write-side twin of resolve — id + AI map → element string, Digital Link URI, rendered symbol
serialize200one serial, derived from the request with no stored counter
pins200the pinned artifact and data-source digests
version200package, engine-core and pin-set versions
decode400a frame → what the barcode says; it takes an image, so an identifier string is refused in its own vocabulary

epcis.dev

the event engine

It is the spine: every event validated against GS1's pinned official schema, stamped at the door, hashed by the standard's own hash, append-only.

POST, no key. Capture and query run on api.epcis.dev with a capture key.

VerbCodeWhat it answers
translate200EPCIS 1.1/1.2 XML → 2.0 JSON-LD with a per-job fidelity report
validate200a verdict against the sha256-pinned official GS1 EPCIS 2.0 schema
hash200the CBV 2.0 §8.9 event hash, as an ni:///sha-256 URI
events200the keyless demo collection — clearly-labeled seed records, not your data
capture401the write door on api.epcis.dev
events401the query door on api.epcis.dev
mcp401the agent door on api.epcis.dev

transactions.dev

the paperwork layer

Purchase orders, ASNs and invoices — X12, EDIFACT or API-native — compiled onto the same event record in the standard's own vocabulary.

A CLI, an MCP server and an SDK in one package; it runs where you run it.

VerbCodeWhat it answers
join405the document and the events it covers, matched
reconcile405what was ordered against what actually moved

worklists.dev

the work layer

A task is the causal parent of the events that satisfy it, so the record reads this was scanned because this task said to — and complete takes an event hash rather than a boolean.

VerbCodeWhat it answers
/200the door, and its markdown twin
/openapi.json404not published
/.well-known/agents.json404not published

This origin's own surface.

The composition layer is not a brochure over four APIs — it answers on its own addresses too, and it is where the cross-source rollup and the commercial relationship live.

AddressCodeWhat it answers
GET /limits200the rate and size limits, as a document an agent can plan against
POST /waitlist303the address door; it answers a redirect, by design, to the page that renders the outcome
POST /flow303the interview, machine-callable — the same instrument the human flow walks
GET /.well-known/agents.json200the capability card
GET /openapi.json200the description
GET /pricing200what costs money, in what unit
GET /traces200the answer this surface sells, described
GET /family.json200the four doors as typed edges, so an agent at one finds the rest as contracts

Everything this layer holds will be readable as Apache Iceberg, and it will federate the Iceberg tables you already have rather than asking you to copy them here.

See your first trace.

Every door above answers without an account. When the question stops fitting inside one of them, that is what this layer is for.