# TrustAgent OFAC Sanctions Feed (Incremental)

> TrustAgent OFAC Sanctions Feed (Incremental) is a paid API for AI agents from trust-agent.io, paid per call via x402, $0.002003/call, status unknown (last checked 2026-09-14).

Returns only the OFAC designation and delisting changes since a specified timestamp, enabling privacy-preserving local matching without exposing your counterparty addresses to the service.

## Facts

- Endpoint: GET https://trust-agent.io/v1/watch/feed
- Price: $0.002003/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/trustagent-ofac-sanctions-feed-incremental-787d79bb
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_-TQQ8THptuWC6qamx3dHx

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 trustagent-ofac-sanctions-feed-incremental-787d79bb
```

Example prompt: Check the TrustAgent OFAC sanctions feed for any designations or delistings that have happened since Unix timestamp 1718000000 on Base, and give me the full list of changes so I can match them against my own address book locally.

## When to prefer this

Choose this endpoint when you want to incrementally track OFAC sanctions changes without re-downloading the full list on every poll, and critically, when you need to match against your own counterparty address book locally without revealing those addresses to the screening service. Ideal for privacy-preserving compliance cron jobs. Use the free GET /v1/watch alternative if you don't need the paid incremental feed, or use the batch screening endpoint if you want the service to perform the matching for you.

## Known failure modes

- Unsupported chain value — only 'base' is accepted; any other chain string is refused with an error rather than returning data
- Timestamp too far in the past — coverage.complete=false is returned, indicating the change log does not reach the cursor and a full baseline poll is needed
- Rate limit exceeded — free tier allows 3 calls per wallet per 24h; paid tier charged per call at $0.002003 USDC
- Invalid or malformed 'since' parameter — may return an error or default to full feed
- Payment failure via x402 protocol — call is rejected without data

## How this service works

Has the sanctions feed moved since you last looked? Every OFAC designation and delisting since a timestamp you supply, with no address list to send — match the feed against your own counterparty book locally, so the service never learns which addresses are yours. The trivial cron: poll this, pass the returned checkedAt back as `since`. Free alternative: GET /v1/watch. Or 3 free calls of this endpoint per wallet per 24h: https://trust-agent.io/v1/trial.

## Output

Returns a JSON object containing: an array of changes (each with address, change type of 'added' or 'removed', source, timestamp, and reason), feed metadata (source name and lastSyncedAt), coverage info (coveredSince and a complete flag indicating whether the log reaches your cursor), and a checkedAt timestamp to use as the next 'since' value. An empty changes array means nothing moved in the window.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "properties": {
      "chain": {
       "type": "string",
       "description": "OPTIONAL. Only \"base\" is served; any other value is refused rather than answered from the wrong chain. Defaults to base."
      },
      "since": {
       "type": "string",
       "description": "OPTIONAL. Unix seconds. Pass the previous response's checkedAt to receive only what changed since."
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "properties": {
      "feed": {
       "description": "source and lastSyncedAt of the sanctions feed behind the answer"
      },
      "changes": {
       "description": "array of {address, change: added | removed, source, at, reason}. Empty means nothing moved."
      },
      "coverage": {
       "description": "{coveredSince, complete}. complete=false means the change log does not reach your cursor and the answer may be incomplete — re-establish your baseline from a full poll."
      }
     }
    }
   }
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/trustagent-ofac-sanctions-feed-incremental-787d79bb/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from trust-agent.io](https://www.zero.xyz/host/trust-agent.io/llms.txt)
