# Base Token Check by LIN Desk

> Base Token Check by LIN Desk is a paid API for AI agents from lin-desk-x402.lindesk.workers.dev, paid per call via x402, $0.003/call, status unknown (last checked 2026-10-10).

Checks an ERC-20 token contract on Base mainnet for name, symbol, decimals, total supply, owner, proxy/upgradeability status, and risk flags.

## Facts

- Endpoint: GET https://lin-desk-x402.lindesk.workers.dev/v1/base/token?utm_source=zero.xyz
- Price: $0.003/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-10
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/base-token-check-by-lin-desk-895972ac
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_W34P_Q7BJlodGyxfO2t5N

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-token-check-by-lin-desk-895972ac
```

Example prompt: Before I buy this token, can you check the contract at 0x833589fcd6edb6e08f4c7c32d4f71b54bda02913 on Base — I want to know if it's a real ERC-20, who owns it, whether ownership is renounced, and if it's an upgradeable proxy?

## When to prefer this

Choose this endpoint when an AI agent needs a cheap, fast, read-only on-chain check of an ERC-20 contract on Base mainnet before trading, listing, or accepting a token. It is specifically valuable for detecting upgradeable proxy patterns (EIP-1967 and ZeppelinOS) and renounced ownership — signals not available from simple token metadata APIs. Prefer it over general blockchain explorers when you need structured, machine-readable output with risk flags at low cost ($0.003/call via x402 USDC on Base) and no API key setup.

## Known failure modes

- Non-contract address supplied — returns an is_contract:false result but is not charged
- Upstream RPC error — returns an error response, not charged
- Invalid address format — rejected by input validation before the call is made
- Token does not implement standard ERC-20 interface — erc20 field returns false
- Rate limiting or network timeout from the Base RPC provider

## How this service works

Use when an agent needs a quick ERC-20 contract check on Base before trading or accepting a token: name/symbol/decimals/total supply, owner and whether ownership is renounced, EIP-1967 / legacy proxy (upgradeable) detection, flags. $0.003 per call, USDC on Base (x402). Read-only; not security advice. Non-contract addresses and upstream errors are not charged.

## Output

A JSON object containing: token name, symbol, decimals, total supply (human-readable and raw), owner address, ownership_renounced boolean, proxy details (EIP-1967 admin/implementation, ZeppelinOS implementation), is_contract boolean, risk flags array (e.g. 'upgradeable_proxy_zeppelinos', 'has_owner'), chain, chain_id, block_number, bytecode_bytes, and a cached boolean indicating whether the result was served from cache.

## 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",
      "DELETE"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "address"
     ],
     "properties": {
      "address": {
       "type": "string",
       "pattern": "^0x[0-9a-fA-F]{40}$",
       "description": "ERC-20 contract address on Base mainnet"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "properties": {
      "name": {
       "type": [
        "string",
        "null"
       ]
      },
      "erc20": {
       "type": "boolean"
      },
      "flags": {
       "type": "array"
      },
      "owner": {
       "type": [
        "string",
        "null"
       ]
      },
      "proxy": {
       "type": "object"
      },
      "symbol": {
       "type": [
        "string",
        "null"
       ]
      },
      "address": {
       "type": "string"
      },
      "decimals": {
       "type": [
        "integer",
        "null"
       ]
      },
      "total_supply": {
       "type": [
        "string",
        "null"
       ]
      },
      "ownership_renounced": {
       "type": [
        "boolean",
        "null"
       ]
      }
     }
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "name": "USD Coin",
  "as_of": 1791020283,
  "chain": "base",
  "erc20": true,
  "flags": [
   "upgradeable_proxy_zeppelinos",
   "has_owner"
  ],
  "owner": "0x3abd6f64a422225e61e435bae41db12096106df7",
  "proxy": {
   "eip1967_admin": null,
   "eip1967_implementation": null,
   "zeppelinos_implementation": "0x2ce6311ddae708829bc0784c967b7d77d19fd779"
  },
  "cached": false,
  "symbol": "USDC",
  "address": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
  "chain_id": 8453,
  "decimals": 6,
  "is_contract": true,
  "block_number": 52115468,
  "total_supply": "4372296189.660356",
  "bytecode_bytes": 1852,
  "total_supply_raw": "4372296189660356",
  "ownership_renounced": false
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/base-token-check-by-lin-desk-895972ac/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from lin-desk-x402.lindesk.workers.dev](https://www.zero.xyz/host/lin-desk-x402.lindesk.workers.dev/llms.txt)
