{"service":"wever-watch-v1","category":"Wever Watch","tools":{"wever_watch-create":{"path":"/api/watch-create","schema":{"type":"object","additionalProperties":false,"required":["target","condition","callback_url","expires_at"],"properties":{"target":{"oneOf":[{"type":"object","additionalProperties":false,"required":["type","url"],"properties":{"type":{"const":"data_endpoint"},"url":{"type":"string","minLength":12,"maxLength":2048,"pattern":"^https://","description":"Public HTTPS URL that returns JSON. Read with GET, no redirects, up to 256 KB."}}},{"type":"object","additionalProperties":false,"required":["type","market"],"properties":{"type":{"const":"prediction_market"},"market":{"type":"string","pattern":"^(?:kalshi:[A-Z0-9][A-Z0-9._-]{0,99}|polymarket:[a-z0-9][a-z0-9-]{0,159})$","description":"kalshi:<market ticker>, polymarket:<numeric market id> or polymarket:<market slug>."}}},{"type":"object","additionalProperties":false,"required":["type","address","asset"],"properties":{"type":{"const":"base_wallet"},"address":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"asset":{"enum":["USDC","ETH"],"description":"Native Base USDC or ETH balance."}}}]},"condition":{"type":"object","additionalProperties":false,"required":["operator","threshold"],"properties":{"field":{"type":"string","minLength":1,"maxLength":256,"description":"data_endpoint: JSON pointer or dot path to a number, for example /data/price or data.price. prediction_market: yes_price, yes_bid, yes_ask or last_price (default yes_price). base_wallet: balance."},"operator":{"enum":["above","below","at_or_above","at_or_below"]},"threshold":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^-?(?:0|[1-9][0-9]{0,17})(?:\\.[0-9]{1,18})?$"}],"description":"Number or decimal string. Wallet balances use whole asset units, for example \"25.5\"."}}},"callback_url":{"type":"string","minLength":12,"maxLength":2048,"pattern":"^https://","description":"Public HTTPS URL that receives the signed fire report as a JSON POST."},"expires_at":{"type":"string","pattern":"^20[0-9]{2}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\\.[0-9]{3})?Z$","description":"UTC timestamp, for example 2026-11-20T17:00:00Z."},"check_interval_seconds":{"type":"integer","minimum":60,"maximum":86400,"description":"Seconds between checks. Default 300."},"max_fires":{"type":"integer","minimum":1,"maximum":5,"description":"Fire reports before the watch completes. Default 1."},"label":{"type":"string","minLength":1,"maxLength":120}}}},"wever_watch-list":{"path":"/api/watch-list","schema":{"type":"object","additionalProperties":false,"required":[],"properties":{"state":{"enum":["pending_activation","active","fired","expired","cancelled"],"description":"Optional state filter."}}}},"wever_watch-status":{"path":"/api/watch-status","schema":{"type":"object","additionalProperties":false,"required":["watch_id"],"properties":{"watch_id":{"type":"string","pattern":"^wat_[a-f0-9]{64}$","description":"Watch identifier returned by wever_watch-create."}}}},"wever_watch-cancel":{"path":"/api/watch-cancel","schema":{"type":"object","additionalProperties":false,"required":["watch_id"],"properties":{"watch_id":{"type":"string","pattern":"^wat_[a-f0-9]{64}$","description":"Watch identifier returned by wever_watch-create."}}}}},"targets":{"data_endpoint":"GET a public HTTPS JSON URL (no redirects, public DNS only, up to 256 KB, 5 second bound). condition.field is a JSON pointer or dot path to a number or numeric string.","prediction_market":"kalshi:<ticker> reads https://external-api.kalshi.com/trade-api/v2/markets/<ticker>. polymarket:<id or slug> reads https://gamma-api.polymarket.com/markets. condition.field is one of yes_price, yes_bid, yes_ask, last_price; yes_price is the Kalshi last traded Yes price or the Polymarket listed Yes outcome price.","base_wallet":"Reads the native Base USDC or ETH balance of the address at the latest canonical block. condition.field is balance, in whole asset units."},"condition":{"operators":{"above":">","below":"<","at_or_above":">=","at_or_below":"<="},"comparison":"Exact decimal comparison at 18 places.","firing":"A watch fires when a check finds the condition met while armed. It re-arms after a check finds the condition not met, so each fire marks one crossing. The watch completes after max_fires fires."},"scheduler":{"cadence_seconds":60,"check_interval_seconds":{"minimum":60,"maximum":86400,"default":300},"per_tick":{"activations":8,"checks":16,"deliveries":8},"activation":"A new watch starts checking within one minute after its create call completes billing.","expiry":"Checks stop at expires_at. expires_at is 300 seconds to 30 days ahead.","cancel":"wever_watch-cancel stops checks immediately; a check already in flight is discarded."},"delivery":{"method":"POST","content_type":"application/json","body":"{ type: \"wever.watch-fire.v1\", report, receipt }","headers":["Idempotency-Key: fire_id","X-Wever-Watch-Id","X-Wever-Fire-Id"],"attempts":"One POST per fire after a durable claim. The fire record, signed report and delivery outcome stay readable through wever_watch-status.","transport":"HTTPS on 443, public DNS only, no redirects, 5 second bound."},"ownership":"Every call carries X-Wever-Wallet-Proof signed over the exact JSON arguments and route. A paid call adds Payment-Signature from the same wallet. Watches are created for, listed for, read by and cancelled by that wallet only.","limits":{"open_watches_per_wallet":10,"max_fires":5,"ledger_watches":128,"retention_after_end_days":30,"max_request_bytes":16384,"states":["pending_activation","active","fired","expired","cancelled"]},"action":"report_only","pricing":{"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","pricesAtomic":{"/api/watch-create":"100000","/api/watch-list":"100000","/api/watch-status":"100000","/api/watch-cancel":"100000"},"x402Version":2,"scheme":"exact","freeTier":{"calls":10,"windowDays":30,"scope":"all_paid_endpoints","walletProofMaxAgeSeconds":300},"checks_included":"A watch-create call covers every check and fire report until the watch ends."},"wallet_proof":"Sign walletProofMessage over the exact JSON arguments and the tool route with X-Wever-Wallet-Proof. Retry an unchanged request to recover its stored report.","signing":{"issuer":"https://weverlabs.com/api/watch-contract","key_id":"wever-trust-20261001","public_jwk":{"crv":"Ed25519","x":"PG6bYTJfqh-Y7YEMzxNVhMsFkrO1XnX7djPUvNi9g_U","kty":"OKP"},"algorithm":"Ed25519","receipt_types":{"create":"wever.watch-create.v1","list":"wever.watch-list.v1","status":"wever.watch-status.v1","cancel":"wever.watch-cancel.v1","fire":"wever.watch-fire.v1"},"jwt_type":"wever-watch+jwt","digest":"SHA-256 of UTF-8 JSON.stringify(report), preserving returned property order. Verify the JWS signature and the report_sha256, owner_wallet and watch_id claims."}}