Tanilo

Pre-action verification

Tanilo checks the premise
before an AI agent acts.

Permission decides what an agent may do; it doesn't establish whether the premise behind the action is sound.

Free during the beta.

verify — receipt.json

Replay of a real receipt issued by /evaluate on 2026-10-02, not a live query.

Verify a receipt yourself

shell
pip install tanilo-receipt-verify
curl -s https://raw.githubusercontent.com/TKCollective/tanilo-receipt-spec/a565999/examples/live-receipts/evaluate-demo-2026-10-02.json -o receipt.json && curl -s https://tanilo.io/.well-known/jwks.json -o jwks.json
python3 -c "import json; from tanilo_receipt_verify import verify; r=verify(json.load(open('receipt.json')), jwks_by_issuer={'https://tanilo.io/.well-known/jwks.json': json.load(open('jwks.json'))}); print(r.status, r.canonical_sha256)"

✓ valid sha256-baac7b81… — the signature checks out against the published key set, no network call in this step

A valid signature shows the bytes are unchanged since signing and were signed by that key; it does not show that the claim is true. History of this check

How it works

Claim in. Checked. Receipt out.

01

You supply the terms

A term here is either one price per unit, or prices selected by quantity.

02

We check it first

Before the agent pays, the offered price is compared with your terms.

03

A signed receipt is issued

A result is returned as a signed receipt when signing succeeds.

04

Anyone can check the signature. Offline.

Against the published keys; retired keys stay published.

Product

What's live

Changelog

Contract price check

Before an agent pays, compare the offered price with the agreed terms you supply. The rule and its tests are public.

Contract price check

Signed receipts

Keep a record of what was checked and the result. A result is returned as a signed receipt when signing succeeds.

Verify a receipt

Anchoring

Show that a receipt's payload existed by a given time. Queued receipt hashes are combined into Merkle roots published on-chain, currently run once a day.

Anchoring

Open-source receipt verifier

Check a receipt's signature yourself, on your own machine. Verification runs offline against our published public keys.

PyPI verifier

A valid signature shows the bytes are unchanged since signing and were signed by that key; it does not show that the claim is true.

Pilot

Free 30-day pilot.

A free 30-day pilot on one workflow, with an agreed cap on offer volume. We start with historical or synthetic offers; live shadow mode begins only after data handling is agreed in writing.

For procurement and payment teams whose AI agents or automated workflows buy, renew or pay against negotiated agreements.

  • One workflow
  • An agreed offer-volume cap
  • Shadow mode first

No pilot-support fee for this initial 30-day pilot within the agreed scope. We ask for structured feedback and permission to discuss a potential case study; any publication, attribution or use of your name or logo requires your written approval. Extensions and additional work are agreed separately.

Start a pilot conversation

Trust

What you can check yourself.

IETF Internet-Draft — Filed

draft-krausz-verification-state
individual submission on the IETF datatracker

View on datatracker

Reruns

One builder reproduced our canonical receipt bytes on shared test files; two independent checkers have been run against our evidence-pinning tests.

Trust