# ERC-20 Token Risk Analyzer (x402)

> ERC-20 Token Risk Analyzer (x402) is a paid API for AI agents from freetier-agent-api.pages.dev, paid per call via x402, $0.005/call, status unknown (last checked 2026-10-30).

Analyzes an ERC-20 token contract address on Base or Ethereum and returns a risk score, flags, liquidity data, and a safety verdict using on-chain heuristics.

## Facts

- Endpoint: GET https://freetier-agent-api.pages.dev/api/token-risk?utm_source=zero.xyz
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-30
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/erc-20-token-risk-analyzer-x402-4898f5dc
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_YNZT571eTEkQn6MnMsiwU

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 erc-20-token-risk-analyzer-x402-4898f5dc
```

Example prompt: Can you run a risk check on this token — contract address 0x4ed4e862860bed51a9570b96d89af5e1b0efefed on Base — and tell me the risk score, any red flags like pausable transfers, and whether the owner has been renounced?

## When to prefer this

Choose this endpoint when you need a fast, pay-per-call (no signup) on-chain token risk assessment for Base or Ethereum ERC-20 tokens. It is ideal for AI agents that need to programmatically screen tokens before trades, surface rug-pull signals, or audit token contracts without setting up API keys. Prefer this over manual block explorer inspection or expensive subscription risk APIs when operating in an autonomous, low-friction crypto research workflow.

## Known failure modes

- Invalid or non-contract address returns isContract: false or an error
- Unsupported chain value returns a validation error
- Token with no on-chain liquidity may return null liquidity fields
- Payment failure via x402 (insufficient USDC balance) results in 402 response
- RPC node timeout or unavailability may cause partial or failed response
- Contract with obfuscated bytecode may result in incomplete flag detection

## How this service works

Invoice-to-JSON, on-chain tools (transaction explainer + payment check, wallet profile, contract ABI, ERC-20 token risk), company contacts and web-to-RAG for AI agents. Pay per call with x402 (USDC on Base). No signup, no API key.

## Output

Returns a JSON object with the token's name, symbol, chain, contract address, a numeric risk score (0–100), a verdict string (e.g. 'no_major_red_flags_found'), an array of risk flags with severity levels and evidence, liquidity pool data (pools, approximate liquidity in USD, burned percentage, owner share), whether the contract is a proxy, whether the owner is renounced, total supply, decimals, and a disclaimer. Also includes the RPC used, the block at which it was checked, and a list of checks not performed (e.g. honeypot sell simulation).

## 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",
     "required": [
      "address"
     ],
     "properties": {
      "chain": {
       "enum": [
        "base",
        "ethereum"
       ],
       "type": "string"
      },
      "address": {
       "type": "string",
       "description": "token contract address 0x..."
      }
     }
    }
   }
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "properties": {
      "rpc": {
       "type": [
        "string",
        "null"
       ]
      },
      "name": {
       "type": [
        "string",
        "null"
       ]
      },
      "chain": {
       "type": [
        "string",
        "null"
       ]
      },
      "flags": {
       "type": "array",
       "items": {
        "type": [
         "object",
         "null"
        ]
       }
      },
      "owner": {
       "type": [
        "string",
        "null"
       ]
      },
      "proxy": {},
      "method": {
       "type": [
        "string",
        "null"
       ]
      },
      "symbol": {
       "type": [
        "string",
        "null"
       ]
      },
      "address": {
       "type": [
        "string",
        "null"
       ]
      },
      "sources": {
       "type": "array",
       "items": {
        "type": [
         "object",
         "null"
        ]
       }
      },
      "verdict": {
       "type": [
        "string",
        "null"
       ]
      },
      "decimals": {
       "type": [
        "number",
        "null"
       ]
      },
      "liquidity": {
       "type": "object",
       "properties": {
        "pools": {
         "type": [
          "array",
          "null"
         ]
        },
        "ethUsd": {
         "type": [
          "number",
          "null"
         ]
        },
        "burnedPct": {
         "type": [
          "number",
          "null"
         ]
        },
        "poolSharePct": {
         "type": [
          "number",
          "null"
         ]
        },
        "ownerSharePct": {
         "type": [
 
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "rpc": "https://base-rpc.publicnode.com",
  "name": "Degen",
  "chain": "base",
  "flags": [
   {
    "key": "pause",
    "label": "Transfers can be paused",
    "evidence": {
     "selectors": [
      "0x8456cb59"
     ]
    },
    "severity": "medium"
   }
  ],
  "owner": "0x704ec5c12ca20a293c2c0b72b22619a4231f3c0d",
  "method": "Deterministic heuristics over public on-chain data via JSON-RPC (bytecode selector scan, EIP-1967/1167 proxy slots, owner(), DEX factory lookups, Chainlink E...",
  "symbol": "DEGEN",
  "address": "0x4ed4e862860bed51a9570b96d89af5e1b0efefed",
  "sources": [
   {
    "url": "https://www.publicnode.com/",
    "name": "Public JSON-RPC endpoints (publicnode, Tenderly, Blast, base.org, with failover; batched): eth_call, eth_getCode, eth_getStorageAt; Uniswap v2/v3, Aerodrome ..."
   }
  ],
  "verdict": "no_major_red_flags_found",
  "decimals": 18,
  "liquidity": {
   "pools": [
    {
     "dex": "uniswap-v2",
     "pool": "0x7c327d692b72f60b28aecedbcc1ba784712fe7b2",
     "quote": "WETH",
     "quoteBalance": 0.0208,
     "quoteSideUsd": 48,
     "tokenBalance": 53144.7496
    }
   ],
   "ethUsd": 2323.21697782,
   "burnedPct": 0,
   "poolSharePct": 0.78,
   "ownerSharePct": 0.52,
   "approxLiquidityUsd": 489006
  },
  "riskScore": 16,
  "disclaimer": "Automated heuristic check of public on-chain data. Not financial advice; a clean result does not mean a token is safe.",
  "isContract": true,
  "notChecked": [
   "honeypot sell simulation"
  ],
  "totalSupply": 35957026406.6835,
  "scoreMeaning": "Sum of flag weights (high 30, medium 12, low 4), capped at 100. Measures what an owner/admin can do to holders and how thin liquidity is; it is not a scam pr...",
  "checkedAtBlock": 53038058,
  "ownerRenounced": false
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/erc-20-token-risk-analyzer-x402-4898f5dc/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from freetier-agent-api.pages.dev](https://www.zero.xyz/host/freetier-agent-api.pages.dev/llms.txt)
