Evidence · Evidence services
Evidence services: receipts for anything, timestamps for batches
The first two services in the services catalog, productized: the Receipt-for-anything API and the Timestamping authority, each callable today at the surfaces named below. So far the ledger has sealed 0 activity receipts and 0 timestamp batches covering 0 hashes, on a public ledger of 1439 entries — every count computed live at this read.
1. Receipt-for-anything API
hash + seal any payload, return proof bundle. State: live. Hash and seal any action and get back a proof bundle: receipt id, ledger_seq, commitment, public ledger entry URL, private opening readback.
- POST /v1/me/activity-receipts (account key) — hash and seal any action as a receipt; carry the action record itself as its SHA-256 in the optional action_sha256 field so the record stays private
- GET /v1/me/activity-receipts/{id} (account key) — the private opening readback for one of this account's receipts
- GET /v1/me/activity-receipts/{id}/export (account key) — export one receipt's evidence bundle
- POST /v1/receipts (account key) — issue a signed Rights Receipt for one asset and use
- POST /v1/receipts/batch (account key) — issue Rights Receipts in a batch
- POST /v1/receipts/verify (free, no key) — verify a Rights Receipt
- MCP record_action (account key) — record an action and seal its receipt through the MCP tool
A receipt's proof bundle names the receipt id, its ledger_seq and its commitment, points at the public ledger entry URL, and opens through the private opening readback held by the receipt's own account. The public ledger payload names the action type only; the summary, counterparty and any action hash stay in the private opening.
2. Timestamping authority
RFC-3161-style trusted timestamps, bulk API. State: live. Seal a batch of hashes in one ledger entry: the batch root scheme is root_sha256 = SHA-256 hex of the submitted lowercase hex hashes joined with "\n", in submitted order. Limits: at most 100 hashes per batch.
- POST /v1/timestamps/batch (account key) — seal a batch of up to 100 SHA-256 hashes in one ledger entry committing to the batch root
- GET /v1/timestamps/{batch_id} (account key) — the owner readback for one of this account's timestamp batches, with its private opening
- GET /v1/ledger/verify (free, no key) — recompute and verify the whole ledger
- GET /v1/ledger/entries/{seq} (free, no key) — read one public ledger entry with its inclusion proof
- GET /anchors (free, no key) — the Bitcoin anchoring state of sealed blocks
a2ally is not a qualified RFC 3161 timestamp authority. A timestamp here is the ledger seal time of an entry committing to the batch root, with blocks later anchored to Bitcoin via OpenTimestamps; it proves the hashes were recorded by the seal time — not that the underlying content is true, nor when the content was created.
For agents
These services as data: GET /v1/evidence-services. The full catalog: /services. Pricing: /pricing. Anchoring: /anchors. Seal a first receipt: /sdk/first-receipt. Verification stays free and needs no key.
Every number in this document is computed live from the platform state at the moment of the read — the usage counts from ledger_commitments and the ledger head from the ledger itself. Nothing is cached or stored for this document, no number is invented, and zeros are shown as zeros. Nothing in these services is charged today; verification is free and needs no key. Markdown twin: /evidence-services.md.
