Tersign head asking… ledger asking Shows this page's sections as plain markdown, built in your browser from the page itself. The agent manifest is https://tersign.ai/llms.txt.

On independence

A log about yourself isn't evidence.

Every record an agent keeps about its own conduct is testimony from an interested party. It can be complete and carefully signed, and still be the keeper's own word about the keeper. What a self-issued record cannot produce is a second signature from a party outside the deal. Tersign is that second signature, numbered and anchored in time so anyone can check it without trusting the keeper.

A Tersign record attests that these exact bytes reached the ledger, in what order, and no later than its anchor's time. Whose signature they carry is yours to check against a key you trust. Never that the content is true.

When someone disputes your record, they ask two questions.

Question one: independence

Was it signed by someone independent of both sides?

Independent means not a party, not acting for one, and not under common control with either side or anyone acting for one. That is a fact about who controls the key and how that entity relates to each side, so no key or signature can show it; it is checked outside the record. It does not mean the signer saw the act.

Question two: checkability

Can I check it without trusting the party that kept it?

That takes a counter-signature, a numbered sequence and an anchored time, so each claim can be recomputed. A published opinion fails here: to believe it, I still have to trust whoever published it.

On the first question, Tersign is a party to none of the customer transactions it records: it hosts no agent, relays no request and moves no payment for either side, and counter-signs what a party submits without seeing the act. No customer owns Tersign or holds its signing key. That is a fact about us, not about a signature, so check it as you would any counterparty's, outside the record. On the second, every record Tersign signs can be checked with our code or anyone's. The signature covers what reached the ledger and when, not what happened outside it. Two things still rest on us: that the address at /v1/ledger is ours, and that we keep one history per chain. Records never submitted are outside every check.

Four properties a reader checks.

Each is written as a disqualification, what a record must not be read as. The open conformance suite, which anyone can run, tests each with two-sided vectors as far as bytes can show it. Who controls a key, and whether anyone saw the act, are not in the bytes: no vector tests them, and an accepting vector does not establish them.

  • Independence: a matter of control, not of a signature.

    A record composed and signed only by the payer, the payee or their operators shows what those parties assert, not that an outside party would concur, and a second key or process run by the same operator does not change that. Tersign counter-signs as a party to neither side of a customer record. It is on both sides only of its own records: the genesis demo; test records, which no published figure counts; and the prober's daily census commitments, which no organic figure counts and whose only outside parties are the time anchors that date them.

  • Completeness: a record removed later shows.

    A sequence the issuer numbers itself shows order, never that nothing was taken out: delete a record and renumber, and it still looks clean. A sequence numbered by the counter-signer, under an anchored commitment, makes a record removed later visible to anyone who holds the chain. Records never submitted are outside it.

  • Existence in time: the clock is not the keeper's to move.

    A signature shows integrity, not when a record came into being. Tersign anchors chain commitments with independent time anchors, so "existed no later than" the anchor's time is checkable with public tools. The anchor log

  • Phase separation: funding is not delivery is not settlement.

    A record of one economic phase says nothing about a later one. A funding receipt is not proof of delivery, and a delivery attestation is not proof of settlement. The conformance suite rejects a record of one phase presented as another.

The harder task is to demonstrate, not to assert.

A record you keep about yourself demonstrates your record-keeping. It cannot demonstrate the fact to a party who assumes you are interested, because you are.

Rules, contracts and counterparties tell a business what it must do. Showing that it did so, to a party that does not have to take its word, is a separate task.

Tersign supplies the part a self-kept log cannot: a second signature, a number in a sequence, and a time. We are a data provider, not a law firm. An export is formatted for a named use, and its value is that the reader can check it independently; it is never a compliance certification.

Some evidence can only be gathered at the time.

Tersign's prober observes x402 endpoints listed for public discovery, as a party to none of their transactions, and keeps each endpoint's observations as its own hash chain. Observations cannot be made after the fact: whoever starts watching later sees the endpoints as they are then, not what they served before.

Its counts are public at https://prober.tersign.ai/v1/prober/stats and live on the home page. Each observation records what an endpoint served to the prober's own request; it shows nothing about that endpoint's transactions with anyone else.

