Wallets/tokens
Tokens held
$0.01per call after 25 free a dayLists a wallet's tokens (SPL Token and Token-2022) with exact amounts, whether each is verified, and USD value where priced.
Run to learn which tokens a wallet holds and how much. Ranked by USD value; unverified (often spam airdrop) tokens are flagged so you don't report fake holdings.
Keeps the model from guessing. Ranks holdings by USD value and flags unverified tokens, so an agent doesn't report a wallet's spam airdrops as real money.
Call it
| Transport | How |
|---|---|
| HTTP | POST /api/tools/tokens with a JSON body of the inputs below. |
| MCP | tools/call with name tokens on /mcp. |
Inputs
| Name | What it's looking for | Where to get it |
|---|---|---|
walletstring (base58 address), required | The wallet to read the tokens of. | The user's address (from their wallet app) or your agent's public key. Not a .sol name or ticker. |
how_manyinteger 1-100, optional | How many tokens, highest USD value first, to return. | Default 25. |
include_emptyboolean, optional | Include empty token accounts. | True only to find empty accounts, e.g. to close them. |
network"mainnet-beta" | "devnet", optional | Default "mainnet-beta" (real money). | "devnet" only for test wallets. |
Returned fields
Every field the tool returns, what it is, and exactly how it's worked out.
| Field | What it is | How it's worked out |
|---|---|---|
walletstring | The wallet that was read. | Your input, cleaned up. |
accounts_totalnumber | Every token account the wallet owns, empty ones included. | Token accounts across the SPL Token and Token-2022 programs. |
accounts_with_balancenumber | Token accounts holding more than zero. | Accounts with a raw amount above 0. |
returnednumber | How many tokens are in this answer. | Up to how_many, after sorting. |
unverified_countnumber | Returned tokens Jupiter doesn't mark verified. A big number usually means spam airdrops. | Tokens without Jupiter's verified flag, or that Jupiter doesn't know. |
total_usdnumber | USD value of the returned tokens that are verified and priced. Spam often has a price from a tiny pool, so unverified tokens are left out. | Sum of tokens[].usd_value for verified tokens. Unpriced tokens add nothing, so this can be low. |
unverified_usdnumber | The claimed USD value of the unverified tokens, kept apart. Don't trust it. | Sum of tokens[].usd_value for unverified tokens. |
tokens[].addressstring | The token's address, its unique identity. Tickers aren't unique; addresses are. | From the token account. |
tokens[].symbol / namestring | null | Ticker and name from Jupiter. Copycats can share a ticker, so trust the address, not the symbol. | Jupiter token search by address. |
tokens[].verifiedboolean | Whether Jupiter lists the token as verified. | Jupiter's isVerified flag. false when unknown. |
tokens[].amountstring (decimal) | The balance in normal units. | raw_amount / 10^decimals with exact integer math. |
tokens[].raw_amountstring (integer) | The balance in raw units, the number that goes into transfers. | From the token account. |
tokens[].decimalsnumber | How many decimal places the token uses. | From the token account. |
tokens[].holding_accountstring | The account that holds this balance (not the wallet itself). | The token account's address. |
tokens[].token_program"spl-token" | "token-2022" | Which token program owns the account. Transfers must use the same one. | Which program's lookup found it. |
tokens[].frozenboolean | True if the issuer froze this account. Frozen tokens can't move. | The account state is "frozen". |
tokens[].usd_pricenumber | null | Price of one token in USD. | Jupiter usdPrice. null when Jupiter has no price. |
tokens[].usd_valuenumber | null | USD value of this holding. | amount x usd_price, rounded to cents. null without a price. |
Limits
- Prices come from Jupiter and can lag, or be missing for thinly traded tokens.
- Very large wallets are capped: prices are looked up for at most 300 tokens.