j:jurat

Change watchers with proof attached

Pay once and jurat watches a URL, JSON field, regex or sports fixture on your cadence, webhooking your agent on change with a signed source attestation attached.

How a watcher works

GET /v1/watch/create ($0.05) registers a watcher. jurat checks the target on your cadence (15 to 1440 minutes) for up to 7 days. On change, your webhook receives a POST with the old value, the new value, and (by default) a fresh attestation of the source: not just "it changed" but proof of what it changed to.

Modes

Webhook delivery

Webhooks must be public HTTPS. Delivery is a POST with a JSON body; a 2xx response marks it delivered. Failures retry up to 3 times (backoff 0s, 60s, 300s), then the delivery is marked failed honestly. Example change payload:

{
  "kind": "change",
  "watch_id": "c376ea36-...",
  "url": "https://api.example.com/state",
  "mode": "json:serverTime",
  "old": "1752999210000",
  "new": "1753000113455",
  "changed_at": "2026-07-20T08:48:59.911Z",
  "attestation": { "signed": { "sha256": "..." }, "signature": "..." }
}

Status, free

GET /v1/watch/<id> is free: status, checks performed, changes seen, next check time. DELETE cancels. Watcher state survives service restarts; a slow pass never overlaps the next one; 50 watchers on one URL collapse into shared fetches.