# agent-exec URL Watch / Polling Monitor

> agent-exec URL Watch / Polling Monitor is a paid API for AI agents from agent-exec.448c.net, paid per call via x402, $0.0058/call, status unknown (last checked 2026-10-11).

Registers a pay-per-use HTTP polling watch that fires when a specified condition is met on a remote URL, returning a watch ID and status.

## Facts

- Endpoint: POST https://agent-exec.448c.net/watch?utm_source=zero.xyz
- Price: $0.0058/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-11
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/agent-exec-url-watch-polling-monitor-8623ca11
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_A0KC6SONFk3O9jIUmpYl3

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability agent-exec-url-watch-polling-monitor-8623ca11 -d '<json body>'
```

Example prompt: Watch https://api.example.com/status every 30 seconds for up to 10 minutes, and alert me when the JSON field 'state' equals 'ready' — store the result under the label 'deploy-ready'.

## When to prefer this

Choose this endpoint when an AI agent needs to asynchronously wait for a remote HTTP condition to become true without blocking — especially useful for polling deployment readiness, service recovery, or waiting for a third-party API value to change. It is preferable to running a busy-wait loop in code, and uniquely suited when no webhook infrastructure is available on the target system. The pay-per-use, accountless model makes it ideal for ad-hoc agent workflows.

## Known failure modes

- Payment insufficient or invalid — HTTP 402 returned, watch not created
- URL is not reachable or returns errors — watch stays active until TTL expires without matching
- TTL expires before predicate fires — status transitions to 'expired' with no match
- Invalid predicate type specified — request rejected with schema validation error
- intervalSeconds greater than ttlSeconds — request rejected
- JSON path in predicate doesn't exist in response body — condition never matches

## How this service works

Accountless, pay-per-use code execution for software agents: submit source code, get stdout, stderr and exit code back from an isolated, network-less sandbox. No account, no API key -- possession of valid payment is sufficient.

## Output

Returns a watch object containing a UUID watch ID, current status (active/matched/expired), payment details (payer, amount, transaction hash), predicate, interval and TTL settings, creation and expiry timestamps, next scheduled poll time, overdue flag, last observation details, and if a storageKey was given, the ID of the storage object where matched data was delivered.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "url",
  "predicate",
  "ttlSeconds",
  "intervalSeconds"
 ],
 "properties": {
  "url": {
   "type": "string",
   "description": "Absolute http(s) URL to poll."
  },
  "predicate": {
   "type": "object",
   "description": "Exactly one of: {type:\"statusChanged\"} / {type:\"statusEquals\",status} / {type:\"bodyContains\",value} / {type:\"bodyNotContains\",value} / {type:\"jsonPathEquals\",path,value} / {type:\"jsonPathNotEquals\",path,value} / {type:\"changedFromNow\",path?}. `path` is a dotted path into a JSON response body."
  },
  "storageKey": {
   "type": "string",
   "description": "Optional: deliver a matched observation into /storage under this label, on the wallet that paid."
  },
  "ttlSeconds": {
   "type": "integer",
   "description": "Stop after this many seconds if the condition never fires; at least intervalSeconds."
  },
  "intervalSeconds": {
   "type": "integer",
   "description": "Seconds between polls."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "payment",
  "id",
  "status",
  "url",
  "intervalSeconds",
  "ttlSeconds",
  "predicate",
  "createdAt",
  "ttlExpiresAt",
  "nextPollDueAt",
  "overdue"
 ],
 "properties": {
  "id": {
   "type": "string",
   "format": "uuid",
   "description": "Keep this: it is how anyone reads the watch back, free, at GET /watch/{id}."
  },
  "url": {
   "type": "string"
  },
  "status": {
   "enum": [
    "active",
    "matched",
    "expired"
   ],
   "type": "string"
  },
  "overdue": {
   "type": "boolean",
   "description": "true when an active watch has missed its next poll."
  },
  "payment": {
   "type": "object",
   "properties": {
    "asset": {
     "type": "string"
    },
    "payer": {
     "type": "string"
    },
    "amount": {
     "type": "string",
     "description": "Atomic units charged."
    },
    "network": {
     "type": "string"
    },
    "transaction": {
     "type": "string",
     "description": "On-chain settlement transaction."
    }
   }
  },
  "baseline": {
   "description": "changedFromNow's registration-time snapshot, verbatim."
  },
  "createdAt": {
   "type": "integer",
   "description": "Unix ms."
  },
  "matchedAt": {
   "type": [
    "integer",
    "null"
   ],
   "description": "Unix ms the condition fired, or null."
  },
  "predicate": {
   "type": "object"
  },
  "storageKey": {
   "type": [
    "string",
    "null"
   ]
  },
  "ttlSeconds": {
   "type": "integer"
  },
  "lastPolledAt": {
   "type": [
    "integer",
    "null"
   ]
  },
  "ttlExpiresAt": {
   "type": "integer",
   "description": "Unix ms polling stops if the condition never fires."
  },
  "nextPollDueAt": {
   "type": "integer"
  },
  "intervalSeconds": {
   "type": "integer"
  },
  "lastObservation": {
   "type": [
    "object",
    "null"
   ],
   "description": "The last poll: status, whether it matched, and any WATCH_JSONPATH_BODY_NOT_JSON note."
  },
  "deliveredObjectId": {
   "type": [
    "string",
    "null"
   ],
   "description": "The /storage object a matched storageKey watch was delivered to."
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/agent-exec-url-watch-polling-monitor-8623ca11/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from agent-exec.448c.net](https://www.zero.xyz/host/agent-exec.448c.net/llms.txt)
