# BlockNotify ERC-20 Token Resolver

> BlockNotify ERC-20 Token Resolver is a paid API for AI agents from x402.blocknotify.com, paid per call via x402, $0.005/call, status unknown (last checked 2026-09-14).

Resolves and normalizes ERC-20 token metadata (name, symbol, decimals) from a contract address on EVM chains

## Facts

- Endpoint: POST https://x402.blocknotify.com/v1/resolve-token
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/x402-blocknotify-com-afd05f14
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_X4CN6v1IBLlOwlsy6aDxd

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 x402-blocknotify-com-afd05f14 -d '<json body>'
```

Example prompt: What ERC-20 token is at contract address 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 on Ethereum mainnet — give me the name, symbol, and decimals so I can safely interpret the transfer amounts.

## When to prefer this

Use this endpoint when an agent needs to safely interpret token amounts in EVM transactions and must know the token's decimal precision, or when you have a raw contract address and need to display a human-readable token name and symbol. Prefer this over manual RPC calls when you want a cached, normalized, cost-effective lookup without spinning up your own Web3 infrastructure.

## Known failure modes

- Invalid or non-ERC-20 contract address returns an error indicating the address is not a valid token contract
- Unsupported EVM chain returns a chain-not-supported error
- Malformed contract address (wrong checksum or length) returns a validation error
- Contract exists but does not implement ERC-20 interface returns metadata resolution failure
- Network timeout or RPC unavailability may return a transient 5xx error

## How this service works

Resolve and normalize ERC-20 token metadata from a contract address. Returns token name, symbol, decimals, and normalized identity so agents can safely interpret token interactions.

## Output

Returns the token's canonical name (e.g. 'USD Coin'), symbol (e.g. 'USDC'), and decimal precision (e.g. 6), providing a normalized token identity that agents can use to safely interpret on-chain token interactions and human-readable amounts.

## Example request

```json
{
 "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
 "network": "ethereum"
}
```

## 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",
    "bodyType",
    "body"
   ],
   "properties": {
    "body": {
     "type": "object",
     "anyOf": [
      {
       "required": [
        "symbol"
       ]
      },
      {
       "required": [
        "address"
       ]
      }
     ],
     "properties": {
      "chain": {
       "enum": [
        "ethereum",
        "polygon",
        "arbitrum",
        "optimism",
        "base"
       ],
       "type": "string",
       "description": "Target EVM chain. The merchant maps this to the appropriate RPC for simulation."
      },
      "symbol": {
       "type": "string",
       "maxLength": 20,
       "minLength": 1,
       "description": "Token ticker (e.g. \"USDC\", \"UNI\"). Resolved via local registry first, then BlockNotify."
      },
      "address": {
       "type": "string",
       "pattern": "^0x[a-fA-F0-9]{40}$",
       "description": "ERC-20 contract address. Use to resolve a specific token or to disambiguate when a symbol is shared."
      }
     }
    },
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "POST"
     ],
     "type": "string"
    },
    "bodyType": {
     "enum": [
      "json",
      "form-data",
      "text"
     ],
     "type": "string"
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "ok",
      "token"
     ],
     "properties": {
      "ok": {
       "type": "boolean",
       "const": true
      },
      "token": {
       "type": "object",
       "required": [
        "chain",
        "address",
        "decimals",
        "symbol",
        "source"
       ],
       "properties": {
        "name": {
         "type": "string"
        },
        "chain": {
         "enum": [
          "ethereum",
          "polygon",
          "arbitrum",
          "optimism",
          "base"
         ],
         "type": "string",
         "description": "Target EVM chain. The merchant maps this to the appropriate RPC for simulation."
        },
        "source": {
         "enum": [
          "registry",
          "blocknotify",
          "user"
         ],
         "type": "string",
         
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/x402-blocknotify-com-afd05f14/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402.blocknotify.com](https://www.zero.xyz/host/x402.blocknotify.com/llms.txt)
