Wallets/tokens

Tokens held

$0.01per call after 25 free a day

Lists 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

TransportHow
HTTPPOST /api/tools/tokens with a JSON body of the inputs below.
MCPtools/call with name tokens on /mcp.

Inputs

NameWhat it's looking forWhere to get it
wallet
string (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_many
integer 1-100, optional
How many tokens, highest USD value first, to return.Default 25.
include_empty
boolean, 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.

FieldWhat it isHow it's worked out
wallet
string
The wallet that was read.Your input, cleaned up.
accounts_total
number
Every token account the wallet owns, empty ones included.Token accounts across the SPL Token and Token-2022 programs.
accounts_with_balance
number
Token accounts holding more than zero.Accounts with a raw amount above 0.
returned
number
How many tokens are in this answer.Up to how_many, after sorting.
unverified_count
number
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_usd
number
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_usd
number
The claimed USD value of the unverified tokens, kept apart. Don't trust it.Sum of tokens[].usd_value for unverified tokens.
tokens[].address
string
The token's address, its unique identity. Tickers aren't unique; addresses are.From the token account.
tokens[].symbol / name
string | null
Ticker and name from Jupiter. Copycats can share a ticker, so trust the address, not the symbol.Jupiter token search by address.
tokens[].verified
boolean
Whether Jupiter lists the token as verified.Jupiter's isVerified flag. false when unknown.
tokens[].amount
string (decimal)
The balance in normal units.raw_amount / 10^decimals with exact integer math.
tokens[].raw_amount
string (integer)
The balance in raw units, the number that goes into transfers.From the token account.
tokens[].decimals
number
How many decimal places the token uses.From the token account.
tokens[].holding_account
string
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[].frozen
boolean
True if the issuer froze this account. Frozen tokens can't move.The account state is "frozen".
tokens[].usd_price
number | null
Price of one token in USD.Jupiter usdPrice. null when Jupiter has no price.
tokens[].usd_value
number | 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.