All apps
Hover to scroll
Hover to scrollWatch any page and get told when it actually changes — with the diff, and a signed webhook. One call returns what the page says now, whether it differs from the baseline you supplied, and exactly what moved.
- A check is one look at one page. A monitor repeats it hourly, daily or weekly and pushes an alert only when there is something to say
- Before anything is compared, the extraction is NORMALISED: timestamps, "3 minutes ago", CSRF and nonce values, long opaque hashes, and cache-busting query parameters are all masked. Whitespace and invisible spaces always are. Otherwise a rotating token would report a change every hour, forever
- Prices, counts, versions, copyright years and the ORDER of a list are never masked — those are the answers people are watching for. Every masking class can be turned off individually, and the full policy is machine-readable at /api/pricing and over MCP as get_change_policy
- Extraction is deterministic — a CSS selector or a field map, never a model. A stochastic extractor would report changes that never happened, and each false report would bill the caller and fire their webhook
- Narrow a watch with
selectorfor one region, orschema(a field map of name → CSS selector) so an alert reads price: $19.00 → $29.00 instead of a wall of markdown - 3 credits per check, and the same for a monitor pass, because it is the same work. A page that yields nothing at all refunds in full; a page that simply did not change is a real answer and is billed
- Non-public addresses (localhost, private ranges, cloud metadata, .internal) are refused for free before any price is quoted — on both rails, and for webhook targets too
- Agent-native from day one: wtc_live_ REST keys, a 12-tool MCP server (works with the Ounie AI Team via ?api_key=), keyless x402 pay-per-call in USDC, and the fleet master key. The x402 rail sells ONE check against a baseline you supply; recurring monitors need an account, because a subscription has nobody to bill on renewal and nowhere to send an alert — and the 402 itself says so before you pay
For agents
Works with Claude, ChatGPT, and any MCP client. One server, every app: paste the gateway config and the agent can discover and run Watchtower — and the rest of the store — through ounie_list_apps → ounie_describe_app → ounie_invoke_app.
{
"mcpServers": {
"ounie": {
"url": "https://mcp.ounie.com"
}
}
}Scoped endpoint — just this app. Point a client here when the agent should only ever see Watchtower's tools:
{
"mcpServers": {
"watch": {
"url": "https://watch.ounie.com/api/mcp"
}
}
}To spend your Ounie credits on the scoped endpoint, append your app key to the URL as ?api_key=… — the header-less form clients like the Ounie AI Team need.
Credits used
| Check one page (3 cr) · a monitor pass costs the same | 3 credits per call |