Resolve an address, a mint or a link to the token it is
onchain_agent_resolve_tokenUSE WHEN a person or an agent has dropped a contract address, a Solana mint or a link and the next step needs to know what it IS before anything else happens: chain, address, name, symbol, decimals, token program, the main pool and that pool's liquidity, and the token's USD price. Read-only.
INPUT: a Base contract address (0x…), a Solana mint, or a link from dexscreener.com, geckoterminal.com, birdeye.so, pump.fun, gmgn.ai, basescan.org, solscan.io, jup.ag, app.uniswap.org, aerodrome.finance, zora.co, clanker.world. The token is taken from the link's path with no request for the link itself; a DexScreener or GeckoTerminal pool link is resolved through their public API to the pool's BASE token (not the quote token). A link on another chain or another site, a profile page, or a bare symbol is refused with the reason — nothing is guessed.
OUTPUT: every figure has an entry in sources naming where it was read and when; every null has an entry in gaps saying why (null is unknown, never zero). Decimals and the token program come from the chain when it answers. On Solana the mint's mint authority, freeze authority and Token-2022 extensions are read from the chain ({ set: false } is a revoked authority). Price and liquidity are ONE pool's listing from DexScreener (GeckoTerminal as a fallback) at the time given — never summed across pools or venues, not a quote, not a fill. Answers are held for 60 seconds per token. The price is one pool's listing, used here to identify the token; this is not a price source and not a quote.
RULE ENFORCED: this describes and recommends nothing, and says nothing about whether a token is safe. It is the step BEFORE evidence: run onchain_agent_preflight on the same token for what the chain says about its authorities, extensions and liquidity, and re-read decimals and the token program on-chain before signing anything.
Returns (json): { chain, chain_assumed (true only when a bare 0x address named no chain and Base was assumed), address, name, symbol, decimals, program: "erc20" | "spl" | "token-2022" | null, price_usd, liquidity_usd, main_pool: { venue, labels, address, quote_token: { address, symbol } } | null, mint_authority?, freeze_authority?, token2022_extensions? (Solana), sources: [{ field, source, as_of }], gaps: [{ field, reason }], resolved_from: { via, pool? }, checked_at, caveat, meta: { signature } }. Nothing at the address returns { resolved: false, code: "not_found", error }.
Example: { input: "https://dexscreener.com/base/0xc9034c3e7f58003e6ae0c8438e7c8f4598d5acaa" }
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Optional. Must agree with the input; it only supplies a chain the input leaves open (a Uniswap link with no chain). | |
| input | Yes | What to resolve: a contract address on Base (0x…), a Solana mint (base58), or a link from dexscreener.com, geckoterminal.com, birdeye.so, pump.fun, gmgn.ai, basescan.org, solscan.io, jup.ag, app.uniswap.org, aerodrome.finance, zora.co, clanker.world. A DexScreener or GeckoTerminal POOL link resolves to the pool's base token. A bare symbol is refused, never guessed. | |
| response_format | No | Text format; structuredContent is JSON either way. | markdown |