Your agent saw it.
jurat can prove it.
An independent witness that signs what it observed, so the other side does not have to take your word for it. Two things jurat witnesses: what a web page said at a moment in time, and whether an x402 endpoint is safe to pay.
USDC on Base via x402. No signup. No API keys. Verification free, forever.
Prove what the web said
Hand jurat a URL. It fetches server-side, archives the exact bytes, and returns an ed25519-signed record of what it saw: final URL, UTC time, status, length, sha256. Everything else in this half is that same act stretched across time, on a cadence, on change, or at the final whistle. Wakeups are the one exception: they carry no evidence, they just make sure your agent is alive when it matters.
/v1/snapshot
Hand us a URL, get back a signed, timestamped attestation of exactly what it returned. Bytes archived, retrievable forever.
/v1/snapshot/batch
Up to ten URLs notarized in one settled call, each with its own signed attestation. One round trip instead of ten, and cheaper than singles from three URLs up.
/v1/watch/create
We watch a page, a JSON field, a regex, or a fixture while your agent sleeps. On change: webhook, diff, and a signed snapshot of what it became.
/v1/wake/create
Leave a note with jurat. At time T we deliver it to your webhook. An alarm clock for processes that no longer exist.
/v1/wake/recurring
A standing cron: we poke your webhook every N seconds for up to a week. Your agent stays dead until it matters.
/v1/result
One final score, market-settlement grade, with a notarized snapshot of the source attached. Refuses to attest a game that is not over.
/v1/scores
Normalized scoreboards for 24 leagues: US majors, top soccer leagues, UFC, eight rugby competitions, IPL and Big Bash cricket.
/v1/watch/league
One call watches a league's whole day. Every final lands on your webhook as it happens, proof attached, then the watch closes itself.
Prove an x402 endpoint is safe to pay
The same witness pointed at the payment rail itself. jurat reads an endpoint's live 402 challenge, compares the price it advertises in its own openapi.json against the price it actually charges, and reports what it found. Nothing is ever settled against the service being checked.
/v1/preflight
Before you pay a stranger. Eighteen checks on the live 402 challenge and the published spec, including whether the advertised price matches the charged one. Returns a verdict, the decoded terms, and the fix for anything wrong.
/v1/conformance
Every paid endpoint a service declares, GET and POST alike, swept and graded, then signed with our key and yours to publish. Coverage sits inside the signature, so a partial sweep can never be shown as a full one.
Reading the evidence costs nothing
Charging to verify would defeat the point of a witness. Every artifact jurat issues can be retrieved and checked by anyone, forever, without paying us.
/v1/attestation/:id
Any attestation, its archived bytes, and its merkle proof, to anyone holding the id.
/v1/conformance/:id
Any conformance report, signature and full findings included, so an operator can link their grade and a reader can check it.
/v1/anchors
The daily signed merkle roots over everything we have attested, with the algorithm spelled out and each root's onchain status stated plainly.
Every paid call settles in USDC on Base through the open x402 protocol. An unpaid request always gets the 402 challenge. Attach a payment to a malformed one and it is refused with a free 400 that never settles, and a failed fetch is never charged.
Verification is free, forever
- Independent. Signatures verify offline against our published ed25519 key. You never have to take jurat's word after the fact.
- Tamper-evident. Change one byte of the record and verification fails, loudly.
- Rolled up daily. Every attestation goes into a daily merkle root, signed and published free at /v1/anchors with the algorithm spelled out, so you can recompute any proof by hand. Writing those roots to Base calldata is built and waiting on gas in the anchor wallet; until a root carries a base_tx, it is jurat's signature and nothing more, and every anchor says so.
- Honest. An attestation proves what jurat observed at a moment in time. It does not claim the content is true, and it says so on every record.
- Key ed25519 · 72ea8ce97b35f632 · /.well-known/jurat.json
$ curl -s jurat/v1/attestation/99f7…2e | verify leaf 8b72f71cb6d61833… recomputed ok sig ed25519 72ea8ce9… valid proof 3 steps to root climbs clean root 59942595e73004f6… signed base_tx: none yet tampered copy of the same record sig ed25519 72ea8ce9… REJECTED
From byte to daily root
the last step is built and not yet funded; no root carries a base_tx today, and /v1/anchors says so per root