{"name":"find_token","oldName":"resolve_token","title":"Ticker to token address","category":"tokens","useWhen":"Run whenever a user names a token by ticker or name (\"buy BONK\"). Tickers aren't unique and copycats reuse them. Never pick a token address from memory.","benefit":{"kind":"money","text":"Copycats reuse popular tickers: a search for BONK finds several unverified fakes. This gives the verified token address so the agent doesn't buy a fake."},"description":"Finds the real token address for a ticker or name, ranks the matches by verification and liquidity, and warns when copycats share the ticker.","price":"$0.01","priceText":"25 free calls a day, then $0.01 USDC per call (x402)","http":{"method":"POST","path":"/api/tools/find_token","body":"JSON object with the inputs below"},"mcp":{"method":"tools/call","name":"find_token"},"inputs":[{"name":"name","type":"string","required":true,"lookingFor":"The token's ticker, name or address, e.g. \"BONK\", \"Jupiter\", \"USDC\".","whereToGet":"The token name exactly as the user wrote it."}],"outputs":[{"field":"name","type":"string","is":"What was searched.","howWorkedOut":"Your input, trimmed."},{"field":"best","type":"object | null","is":"The token we recommend, or null when it isn't safe to pick one for you.","howWorkedOut":"The verified token whose ticker exactly matches (any case) with the most liquidity. Null if there's no verified exact match."},{"field":"confidence","type":"\"high\" | \"medium\" | \"low\"","is":"How safe it is to use best without asking the user.","howWorkedOut":"high: a verified exact match and no other verified token shares the ticker. medium: another verified token shares it. low: no verified exact match."},{"field":"copycats","type":"number","is":"Unverified tokens using the same ticker. Usually scams copying the real one.","howWorkedOut":"Matches with the same ticker (any case) that aren't verified."},{"field":"candidates[].address","type":"string","is":"The token's address, its real identity.","howWorkedOut":"Jupiter token search."},{"field":"candidates[].symbol / name","type":"string","is":"Ticker and display name.","howWorkedOut":"Jupiter token search."},{"field":"candidates[].decimals","type":"number","is":"Decimal places. Needed to convert amounts.","howWorkedOut":"Jupiter token data."},{"field":"candidates[].verified","type":"boolean","is":"Whether Jupiter lists the token as verified.","howWorkedOut":"Jupiter's isVerified flag."},{"field":"candidates[].liquidity_usd","type":"number | null","is":"How much can be traded across DEX pools, in USD. Low means trades move the price a lot.","howWorkedOut":"Jupiter liquidity, rounded to dollars."},{"field":"candidates[].holders","type":"number | null","is":"How many wallets hold the token.","howWorkedOut":"Jupiter holderCount."},{"field":"candidates[].real_trading_score","type":"number | null","is":"Jupiter's 0-100 estimate of real (not bot) trading.","howWorkedOut":"Jupiter organicScore, rounded."},{"field":"candidates[].token_program","type":"\"spl-token\" | \"token-2022\"","is":"Which token program the token uses.","howWorkedOut":"Jupiter tokenProgram."},{"field":"candidates[].can_mint_more / can_freeze","type":"boolean | null","is":"Whether someone can still create more of it, or freeze holders' tokens. false is safer.","howWorkedOut":"Jupiter audit data. null when unknown. token_safety checks these on chain."},{"field":"next_step","type":"string","is":"What to do next, in one sentence.","howWorkedOut":"Built from confidence and copycats."}],"notes":[],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80}},"required":["name"]}}