{"uid":"cap_X4CN6v1IBLlOwlsy6aDxd","slug":"x402-blocknotify-com-afd05f14","name":"BlockNotify ERC-20 Token Resolver","description":"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.","url":"https://x402.blocknotify.com/v1/resolve-token","method":"POST","headers":{},"bodySchema":{"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","description":"Resolution provenance: registry = local hardcoded list, blocknotify = remote token database, user = caller-supplied tokenAddress + decimals."},"symbol":{"type":"string"},"address":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","description":"Canonical ERC-20 contract address."},"decimals":{"type":"integer","maximum":36,"minimum":0},"ambiguous":{"type":"object","description":"Set when the symbol matched multiple tokens; documents the count and the picked candidate id.","additionalProperties":true}},"description":"Normalized token identity. `source` indicates whether the answer came from the local hardcoded registry or the BlockNotify token database."},"candidates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"address":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","description":"Candidate token contract address."}}},"description":"Other tokens matching the symbol on the same chain (only present for ambiguous symbol lookups)."}}}}}}},"responseSchema":null,"example":{"request":{"address":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","network":"ethereum"},"response":{"ok":true,"token":{"name":"USDC","chain":"ethereum","source":"blocknotify","symbol":"USDC","address":"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","decimals":6}}},"exampleRequest":{"address":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","network":"ethereum"},"tags":["x402"],"displayCostAmount":"0.005","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"settled","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.005/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.005","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.005","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_i3YHFeawGKEcupa2WSsWI","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.005","costPer":"request","priority":0,"asset":null,"unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Resolves and normalizes ERC-20 token metadata (name, symbol, decimals) from a contract address on EVM chains","exampleAgentPrompt":"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.","exampleUseCases":null,"resultDescription":"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.","failureModes":["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"],"whenToPreferThis":"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.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-14T12:35:57.240Z","isFirstParty":false}