# Evidence services: receipts for anything, timestamps for batches

The first two services in the services catalog, productized and callable today. Computed live from the platform state on every read: 0 activity receipts sealed, 0 timestamp batches sealed covering 0 hashes, on a public ledger of 1466 entries. 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.

Data: https://www.a2ally.com/v1/evidence-services · Catalog: https://www.a2ally.com/services · Pricing: https://www.a2ally.com/pricing · Anchors: https://www.a2ally.com/anchors · First receipt: https://www.a2ally.com/sdk/first-receipt

## 1. Receipt-for-anything API

hash + seal any payload, return proof bundle. State: live. Proof bundle fields: 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. Root scheme: 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.
