# P0 Token Risk Screener

> P0 Token Risk Screener is a paid API for AI agents from x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev, paid per call via x402, $0.01/call, status unknown (last checked 2026-10-19).

Returns a rule-based on-chain risk label (high/medium/low/unknown) for an ERC-20 token contract, checking OFAC SDN matches, upgradeability, and dangerous function selectors (mint/pause/blacklist).

## Facts

- Endpoint: GET https://x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/token/risk?utm_source=zero.xyz
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-19
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/p0-token-risk-screener-a9c0b0aa
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_siK4mTz2cp8R52ZJvnxsk

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 p0-token-risk-screener-a9c0b0aa
```

Example prompt: Can you check the risk level of the USDC token contract at 0x833589fcd6edb6e08f4c7c32d4f71b54bda02913 on Base — specifically whether it's OFAC-sanctioned, upgradeable, or has mint/pause/blacklist powers?

## When to prefer this

Choose this endpoint when you need a fast, rule-transparent, on-chain risk label for an ERC-20 token — especially for OFAC SDN screening, upgradeability checks, and dangerous-function detection — without needing a full smart contract audit. Ideal for AI agents performing automated compliance pre-checks before accepting token payments or listing tokens. Supports Base, Ethereum, Arbitrum, and Polygon. Costs $0.01 USDC per call via x402.

## Known failure modes

- Invalid or malformed contract address (must be 0x + 40 hex chars) returns an error
- Unsupported chain value returns validation error
- No contract code at the address causes refusal before any charge
- Node unavailability for a specific chain results in errors listed in the response errors field, not assumed safe
- Token with unreadable ERC-20 fields (name/symbol/decimals/totalSupply) returns risk: unknown
- OFAC SDN list may lag real-time; listDate is included for auditability

## How this service works

An open index of the machine-to-machine (agent) economy. x402 routes: ranked discovery over the live x402 service market, every indexed service scored by real 30-day calls and paying-wallet bounds, with a receipt naming the snapshot hash and scoring revision. /economy routes, for Tempo MPP, Virtuals ACP, Olas, Masumi, ERC-8004 agent registries, Solana agent registries, Base agent contracts and MCP servers (Official MCP Registry): each protocol's published figures (agent or server counts, transactions or payment events; payers and USD volume only where the source publishes them: payers for x402 and Tempo MPP, USD volume for x402 and Virtuals ACP), each with its unit, window and source; units differ, so totals are not summed. L402 and per-service MPP listings are not covered.

## Output

A JSON object with: a risk field (high/medium/low/unknown), chain and address echo, owner address, proxy facts (is_proxy, standard, implementation, admin), token metadata (name, symbol, decimals, total_supply), detected dangerous function selectors (mint/pause/blacklist booleans), human-readable reasons for the label, the full rule set applied, OFAC check errors, checked_at timestamp, sources, and a fixed disclaimer note.

## 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",
      "HEAD"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "address"
     ],
     "properties": {
      "chain": {
       "enum": [
        "ethereum",
        "base",
        "arbitrum",
        "polygon"
       ],
       "type": "string",
       "description": "Chain of the token; default base"
      },
      "address": {
       "type": "string",
       "pattern": "^0x[0-9a-fA-F]{40}$",
       "description": "Token contract address (0x + 40 hex)"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "address",
      "chain",
      "risk",
      "reasons",
      "rules",
      "token",
      "proxy",
      "powers",
      "sanctions",
      "errors",
      "checked_at",
      "sources",
      "note"
     ],
     "properties": {
      "note": {
       "type": "string",
       "description": "Fixed text: rule-based label, not an audit or advice; OFAC disclaimer"
      },
      "risk": {
       "enum": [
        "high",
        "medium",
        "low",
        "unknown"
       ],
       "type": "string",
       "description": "high, medium, low or unknown - by the rules in 'rules'"
      },
      "chain": {
       "type": "string",
       "description": "base, ethereum, arbitrum or polygon"
      },
      "owner": {
       "type": [
        "string",
        "null"
       ],
       "description": "owner() result; null when the contract has no owner() or it failed; the zero address means renounced"
      },
      "proxy": {
       "type": "object",
       "properties": {
        "admin": {
         "type": [
          "string",
          "null"
         ]
        },
        "is_proxy": {
         "type": "boolean"
        },
        "standard": {
         "type": [
          "string",
          "null"
         ]
        },
        "implementation": {
         "type": [
          "string",
          "null"
         ]
        },
        "implementation_code_read": {
  
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "note": "A rule-based label from on-chain facts, not an audit, a fraud score or investment advice: the rules are listed in full in 'rules' and applied to the facts shown. Facts come from public nodes at the time of the call and the OFAC SDN list as of listDate; a call that failed is listed in errors, never assumed. Screening against the OFAC SDN list as of 2026-10-02, not legal advice. Only the SDN list is checked (not OFAC's non-SDN Consolidated lists or other countries' lists). A possible name match needs human review, and no match does not mean a party is cleared. Not affiliated with or endorsed by OFAC or the U.S. Department of the Treasury.",
  "risk": "medium",
  "chain": "base",
  "owner": "0x3abd6f64a422225e61e435bae41db12096106df7",
  "proxy": {
   "admin": "0x4fc7850364958d97b4d3f5a08f79db2493f8ca44",
   "is_proxy": true,
   "standard": "OpenZeppelin (zeppelinos)",
   "implementation": "0x2ce6311ddae708829bc0784c967b7d77d19fd779",
   "implementation_code_read": true
  },
  "rules": [
   "high: the token address, its owner() or its proxy admin is an exact match on the OFAC SDN list (Digital Currency Address entries).",
   "medium: the token is an upgradeable proxy (EIP-1967 or OpenZeppelin implementation slot set: its code can be replaced), or it has a non-zero owner() and its bytecode (the implementation's, for a proxy) contains a mint, pause or blacklist function selector.",
   "unknown: the ERC-20 fields name, symbol, decimals and totalSupply could not all be read.",
   "low: none of the above.",
   "A selector in the bytecode means the function exists; who may call it is not checked. No contract code at the address, or no node answering, is refused before any charge."
  ],
  "token": {
   "name": "USD Coin",
   "symbol": "USDC",
   "decimals": 6,
   "total_supply": "4357394992.745585",
   "total_supply_raw": "4357394992745585"
  },
  "errors": [],
  "powers": {
   "mint": true,
   "pause": true,
   "blacklist": true
  },
  "address": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
  "chainId": 8453,
  "reasons": [
   "no exact OFAC SDN match for the token, its owner or its proxy admin",
   "upgradeable proxy (OpenZeppelin (zeppelinos)): implementation 0x2ce6311ddae708829bc0784c967b7d77d19fd779 can be replaced"
  ],
  "sources": [
   "base.drpc.org",
   "OFAC SDN list (treasury.gov) as of 2026-10-02"
  ],
  "sanctions": {
   "hits": [],
   "list": "OFAC SDN",
   "match": false,
   "method": "Exact match of the a
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/p0-token-risk-screener-a9c0b0aa/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev](https://www.zero.xyz/host/x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/llms.txt)
