{"service":"jurat","tagline":"we remember, we watch, we prove. Evidence infrastructure for agents","base_url":"https://jurat.dev","pubkey_id":"72ea8ce97b35f632","payment":{"protocol":"x402","scheme":"exact","asset":"USDC","network":"eip155:8453","facilitator":"coinbase-cdp"},"paid_endpoints":[{"method":"POST","path":"/v1/snapshot/batch","price":"$0.03","description":"Bulk notarization: notarize up to 10 public URLs in ONE settled call, each returning its own tamper-evident ed25519 attestation with the bytes archived, exactly as the single snapshot endpoint does. Cheaper than five individual snapshots and one round trip instead of ten. Failures are reported per URL; the rest still return.","params":{"urls":{"required":true,"description":"JSON array of 1 to 10 http(s) URLs, in the POST body","example":"[\"https://example.com\",\"https://example.org\"]"}},"example_body":{"urls":["https://example.com","https://example.org"]}},{"method":"GET","path":"/v1/snapshot","price":"$0.01","description":"Notarize any public web page or API response: fetches the URL server-side, archives the exact bytes, and returns a tamper-evident ed25519 attestation recording the final URL, UTC timestamp, HTTP status, content type, byte length and sha256 hash. Establishes provenance and a chain of custody for what a source said at a point in time, so the signed record can serve as the evidence layer in a later dispute or audit trail. Alter one byte and verification fails. Anyone can verify it offline against the published key, free, forever.","params":{"url":{"required":true,"description":"http(s) URL to attest","example":"https://example.com"}},"example":"https://jurat.dev/v1/snapshot?url=https%3A%2F%2Fexample.com"},{"method":"GET","path":"/v1/preflight","price":"$0.005","description":"Audit any x402 endpoint before you pay it: reads the live HTTP 402 challenge, decodes the payment terms, and compares the price advertised in its openapi.json against the price actually charged. Returns a compliance verdict, a safe-to-pay signal and a per-check fix list. Catches silent price drift, unpayable challenges, and the misconfigurations that make discovery indexes drop a resource.","params":{"url":{"required":true,"description":"full URL of the paid endpoint to check (not just the domain)","example":"https://zaref.dev/v1/repo-prime"}},"example":"https://jurat.dev/v1/preflight?url=https%3A%2F%2Fzaref.dev%2Fv1%2Frepo-prime"},{"method":"GET","path":"/v1/conformance","price":"$0.50","description":"Signed conformance report over a whole x402 service. Sweeps every paid endpoint the service declares, GET and POST alike, runs the same checks /v1/preflight runs on each, grades the result, and returns an ed25519-signed report the operator can publish and anyone can verify offline. Coverage is inside the signature, so a partial sweep can never be passed off as a full one. Retrieving any report is free forever.","params":{"url":{"required":true,"description":"the service's base URL; an endpoint URL works too, its origin is used","example":"https://zaref.dev"}},"example":"https://jurat.dev/v1/conformance?url=https%3A%2F%2Fzaref.dev"},{"method":"GET","path":"/v1/scores","price":"$0.01","description":"Normalized scoreboard of fixtures across 24 leagues (US majors, top soccer leagues, the South African Premiership, UFC, 8 rugby competitions, IPL and Big Bash cricket): every fixture with its state, completion flag and score, from one call.","params":{"league":{"required":true,"description":"league slug, see /v1/sports","example":"mlb"},"date":{"required":false,"description":"YYYYMMDD, default today","example":"20260719"}},"example":"https://jurat.dev/v1/scores?league=mlb"},{"method":"GET","path":"/v1/result","price":"$0.02","description":"Final result for a single sporting fixture, shaped for prediction-market settlement: returns the completed score with a completion flag and, with attest=true, a notarized ed25519 attestation of the source page bundled in. Refuses (HTTP 409) to attest an event that is not final, so it can be wired straight into settlement logic. jurat is the evidence layer an oracle or dispute process cites, not a settlement oracle itself: it proves what the source reported, never that the source is right.","params":{"league":{"required":true,"description":"league slug","example":"mlb"},"event":{"required":false,"description":"event_id (or use team)","example":"401816171"},"team":{"required":false,"description":"team name/abbrev substring","example":"blue jays"},"date":{"required":false,"description":"YYYYMMDD","example":"20260719"},"attest":{"required":false,"description":"bundle a signed source attestation (finals only)","example":"true"}},"example":"https://jurat.dev/v1/result?league=mlb&event=401816171"},{"method":"GET","path":"/v1/watch/create","price":"$0.05","description":"Change detection with proof attached: jurat monitors a URL by whole-body hash, a JSON field (json:<dot.path>), a regular expression (regex:<pattern>) or a sports fixture (result:<league>:<event_id>) on the cadence you set, then POSTs your webhook the moment the value changes, carrying the old value, the new value and a fresh ed25519 attestation of the source. Buy the watcher once instead of polling.","params":{"webhook":{"required":true,"description":"https webhook to notify","example":"https://agent.example/hook"},"url":{"required":false,"description":"target URL (hash/json/regex modes)","example":"https://example.com/page"},"mode":{"required":false,"description":"hash | json:<dot.path> | regex:<pattern> | result:<league>:<event_id>","example":"json:price.usd"},"cadence_minutes":{"required":false,"description":"15-1440","example":"15"},"duration_days":{"required":false,"description":"1-7","example":"7"},"snapshot_on_change":{"required":false,"description":"attach attestation on change","example":"true"}},"example":"https://jurat.dev/v1/watch/create?webhook=https%3A%2F%2Fagent.example%2Fhook&url=https%3A%2F%2Fexample.com%2Fpage&mode=hash"},{"method":"GET","path":"/v1/wake/create","price":"$0.005","description":"Schedule a wakeup: jurat holds your payload and POSTs it to your webhook at the time you name. A managed scheduler and cron for ephemeral, stateless agents that cannot stay alive between tasks, so work can resume without a process waiting.","params":{"at":{"required":true,"description":"ISO-8601, max 30 days ahead","example":"2026-09-05T16:27:45Z"},"webhook":{"required":true,"description":"https webhook","example":"https://agent.example/hook"},"payload":{"required":false,"description":"delivered verbatim, max 8KB","example":"resume-task-42"}},"example":"https://jurat.dev/v1/wake/create?at=2026-09-05T16%3A27%3A45Z&webhook=https%3A%2F%2Fagent.example%2Fhook"},{"method":"GET","path":"/v1/watch/league","price":"$0.10","description":"Monitor EVERY fixture in a league for the day with one call: jurat webhooks each final result as it lands, with a signed source attestation attached, then closes itself when the slate completes. The bulk settlement product.","params":{"league":{"required":true,"description":"league slug","example":"mlb"},"webhook":{"required":true,"description":"https webhook","example":"https://agent.example/hook"},"date":{"required":false,"description":"YYYYMMDD, default today","example":"20260719"},"cadence_minutes":{"required":false,"description":"15-1440","example":"15"},"duration_days":{"required":false,"description":"1-2","example":"1"},"snapshot_on_change":{"required":false,"description":"attach attestation per check batch","example":"true"}},"example":"https://jurat.dev/v1/watch/league?league=mlb&webhook=https%3A%2F%2Fagent.example%2Fhook"},{"method":"GET","path":"/v1/wake/recurring","price":"$0.05","description":"Recurring wakeups: jurat POSTs your payload to your webhook every N seconds from the first fire until expiry. A standing scheduler for ephemeral, stateless agents, rescheduling from now after downtime rather than firing a burst of missed slots.","params":{"at":{"required":true,"description":"first fire, ISO-8601","example":"2026-09-05T16:27:45Z"},"every_seconds":{"required":true,"description":">= 900","example":"3600"},"webhook":{"required":true,"description":"https webhook","example":"https://agent.example/hook"},"duration_days":{"required":false,"description":"1-7","example":"7"},"payload":{"required":false,"description":"delivered each fire, max 8KB","example":"heartbeat"}},"example":"https://jurat.dev/v1/wake/recurring?at=2026-09-05T16%3A27%3A45Z&every_seconds=3600&webhook=https%3A%2F%2Fagent.example%2Fhook"}],"free_endpoints":["/catalog","/llms.txt","/openapi.json","/health","/v1/sports","/v1/anchors","/v1/attestation/{id}","/v1/attestation/{id}/body","/v1/conformance/{id}","/v1/watch/{id}","/v1/wake/{id}","/.well-known/jurat.json","/.well-known/x402.json","/.well-known/agent.json"],"limits":{"cadence_min":15,"cadence_max":1440,"duration_min_days":1,"duration_max_days":7,"wake_max_days":30,"payload_max":8192,"wake_recur_min_s":900,"league_watch_max_days":2,"delivery_attempts":3,"delivery_backoff_ms":[0,60000,300000]},"note":"an attestation records what jurat observed at fetched_at; it does not claim the content is true"}