{"uid":"cap_iRcF3bB6sAXyayfFLWkg-","slug":"jurat-dev-change-watcher-402a949d","name":"jurat.dev Change Watcher","description":"Create a change watcher: jurat checks a URL (hash / json:<path> / regex:<pattern>) or a sports event (result:<league>:<event_id>) on your cadence and POSTs your webhook on change or final whistle, with a signed source attestation attached.","url":"https://jurat.dev/v1/watch/create","method":"GET","headers":{},"bodySchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["input"],"properties":{"input":{"type":"object","required":["type","method"],"properties":{"type":{"type":"string","const":"http"},"method":{"enum":["GET"],"type":"string"},"queryParams":{"type":"object","required":["webhook"],"properties":{"url":{"type":"string"},"mode":{"type":"string"},"webhook":{"type":"string"},"duration_days":{"type":"string"},"cadence_minutes":{"type":"string"},"snapshot_on_change":{"type":"string"}}}},"additionalProperties":false},"output":{"type":"object","required":["type"],"properties":{"type":{"type":"string"},"example":{"type":"object"}}}}},"responseSchema":{"type":"json","example":{"id":"uuid","kind":"watch","status":"active","status_url":"free status checks"}},"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.05","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.05/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.05","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.05","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_pYj9XuEa_n8ehg8Uh7fRT","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.05","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Creates a recurring watch on a URL or sports event that POSTs your webhook whenever the monitored content changes or a game ends, with a signed attestation attached.","exampleAgentPrompt":"Watch https://example.com/prices every 30 minutes for the next 7 days using regex mode with pattern 'Out of Stock', and POST my webhook at https://myapp.io/hooks/price-alert whenever it changes — include a snapshot on change.","exampleUseCases":[{"title":"Monitor competitor pricing updates automatically","prompt":"Set up a watch on our competitor's product page at https://competitor.com/products/widget checking every 15 minutes for price changes using regex mode to detect dollar amounts, and send me a webhook at https://myapp.io/competitor-alerts whenever the price shifts — I need the signed attestation so I can prove when they changed it."},{"title":"Track sports game outcomes for betting","prompt":"Create a recurring monitor for the final whistle on the NBA game between Lakers and Celtics happening tonight, and POST to my webhook at https://myapp.io/sports-results as soon as the game ends with the official result — make sure it's signed so I know it came from jurat at exactly when the game finished."},{"title":"Alert on inventory availability changes","prompt":"Watch the JSON API at https://warehouse.internal/stock-levels every 10 minutes using json:inventory.widget.count to detect when our widget stock drops below 50 units, and hit my Slack webhook at https://hooks.slack.com/services/xxx whenever that path changes — I want the cryptographic proof attached so our audit team can verify the exact moment we ran out."}],"resultDescription":"Returns a watch ID and confirmation that the monitor has been created; subsequently, whenever the monitored URL changes (or a sports event reaches final whistle), jurat POSTs the configured webhook with change details and an ed25519-signed attestation of the source at time of detection.","failureModes":["Invalid or unreachable webhook URL — watch creation fails with a 4xx error","Target URL is inaccessible or returns non-200 responses — monitor silently skips or errors","Malformed mode string (e.g. bad JSON path or invalid regex) — returns validation error","Sports event ID not found or league not supported — returns not-found error","duration_days or cadence_minutes out of allowed range — returns parameter error","Payment not completed (x402) — request rejected before watch is created"],"whenToPreferThis":"Choose this endpoint when you need ongoing, recurring monitoring of a URL or sports event rather than a one-time snapshot. Prefer it over manual polling when you want signed attestation of changes, flexible detection modes (hash, JSON path, regex, sports result), and webhook-driven push notifications on your own cadence.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-15T18:33:09.452Z","isFirstParty":false}