Verification for agents · x402 · USDC on Base
A verdict your agent can check without trusting us.
Clearsigned verifies a claim adversarially and returns a signed receipt: the verdict, every source with its stance, and a confidence that is a measured rate rather than a model's feeling. Five cents per call, flat, paid by the agent itself. The price never depends on which way the verdict goes.
Verdicts take 10 to 40 seconds because evidence is gathered live. Set a 60 second client timeout.
- claim
- "The Eiffel Tower is located in Paris, France."
- verdict
- SUPPORTED confidence 0.914
- calibration
- engine-pkg-groq-20260925-n204
- price
- 0.05 USDC flat-per-call, verdict-independent
- checks_run
- gather_for 5 · gather_against 5 · stance_judgment 9/9 · refuter_pass not_refuted · derive
- evidence
-
supports toureiffel.paris
supports en.wikipedia.org
neutral britannica.com (403, unreadable) - delivered
- true
ed25519 · key_id 6eb6ca2ac41e690f · verify offline against /pubkey
-----END SIGNATURE-----
Example receipt. The shape is exact; the values are illustrative. Real receipts carry the full source list, every hash, and the signature bytes.
Counts from the public ledger, as read on 2026-09-25. Verify them yourself at /ledger/stats.
The API
One call, five cents, one receipt.
POST a claim. Unpaid, you get a 402 with the exact payment terms in the response header. Paid, the same request returns the signed receipt. Any x402 client works.
curl -i -X POST https://verify.clearsigned.com/verify/t1 \
-H 'content-type: application/json' \
-d '{"claim":"The Eiffel Tower is located in Paris, France.","evidence":[]}'
# HTTP/2 402
# payment-required: <x402 v2 · scheme exact · eip155:8453 · 0.05 USDC · payTo 0x7904…c75C>
The 402 is the quote. Pay it with an x402 client and the same POST returns the receipt.
pip install "x402[evm]" httpx eth-account cryptography
export BUYER_PRIVATE_KEY=0x… # any EVM key holding a few cents of USDC on Base
python buy_a_verdict.py "The Eiffel Tower is located in Paris, France."
# verdict: SUPPORTED @ 0.914
# curve: engine-pkg-groq-20260925-n204
# paid: settlement tx 0x…
# signature (verified offline vs pinned /pubkey key): VALID
The full script is 80 lines and verifies the signature itself: buy_a_verdict.py.
from clearsigned_tool import ClearsignedVerifyTool
agent = create_react_agent(model, [ClearsignedVerifyTool()])
# CLEARSIGNED_BUYER_KEY=0x… · every receipt is verified offline before the agent sees it
Install with pip install langchain-clearsigned; the AI SDK and MCP versions are on the integrations page.
Free endpoints, no wallet needed:
/health service mode and ledger tip ·
/pubkey the signing key and the verification recipe ·
/ledger/verify walks the whole chain ·
/ledger/stats the buyer scoreboard.
Machine-readable: /llms.txt and the agent card. Listed in the x402 Bazaar.
Verify us
Three checks that need no trust in us.
-
Pin the key.
GET /pubkeypublishes the Ed25519 key and the exact offline recipe: strip the signature field, canonicalize the rest as sorted compact JSON, verify. Never trust the key embedded in a receipt. -
Walk the chain.
Every paid receipt and its on-chain settlement are separate hash-chained events joined on payer and nonce.
GET /ledger/verifywalks it from genesis to tip. Editing or deleting history breaks the chain in public. -
Read the scoreboard.
GET /ledger/statscounts distinct buyers from the chain and subtracts our own test wallets. Payer addresses never leave the instance. The production instance also passed a recorded isolation acceptance: probes show it holds nothing beyond its service corpus.
Calibration
What the confidence number means.
The confidence on a receipt is the realized accuracy of that bucket on 204 labeled claims, measured on the retrieval stack that serves your request. Retrieval changes how often the engine commits. It does not change how right the engine is when it commits.
| Retrieval stack | Commit precision | Top-bucket realized | Abstention | Serves |
|---|---|---|---|---|
| DDG search, fast judge | 0.976 | 0.914 (n=116) | 27% | yes |
| DDG search, slow judge | 0.961 | 0.882 (n=127) | 24% | no |
| Fast search, fast judge | 0.959 | 0.874 (n=119) | 28% | no |
| Keyless search, slow judge | 0.961 | 0.848 (n=79) | 55% | no |
| Home research stack | 0.961 | 0.909 (n=121) | 29% | no |
Five different stacks measured commit precision between 0.959 and 0.976 on decidable claims. The protection comes from the abstention rule and the refuter, not from any one search backend. Every receipt names the curve version it was mapped through.
Limits
Stated first, so you can price them in.
- The engine abstains on about 27% of decidable claims. You may pay five cents and receive
UNVERIFIABLEwith the evidence trail explaining why. Refunds are for failure to deliver a verdict, never for the verdict's direction. - Some sources block automated readers. The receipt shows exactly which sources were reachable and which were not.
- Calibration is n=204 with the dataset caveats stated in the curve file. Read its provenance before staking anything important on a single verdict.
- As of 2026-09-25 the chain holds 16 sold receipts, 7 of them from wallets we do not know. The numbers are small, and they are shown in public.
Readiness
Can an agent use your site?
The free scanner attempts the journey an agent takes through your front door and reports where it dies, with evidence per check. Our August sweep of 25 well-known sites found one perfect score and seventeen sites at D or F.
Six scans per five minutes. Results are shareable. Read the 25-site sweep.
Rules
Three rules we cannot change.
Prepay, per call.
The counterparty is anonymous. A 402 quotes, the agent pays, the same exchange returns the work. There is no invoice and no receivable.
Price never follows the verdict.
Flat price per call whatever the verdict says. Paying only for confirmations would pay the judge for convictions.
The judge doesn't litigate.
We never compete to supply the work we verify. Customer payloads are never training data and never leave through receipts, logs, or the ledger.