# Base ERC-20 Token Safety Scanner

> Base ERC-20 Token Safety Scanner is a paid API for AI agents from x402-data-api.bodhinindustries.workers.dev, paid per call via x402, $0.01/call, status unknown (last checked 2026-09-14).

Scans a Base chain ERC-20 token contract address and returns a live-computed safety verdict, honeypot detection, tax analysis, liquidity data, and ownership risk flags — all derived directly from on-chain data.

## Facts

- Endpoint: GET https://x402-data-api.bodhinindustries.workers.dev/scan
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/base-erc-20-token-safety-scanner-57a84130
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_2vGeyPXJeJiXZJvwaKoU7

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 base-erc-20-token-safety-scanner-57a84130
```

Example prompt: Can you run a full safety scan on this Base token — 0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed — and tell me if it's a honeypot, what the buy and sell taxes are, whether the owner has been renounced, and if there are any red flags I should know about?

## When to prefer this

Use this endpoint when an agent or user needs to assess the safety of a specific Base chain ERC-20 token before trading or approving it, especially when trust in third-party data sources is a concern — this endpoint computes everything live from raw Base chain state. Prefer this over generic token info APIs when honeypot detection, tax analysis, and rug-pull risk flags are required.

## Known failure modes

- Invalid or non-ERC-20 contract address returns unknown verdict
- Token with no Uniswap pool returns pair.found=false and limited analysis
- Newly deployed contracts may have insufficient on-chain history for full scan
- Network congestion on Base may delay response
- Contracts without an owner() function return ownerRenounced=null

## How this service works

Self-computed Base onchain toolkit for AI agents: ERC-20 safety scan, manipulation-resistant TWAP price oracle, gas/fee oracle, calldata decoder, token/address/contract intel, wallet approval-risk audit, and batch token triage — all computed live from raw Base chain, no third-party data.

## Output

Returns a structured JSON object with a safety verdict ('likely_ok', 'caution', 'honeypot', or 'unknown'), boolean honeypot flag, buy/sell tax in basis points, list of risk flags (e.g. 'sell_reverted', 'high_tax', 'low_liquidity', 'owner_not_renounced'), DEX pool details including WETH liquidity depth, owner address and renounced status, sellability from simulated round-trip, token symbol and decimals, and a timestamp — all computed live from Base chain with no third-party data.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "token"
 ],
 "properties": {
  "token": {
   "type": "string",
   "description": "Base ERC-20 contract address (0x + 40 hex chars)."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "token",
  "verdict",
  "thirdPartyDataUsed",
  "computedAt"
 ],
 "properties": {
  "pair": {
   "type": "object",
   "properties": {
    "dex": {
     "type": "string",
     "description": "e.g. uniswap-v3"
    },
    "found": {
     "type": "boolean"
    },
    "feeTier": {
     "type": "integer"
    },
    "quoteAsset": {
     "type": "string",
     "description": "WETH in v1"
    },
    "poolAddress": {
     "type": "string"
    },
    "liquidityWeth": {
     "type": "number",
     "description": "WETH depth of deepest token/WETH pool"
    }
   }
  },
  "block": {
   "type": "integer",
   "description": "Base block height of scan"
  },
  "token": {
   "type": "string",
   "description": "ERC-20 address scanned"
  },
  "reason": {
   "type": [
    "string",
    "null"
   ]
  },
  "symbol": {
   "type": "string"
  },
  "verdict": {
   "enum": [
    "likely_ok",
    "caution",
    "honeypot",
    "unknown"
   ],
   "type": "string",
   "description": "'unknown' is NOT 'safe'"
  },
  "decimals": {
   "type": "integer"
  },
  "sellable": {
   "type": "boolean",
   "description": "buy-then-sell round trip succeeded in sim"
  },
  "buyTaxBps": {
   "type": [
    "integer",
    "null"
   ],
   "description": "buy tax in basis points (100=1%)"
  },
  "riskFlags": {
   "type": "array",
   "items": {
    "type": "string"
   },
   "description": "e.g. sell_reverted, high_tax, low_liquidity, owner_not_renounced"
  },
  "computedAt": {
   "type": "string",
   "format": "date-time"
  },
  "isHoneypot": {
   "type": "boolean",
   "description": "buy ok but sell leg reverted (cannot exit)"
  },
  "sellTaxBps": {
   "type": [
    "integer",
    "null"
   ],
   "description": "sell tax in basis points"
  },
  "ownerAddress": {
   "type": [
    "string",
    "null"
   ]
  },
  "ownerRenounced": {
   "type": [
    "boolean",
    "null"
   ],
   "description": "true if owner() is zero/dead; null if no owner fn"
  },
  "thirdPartyDataUsed": {
   "type": "boolean",
   "description": "always false — auditable"
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/base-erc-20-token-safety-scanner-57a84130/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402-data-api.bodhinindustries.workers.dev](https://www.zero.xyz/host/x402-data-api.bodhinindustries.workers.dev/llms.txt)
