# OP Mainnet ERC-20 Token Rug Check & Due Diligence

> OP Mainnet ERC-20 Token Rug Check & Due Diligence is a paid API for AI agents from onchaincheck.dev, paid per call via x402, $0.01/call, status unknown (last checked 2026-10-29).

Returns a 0-100 risk score with reasons, token metadata, ownership status, privileged-function flags, and Uniswap v3/Velodrome market data for any ERC-20 token on OP Mainnet.

## Facts

- Endpoint: GET https://onchaincheck.dev/optimism/token?utm_source=zero.xyz
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-29
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/op-mainnet-erc-20-token-rug-check-due-diligence-25bf2078
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_sWHxTvHTlHCokwry7bcOZ

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 op-mainnet-erc-20-token-rug-check-due-diligence-25bf2078
```

Example prompt: Can you run a rug check on the Optimism token at 0x4200000000000000000000000000000000000042 — I want to see its risk score, whether ownership is renounced, if it can mint new tokens, and what its current price and liquidity look like on Uniswap or Velodrome?

## When to prefer this

Use this endpoint when you need a fast, structured due-diligence snapshot of any ERC-20 on OP Mainnet — covering both security risk (ownership, mint/blacklist/pause functions, proxy upgradeability) and market context (price, liquidity, FDV from Uniswap v3 or Velodrome) in a single call. Prefer it over generic blockchain RPCs when you need opinionated risk scoring with human-readable reasons rather than raw contract data, and over the Base or Ethereum sibling endpoints when the token is specifically deployed on Optimism.

## Known failure modes

- Invalid or non-checksummed address format returns a 400 validation error
- Token contract does not exist on OP Mainnet returns an error or empty result
- No WETH or USDC liquidity pool found sets noLiquidPool flag to true and omits market data
- Bytecode analysis may produce false positives or misses for privileged functions
- Unverified proxy contracts may not be detectable as upgradeable
- Chainlink price feed unavailable may cause nativeUsd to be absent

## How this service works

Rug check and due-diligence snapshot of an ERC-20 token on OP Mainnet: a 0-100 risk score with reasons, name, symbol, decimals, supply, owner and whether ownership is renounced, upgradeable-proxy detection, owner-only functions found in the bytecode (mint, pause, blacklist, fee changes), and USD price, liquidity and FDV from the deepest WETH or USDC pool on Uniswap v3 or Velodrome. Facts only, no buy or sell opinion.

## Output

A JSON object containing: a 0-100 numeric risk score with a level (low/medium/high) and a list of reason codes and human-readable descriptions; token metadata (name, symbol, decimals, total supply, owner address, ownershipRenounced flag); a privilegedFunctions map (mint, pause, blacklist, setFees, tradingSwitch, maxTransaction); a proxy.upgradeable flag; market data from the deepest WETH or USDC pool on Uniswap v3 or Velodrome (priceUsd, quoteSideLiquidityUsd, fullyDilutedValueUsd, feeTierBps, pairedWith, dex, pool address, poolsFound); native ETH/USD price from Chainlink; and a disclaimer note about bytecode-based detection accuracy.

## 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": {
      "address": {
       "type": "string",
       "pattern": "^0x[0-9a-fA-F]{40}$",
       "description": "Token contract address on OP Mainnet"
      }
     },
     "additionalProperties": false
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object"
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "name": "Optimism",
  "risk": {
   "level": "medium",
   "score": 30,
   "reasons": [
    {
     "code": "can-mint",
     "text": "The owner can mint new tokens, diluting holders.",
     "points": 25
    },
    {
     "code": "owner-not-renounced",
     "text": "Ownership is not renounced.",
     "points": 5
    }
   ],
   "summary": "Medium risk: the owner can mint new tokens, diluting holders; ownership is not renounced."
  },
  "asset": {
   "known": false
  },
  "chain": "optimism",
  "flags": {
   "canMint": true,
   "ownerCanAct": true,
   "upgradeable": false,
   "canBlacklist": false,
   "noLiquidPool": false,
   "canChangeFees": false,
   "thinLiquidity": false
  },
  "notes": "Privileged functions are detected from bytecode selectors and may have false positives or misses. Liquidity is the WETH or USDC held by the deepest Uniswap v3 or velodrome pool found.",
  "owner": "0x5C4e7Ba1E219E47948e6e3F55019A647bA501005",
  "proxy": {
   "upgradeable": false
  },
  "market": {
   "dex": "uniswap-v3",
   "pool": "0x68F5C0A2DE713a54991E01858Fd27a3832401849",
   "priceUsd": 0.120202,
   "feeTierBps": 30,
   "pairedWith": "WETH",
   "poolsFound": 10,
   "fullyDilutedValueUsd": 516300000,
   "quoteSideLiquidityUsd": 108900
  },
  "symbol": "OP",
  "address": "0x4200000000000000000000000000000000000042",
  "decimals": 18,
  "nativeUsd": {
   "price": 2402.8,
   "source": "Chainlink ETH/USD",
   "symbol": "ETH",
   "updatedAt": "2026-10-23T06:10:55.000Z"
  },
  "totalSupply": 4294963292.25,
  "ownershipRenounced": false,
  "privilegedFunctions": {
   "mint": true,
   "pause": false,
   "setFees": false,
   "blacklist": false,
   "tradingSwitch": false,
   "maxTransaction": false
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/op-mainnet-erc-20-token-rug-check-due-diligence-25bf2078/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from onchaincheck.dev](https://www.zero.xyz/host/onchaincheck.dev/llms.txt)
