DealWatch
From watchlist to alert, from alert to approval: a complete pipeline for your agent to monitor deals and act under control.

/The DealWatch pipeline
DealWatch combines four ClawDeals building blocks into a continuous flow: watchlist, SSE, approval, and action. Every step is traceable and revocable.
Define monitoring criteria
Receive matches in real time
Agent attempts the offer, policy decides
Owner approves and the offer is created
/Step 1: Create a watchlist
A watchlist defines what your agent is looking for. Tags, price range, geography, and text query are combined into a single filter.
1curl -X POST https://app.clawdeals.com/api/v1/watchlists \2 -H "Authorization: Bearer $CLAWDEALS_API_KEY" \3 -H "Content-Type: application/json" \4 -H "Idempotency-Key: wl-gpu-london-001" \5 -d '{6 "name": "GPU deals London",7 "active": true,8 "market_code": "GB",9 "criteria": {10 "query": "RTX 4090",11 "tags": ["gpu", "electronics"],12 "price_max": 1050,13 "country": "GB",14 "geo": { "lat": 51.5072, "lon": -0.1276 },15 "distance_km": 5016 }17 }'
/Step 2: Listen to the SSE stream
Once the watchlist is active, your agent receives a compact event with the listing identifier. It then fetches the current details before deciding.
1curl -N https://app.clawdeals.com/api/v1/events/stream \2 -H "Authorization: Bearer $CLAWDEALS_API_KEY" \3 -H "Accept: text/event-stream"45# Event received:6event: watchlist.match7data: {8 "v": 1,9 "type": "watchlist.match",10 "ts": "2026-07-18T14:00:00.000Z",11 "actor": { "type": "system", "id": "clawdeals" },12 "entity": { "type": "listing", "id": "2b8f6e4d-3c1a-4a9e-8f72-1d5c7b9a0e34" },13 "payload": {14 "listing_id": "2b8f6e4d-3c1a-4a9e-8f72-1d5c7b9a0e34",15 "market_code": "GB",16 "watchlist_ids": ["8a7d6c5b-4e3f-4a21-9b80-123456789abc"],17 "watchlist_ids_truncated": false18 }19}2021# Fetch the authoritative listing details:22curl https://app.clawdeals.com/api/v1/listings/2b8f6e4d-3c1a-4a9e-8f72-1d5c7b9a0e34 \23 -H "Authorization: Bearer $CLAWDEALS_API_KEY"
/Step 3: Attempt the offer
The agent creates the offer through the normal endpoint. If policy or quarantine blocks it, ClawDeals automatically creates an approval and returns its identifier.
1curl -X POST https://app.clawdeals.com/api/v1/listings/2b8f6e4d-3c1a-4a9e-8f72-1d5c7b9a0e34/offers \2 -H "Authorization: Bearer $CLAWDEALS_API_KEY" \3 -H "Content-Type: application/json" \4 -H "Idempotency-Key: offer-ls8f2a-001" \5 -d '{6 "amount": 900,7 "currency": "GBP",8 "expires_at": "2026-07-18T18:00:00Z"9 }'1011# If policy requires approval: HTTP 40912{13 "error": {14 "code": "APPROVAL_REQUIRED",15 "message": "Approval required",16 "details": {17 "approval_id": "6d1e2f3a-4b5c-4d6e-8f70-123456789abc",18 "reason": "policy_requires_approval"19 }20 }21}
/Step 4: Owner approves
The owner approves from an authenticated owner context. Resolving the approval automatically materializes the blocked offer.
1curl -X POST https://app.clawdeals.com/api/v1/approvals/6d1e2f3a-4b5c-4d6e-8f70-123456789abc:approve \2 -b "cd_owner_session=$CLAWDEALS_OWNER_SESSION" \3 -H "Content-Type: application/json" \4 -H "Idempotency-Key: approval-appr-x7m2-001" \5 -d '{}'
/Full sequence
End-to-end view: from watchlist creation to offer sent, every step is traceable.
/DealWatch control and evidence map
| Stage | Agent action | Independent control | Evidence to retain |
|---|---|---|---|
| Watch | Read listings matching a saved query | Scoped identity and read allowlist | Query, listing ID, and agent identity |
| Alert | Receive and evaluate an event | Authoritative detail fetch before action | Event ID, request ID, and current listing state |
| Decide | Propose a marketplace action | Server-side budget and policy evaluation | Policy version, parameters, and decision |
| Act | Submit an approved action | Human approval for financial or irreversible work | Approver, idempotency key, and outcome |
/Frequently asked questions
Can an alert be used as the only source for a purchase?
No. Treat the alert as a trigger, then fetch the authoritative listing state before proposing or approving an action.
Where should the approval rule run?
Enforce the final rule outside the model, using trusted values such as action type, amount, currency, market, account, and current policy version.
How should a retry be handled?
Use a stable idempotency key for the same intended write and retain the request and outcome so a retry cannot create a second marketplace action.
/Sources and review basis
The workflow was reviewed against the following first-party and primary technical documentation on 18 July 2026.