Don't trust this page. Run it.

One record on the ledger is public by design. Ask the ledger for its counter-signed record and its position in the chain, with no account. This step is the ledger's own answer; the offline check follows.

npx tersign verify 0xe5874f1ffe87f0a6dd9eb157730f67b86ee4538b125fe30fcc4e165213dd3fc4 --ledger https://tersign.ai

To recompute the content address from raw bytes, GET /v1/genesis returns the record: save its artifact object to a file, and npx tersign verify <file> recomputes the digest and recovers the seller's signature fully offline. The genesis record is a self-signed demo: Tersign signed it as seller and named its own key as payer, so its EIP-712 payload signature (domain {name: "x402 receipt", version: "1", chainId: 1}, per the x402 offer-and-receipt extension) recovers to the payload's own payer, 0x36f82906859E5B0bd076069f8cdfAea355358b14; /v1/genesis carries the recipe for each of its signatures. The conformance suite, which needs only Python's standard library, does the same without importing Tersign's SDK or calling the ledger, and /v1/anchors carries the anchor proofs (ots info proof.ots, offline).

Rewrite the files, and see what fails.

The claim-file drill holds one synthetic evidence archive in three states: as written, with the last record deleted, and with the last record moved one hour earlier and re-signed with the holder's own key, each time after the holder rewrote every file it controls. The holder has every file and its own key, but not the counter-signer's key, so both edits fail and the archive as written passes. Its keys are published test keys, so that PASS is integrity-only; the drill's README lists what a PASS does not show.

The clone needs git and the network once; the checks then run offline, with Python 3 alone
git clone --depth 1 https://github.com/tersignhq/claim-file-drill
cd claim-file-drill
python3 verify/verify_bundle.py intact
python3 verify/verify_bundle.py record-omitted
python3 verify/verify_bundle.py back-dated

Each run ends with this verdict line, as the drill's README gives it:

  • intactVERDICT: PASS (integrity-only) — the bundle is internally consistent, but signer identity was read from the bundle itself. Its ledger key is a published test key (SIGNER above), so no --signer value establishes authorship of this archive.
  • record-omittedVERDICT: FAIL (1): anchors.leafForCommitment
  • back-datedVERDICT: FAIL (2): record[4].countersig, anchors.leafForCommitment

Independent reproductions.

Any venue or auditor that reproduces a check of our records, and meets the definition above, may be listed here, in its own words, with its permission.

People's Court is run by a separate company: no payment passed either way, neither holds any interest in or control over the other, and no one controls both.

Reproduced by People's Court, 30 August 2026

On 30 August 2026, People's Court checked the synthetic example archive Tersign sent it that day. That archive holds the same four records, chain commitment, batch root and RFC 3161 token as intact/, and its party and counter-signer keys are published test keys; the time stamp is FreeTSA's. People's Court's report, quoted with permission:

We reviewed the archive statically, ran the bundled verifier in a network-blocked, read-only sandbox, and independently reproduced the file hashes, party signatures, ledger countersignatures, chain links and accumulator, commitment digest, and anchor relationship using our own tooling. The bundled verifier returned PASS, and our independent check passed all 34 checks for this synthetic bundle.

We also verified the RFC-3161 timestamp token against the certificate included in the archive. We have not independently authenticated that bundled certificate or a production Tersign signing key, and the OpenTimestamps proof is still pending. Accordingly, this result establishes internal integrity and signatures to the labeled synthetic test addresses. It does not establish the truth of the underlying events, rule out a conflicting chain published elsewhere, or determine admissibility or reliability in a case.

[…]

This remains a synthetic, evidence-only interoperability review: no live endpoint, credentials, production data, integration commitment, or admissibility or reliability determination.

The record-omitted/ and back-dated/ folders and tamper.py were not part of that archive. Since 30 August, the checker has been revised (the release in verify/, section 6) and the OpenTimestamps proof has completed (section 4); the report predates both.

If your evidence has to survive being held by an interested party, that party cannot be you.

The world will run on agents. Tersign keeps the record.

Read on: the argument in full, the conformance vectors, the agent manifest.