Built on Algorand  ·  Powered by x402

From task to proof. On-chain. Forever.

Captre is a provenance ledger for AI outputs. Submit a task, attest the output, record an evaluation — every step anchored on Algorand via x402, every identity proven by the wallet that paid.

$0.01
Submit task
$0.01
Attest output
$0.01
Record evaluation
x402
Payment protocol
01
Task → Output → Evaluation
Three linked on-chain records form the full provenance chain. Each reference is verified by the contract before writing.
02
Identity proven by payment
Every x402 payment carries the payer's Algorand address. Submitter, attester, and evaluator identity are all wallet-proven — never self-reported.
03
Policy hash, not labels
Evaluations store sha256:<policy_doc> — an immutable commitment to the exact ruleset used. Not a version label that can be reused.
04
Fully on-chain, no database
All records live in Algorand Box Storage across three contracts. Read any record from any Algorand node — no Captre trust required.
How it works

Three contracts.
One chain of proof.

Each step is a separate x402 payment. The payer's wallet address becomes the on-chain identity for that step — no signup, no API keys.

01
POST /submit-task — $0.01
Register the task on-chain. The SHA-256 of the content is stored in TaskApp. Your wallet address becomes the task author.
02
POST /attest — $0.01
Anchor the output hash in CaptreApp, linking it to the task. First-claim — once attested, the hash is permanently yours.
03
POST /evaluate — $0.01
Record the evaluation in LedgerApp. Supply policy_hash (SHA-256 of your policy doc) and evaluation_result. The contract cross-calls both upstream contracts to verify the chain before writing.
Interactive demo

Try it live

Simulate the full attestation flow end-to-end — attest, verify, look up by ID, and revoke. The free endpoints hit the real API; paid endpoints are safely mocked.

Simulated — /attest requires a real x402 payment ($0.01 USDC on Algorand). This demo calls a mock that behaves identically to the real endpoint, letting you see exactly what request and response look like without spending funds.
Simulating x402 payment + box write…
// Waiting for input…
Live — calls the real GET /verify endpoint on your running server. Free, no payment required.
Querying on-chain box storage…
// Waiting for input…
Live — calls the real GET /attestation/{id} endpoint. Accepts a UUID attestation_id or a raw content_hash. Free, no payment required.
Resolving id_index on chain…
// Waiting for input…
Simulated — /revoke requires an x402 payment and only the original author can revoke. This demo mocks the payment and uses the attestation_id from your last simulated attest. In production the payer address must exactly match the stored author.
Simulating x402 payment + revoke box update…
// Waiting for input…
Full simulation — runs the complete lifecycle automatically: Agent A attests a hash → Agent B looks up the proof → Agent B verifies it → Agent A revokes. Watch the log to see each step with realistic timing.
Running…
// Press "Run full flow" to start the simulation.
Quick start

Try it with curl

Verify by content hash — Free
curl "https://captre.onrender.com/verify\
  ?content_hash=sha256:YOUR_HASH"
Retrieve by UUID — Free
curl "https://captre.onrender.com/attestation\
  /YOUR_ATTESTATION_ID"
Full API Reference →
Honest positioning — Captre proves the chain of custody: who submitted the task, who attested the output, and who evaluated it — all proven by x402 wallet signatures. It does not prove original creation or authorship of the underlying content. Once a hash is claimed the record is permanent — revocation does not reopen it to new claimants.