Skip to main content
Glama

My balances

get_my_balances
Read-only

The user's CURRENT holdings in their Solana agent wallet, with balances and USD values. USDC is your cash (flagged is_cash: true). SOL and every other token are positions; sell with quick_sell to raise USDC. What each part contains:

  • tokens — EVERYTHING held in the wallet, and the authoritative answer to 'what do I own'. It INCLUDES the native coin (SOL, flagged is_native: true) and the USD funding asset (USDC, flagged is_quote: true) whenever their balance is above zero; every other row has both flags false. An empty tokens means the wallet really is empty.

  • native_token / usd_token — the same native-coin and funding-asset balances again, as fixed slots that are present even at zero. Use them for the affordability check; never add them to the tokens total, they are already in it.

  • Native SOL is read from the CHAIN at call time: balance_source: "chain". If that read failed it is Moby's stored snapshot instead (balance_source: "ledger") — say the SOL figure may be stale. ledger_disagrees: true only means the stored snapshot was wrong; the quantity shown is the chain's.

  • swap_user_tokens — the swap LEDGER: cost basis and PnL per position. Its quantities are NOT the amounts held; where it disagrees with tokens, tokens is right. HOW MUCH THE USER HOLDS comes from the CHAIN and is reported by get_my_balances, get_my_token_balance and get_my_position (balance_source: "chain"). WHAT IT COST — cost basis, average entry, realised PnL, trade history — comes from Moby's swap ledger, which only sees swaps Moby executed. Never quote a ledger quantity as the amount held: on live accounts it runs several times high AND several times low against the chain, and a sell sized from it fails on-chain. IMPORTANT: get_my_closed_positions returns ONLY positions the user has already exited. Positions the user still holds come from get_my_balances. Never tell a user they hold nothing based on get_my_closed_positions being empty. asset_class: tokenized_stock marks tokenized equities (treat as stock proxies, not memecoins). ⚠ ONE WALLET. For the agent's equity as a single total, call get_my_portfolio instead; this tool is the right one for the per-token detail and for the affordability check before a trade.

Balances other than native SOL come from a cached snapshot that lags a deposit made outside Moby. If the user says they just funded the wallet and the balance does not show it, call this ONCE more with refresh=true before telling them anything is wrong — their money is on chain either way. Do not pass refresh routinely: it is much slower.

USDC split (ENG-1803): available_usdc is the USDC spendable NOW — size buys from it. reserved_usdc is USDC already committed to the user's resting DCAs and limit / trigger buy orders; it comes back only by cancelling them (cancel_order). reserved_breakdown lists each one (kind dca|order, schedule_id / order_id, token, reserved_usd, remaining_slices, next_order_at); in_wallet: true means that USDC still sits in the wallet balance until the order pulls it, so do not spend it twice. This is NOT the daily-volume daily_volume_reserved_usd in get_my_guardrails — that is spend-cap accounting over a rolling 24h. All three are null when Moby could not read the orders: then check get_my_orders before spending. app_links.deposit is where the user adds funds; app_links.settings is their limits. app_links are Moby app deep links to hand to the user; they open the Moby app on their phone. interview_due: true (the first read each hour also carries onboarding_hint) means the user was never onboarded: go back to onboarding FIRST — get_my_trading_profile, the capabilities brief, the 6-question interview or skip — before you act on these numbers. This returns the CURRENT USER's own data, resolved from their API key. There is no way to ask about someone else's wallet with this tool.

Input Schema

NameRequiredDescriptionDefault
networkNosolana
refreshNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover safety/read semantics; the description adds far more — cache staleness on non-native balances, chain vs ledger `balance_source` and what `ledger_disagrees` actually means, the ledger-vs-chain quantity trap that can make a sell fail on-chain, and null USDC fields when orders are unreadable. None of this contradicts the annotations (readOnly=true, destructive=false are consistent with a self-scoped read).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Roughly 700 words for a two-parameter read tool, with the core answer buried under repetition — chain-vs-ledger authority is stated twice, and the closed-positions warning is re-emphasized in capitals. Bullets help structure, but a large share of sentences could be cut without losing decision-relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite an output schema, the description maps every response section (`tokens`, `native_token`/`usd_token`, `swap_user_tokens`, `available_usdc`/`reserved_usdc`/`reserved_breakdown`, `app_links`, `interview_due`) and warns against the double-count and double-spend errors. An agent has everything needed to call it and interpret the result correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the load; it explains `refresh` thoroughly, including cost (much slower) and the precise trigger for using it. The `network` parameter is never mentioned, though as a const `solana` with a default it carries no decision for the agent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource+scope: the CURRENT USER's holdings in their Solana agent wallet with balances and USD values. It explicitly differentiates from siblings — `get_my_portfolio` for equity totals, `get_my_token_balance`/`get_my_position` for single positions, `get_my_closed_positions` for exited positions — so an agent can route without opening another schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use and when-not-to-use: use for per-token detail and the affordability check, use `get_my_portfolio` for a single equity total, check `get_my_orders` when the USDC fields are null. It also spells out the refresh condition (call once more with `refresh=true` only after an off-Moby deposit doesn't show, never routinely because it is much slower).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources