{"service":"Watch & Diff","version":"0.1.0","tagline":"Did this URL change since my last check? Fetch, normalize, hash and diff any page, region or JSON for AI agents running recurring tasks. State per paying wallet, 90 days. Pay per call over x402, no API key.","payment":{"protocol":"x402","version":2,"mode":"mainnet","facilitator":"payai","networks":"Base + Solana mainnet","alsoAccepts":["MPP (Machine Payments Protocol): same routes answer with a WWW-Authenticate: Payment challenge"],"accepts":[{"network":"eip155:8453","asset":"USDC","payTo":"0xc42cbF077aF05D1a613d455067c201CA44e9CAFb"}],"howTo":"Call any endpoint. You get HTTP 402 with a PAYMENT-REQUIRED header. Sign the USDC payment with any x402 client (@x402/fetch, Coinbase Payments MCP, AgentCash, OpenClaw x402 skill), retry with PAYMENT-SIGNATURE, receive JSON. Failed requests (4xx/5xx) are never settled."},"endpoints":[{"method":"GET","path":"/v1/check","url":"https://watch-diff.agent-utils.workers.dev/v1/check","price":"$0.01","summary":"Fetch a URL, normalize it (readable text, a CSS-selected region, or canonical JSON), and compare it with the last check you paid for: changed yes/no, a line diff of what was added and removed, content hash, HTTP status, ETag and Last-Modified. State is kept per paying wallet (or watcher id) for 90 days. Use it in recurring tasks to know whether a page, price, doc, feed or API response changed since last time without re-reading the whole thing.","tags":["monitoring","change-detection","diff","web","watch","scraping"],"example":"https://watch-diff.agent-utils.workers.dev/v1/check?url=https%3A%2F%2Fexample.com%2F&selector=body&mode=text"},{"method":"GET","path":"/v1/snapshot","url":"https://watch-diff.agent-utils.workers.dev/v1/snapshot","price":"$0.005","summary":"Stateless fetch + normalize: readable text (or a CSS-selected region, or canonical JSON) of a URL with its content hash, HTTP status, ETag and Last-Modified. Use when you want clean text of a page cheaply, or to store the hash yourself and compare later.","tags":["web","fetch","text-extraction","hash","scraping"],"example":"https://watch-diff.agent-utils.workers.dev/v1/snapshot?url=https%3A%2F%2Fexample.com%2F&mode=text"},{"method":"GET","path":"/v1/headers","url":"https://watch-diff.agent-utils.workers.dev/v1/headers","price":"$0.005","summary":"Liveness and freshness of a URL without downloading the body: HTTP status, final URL after redirects, content-type, content-length, ETag, Last-Modified, cache headers, server and response time. Use to check whether a resource still exists or was updated before spending a bigger call on it.","tags":["monitoring","uptime","http","headers","freshness"],"example":"https://watch-diff.agent-utils.workers.dev/v1/headers?url=https%3A%2F%2Fexample.com%2F"},{"method":"POST","path":"/v1/diff","url":"https://watch-diff.agent-utils.workers.dev/v1/diff","price":"$0.005","summary":"Line-level diff between two texts you already have (documents, configs, API responses, code): added and removed lines with counts, plus similarity ratio. Use to explain to a user what changed, or to decide whether a change is material before acting.","tags":["diff","text","compare","documents"],"example":{"method":"POST","url":"https://watch-diff.agent-utils.workers.dev/v1/diff","body":{"before":"price: 10\nstock: 5\n","after":"price: 12\nstock: 5\n"}}}],"free":["https://watch-diff.agent-utils.workers.dev/health","https://watch-diff.agent-utils.workers.dev/openapi.json","https://watch-diff.agent-utils.workers.dev/llms.txt"],"coverage":{"maxBodyBytes":2000000,"statePerWatcherDays":90,"modes":["text","html","json"]},"attribution":["Cloudflare Workers HTMLRewriter","jsdiff"]}