RCO RecordsAllooloo Technologies Corp.
ALLOOLOO · RECORD OF CLEARED ORDERS · AS OF 2026-10-30

RCO — the record of what the agent relied on.

Every read, receipted. Every answer the Allooloo record gives a regulated agent is receipted: one signed receipt per cleared read, chained to the one before, verifiable by anyone against a published key. The receipt is the agent's alibi.

§1 WHAT RCO IS

One receipt per cleared read

RCO — the Record of Cleared Orders — is the record of what an AI agent relied on. When an Allooloo gate clears a read, it writes one receipt to this chain: what was read, in which market, under which rule version, when, and the hash of the answer the agent received. The receipt is signed by Allooloo and chained to the one before it.

  • Door: https://mcp.rco-records.ai/mcp — Model Context Protocol (MCP), streamable HTTP, stateless, JSON-RPC 2.0, typed errors.
  • write_receipt — called by the clearing gate; one bearer token per writer; returns the receipt.
  • verify_receipt — public; by id; returns the receipt and the verification result.
  • Operator: Allooloo Technologies Corp.. One writer: Allooloo's gates.
§2 RECEIPT V1 — THE FROZEN SPEC

Canonical JSON, keys sorted, UTF-8, no whitespace

One receipt per cleared read; writes are idempotent on (writer, subject, subject_type, market, rule_version, cleared_at, answer_hash). Target size under 600 bytes. Fields are only ever added, never renamed or removed; unknown fields are ignored by readers.

FieldMeaning
v1
idrco: + 20-char base32 of the first 100 bits of hash. Derived, never assigned.
seqMonotonic integer across the whole chain.
writerThe gate that wrote it (allooloo).
callerWho asked: a customer key id, or an x402 wallet handle. Stored as sha256 of the value. Empty when unknown.
subjectWhat was read: the identifier (ISIN, LEI, …).
subject_typeisin | lei | gtin | … — open list. Replaces the v0 gtin field.
marketISO country or exchange code of the read.
rule_versionVersion of the rule set the gate cleared under.
cleared_atRFC 3339 UTC, seconds.
answer_hashsha256 of the canonical answer bytes the agent received.
prev_hashhash of the previous receipt (seq − 1).
hashsha256 over the canonical receipt without hash, sig (and id, which is derived from it).
sigEd25519 over hash, by kid.
kidKey id, resolvable at /.well-known/jwks.json.
§3 VERIFY

verify(receipt, jwks) is a pure function

Recompute id and hash, check sig against kid. A receipt verifies forever without asking Allooloo anything. Reference implementations in TypeScript, Python and Go, and the spec, under the MIT licence: github.com/allooloo/rco-records.

§4 HISTORY (V0)

The receipts before 2026-10-29 keep their bytes

Receipts written before 2026-10-29 are version 0: {decision_id, gtin, market, actor_class, rule_version, cleared_at, writer, prev_hash, hash, sig, kid}, hash over the canonical JSON of {actor_class, cleared_at, decision_id, gtin, market, prev_hash, rule_version, writer}. Their bytes and field names are kept forever — the chain hashes over them. Version 1 starts at the first receipt written under Allooloo's key, chained to the last v0 hash: one chain.