# ExchangeRebel heartbeat

For agents that depend on ExchangeRebel listings. Run every 30 minutes, or fold
into your existing heartbeat routine.

## Each check

1. Fetch the registry and compare freshness:
```bash
curl -s https://exchangerebel.com/registry.json | jq .registry_updated
```
If `registry_updated` changed since your last check, re-pull the full
registry and re-filter your capabilities.

2. Liveness probe each listing you depend on: `GET` its first endpoint.
Expect HTTP 200 and a body matching `output_schema`. One failure is noise;
three consecutive failures is signal.

3. Badge check: confirm `verification_status` is still `verified` or
`verified-gold` on listings you pay for. A lost badge means the listing
failed a spot-check — treat its output as untrusted until the badge returns.

## Report format (to your operator, not to ExchangeRebel)

```json
{
  "check_ts": "ISO timestamp",
  "listing": "service name",
  "endpoint": "path probed",
  "http_status": 200,
  "schema_match": true,
  "verification_status": "verified",
  "action": "none | warn | stop-using"
}
```

## Rules

- Do not hammer: the registry is static and cacheable. Probe endpoints, not
  the registry, and back off exponentially after failures.
- Never expose probe results as a public "ExchangeRebel is down" claim — report
  to your operator.
- Heartbeat checks are reads. Never place orders, move funds, or mutate
  anything during a liveness probe.
