{"server":"dev.xroot/token-operations","count":18,"tools":[{"name":"audit_token","title":"Audit token","description":"Run the free risk report on a token: who can still mint or freeze, transfer taxes and hooks, permanent delegates, liquidity status, holder concentration, and a verdict with a score. On Solana pass the mint address; on an EVM chain pass the token contract address. Use it when a user asks whether a token is safe, a rug, or a honeypot. Reads only.","input_schema":{"type":"object","required":["address"],"properties":{"chain":{"enum":["solana","robinhood"],"type":"string","description":"Which chain the token lives on. Defaults to solana."},"address":{"type":"string","description":"The token's mint address (Solana, base58) or contract address (an EVM chain, 0x)."}},"additionalProperties":false},"output_schema":null,"annotations":{"title":"Audit token","readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T16:30:40.781Z"},{"name":"check_approvals","title":"Check approvals","description":"List the standing token approvals on an EVM wallet — contracts still allowed to move its tokens — ranked by risk, with unlimited allowances, expired permits and flagged spenders called out. A risk read, not money: revoking returns nothing. Nothing is revoked.","input_schema":{"type":"object","required":["address"],"properties":{"chain":{"enum":["robinhood"],"type":"string","description":"The EVM chain the wallet is on. May be omitted while approvals are checked on one chain only."},"address":{"type":"string","description":"The wallet address (0x). Public data only; no connection or signature is involved."}},"additionalProperties":false},"output_schema":null,"annotations":{"title":"Check approvals","readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T16:30:40.781Z"},{"name":"check_closable_programs","title":"Check closable programs","description":"Read the upgradeable programs a Solana wallet holds the upgrade authority for, and the gross rent their bytecode accounts hold. Closing a program is permanent, so this reads only.","input_schema":{"type":"object","required":["address"],"properties":{"address":{"type":"string","description":"The Solana wallet address to read (base58 public key). Public data only; no connection or signature is involved."}},"additionalProperties":false},"output_schema":null,"annotations":{"title":"Check closable programs","readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T16:30:40.781Z"},{"name":"check_dlmm_positions","title":"Check Meteora positions","description":"Read a Solana wallet's Meteora DLMM and DAMM v2 positions by status, how many can be closed now, and the gross SOL deposit those closable positions hold — what closing them returns before fees. Nothing is closed.","input_schema":{"type":"object","required":["address"],"properties":{"address":{"type":"string","description":"The Solana wallet address to read (base58 public key). Public data only; no connection or signature is involved."}},"additionalProperties":false},"output_schema":null,"annotations":{"title":"Check Meteora positions","readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T16:30:40.781Z"},{"name":"check_failed_deploys","title":"Check failed deploys","description":"Read the program buffer accounts left behind by a Solana wallet's failed or interrupted program deploys, and the SOL recovering them returns net of fees. Nothing is recovered.","input_schema":{"type":"object","required":["address"],"properties":{"address":{"type":"string","description":"The Solana wallet address to read (base58 public key). Public data only; no connection or signature is involved."}},"additionalProperties":false},"output_schema":null,"annotations":{"title":"Check failed deploys","readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T16:30:40.781Z"},{"name":"check_frozen_tokens","title":"Check frozen tokens","description":"Read the permissioned (Token ACL) tokens a Solana wallet holds, and which of them the holder can unlock itself under the token's published rules. Nothing is unlocked.","input_schema":{"type":"object","required":["address"],"properties":{"address":{"type":"string","description":"The Solana wallet address to read (base58 public key). Public data only; no connection or signature is involved."}},"additionalProperties":false},"output_schema":null,"annotations":{"title":"Check frozen tokens","readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T16:30:40.781Z"},{"name":"check_lookup_tables","title":"Check lookup tables","description":"Read the address lookup tables a Solana wallet owns: how many are ready to close, cooling down, or still active, and the gross rent each group holds. Nothing is deactivated or closed.","input_schema":{"type":"object","required":["address"],"properties":{"address":{"type":"string","description":"The Solana wallet address to read (base58 public key). Public data only; no connection or signature is involved."}},"additionalProperties":false},"output_schema":null,"annotations":{"title":"Check lookup tables","readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T16:30:40.781Z"},{"name":"check_lp_fees","title":"Check LP fees","description":"Count a Solana wallet's liquidity positions with trading fees waiting to be claimed, per venue: Orca Whirlpools, Meteora, and locked Raydium liquidity. Fees are owed in many different tokens, so the answer is a count of positions, never a summed figure. Nothing is claimed.","input_schema":{"type":"object","required":["address"],"properties":{"address":{"type":"string","description":"The Solana wallet address to read (base58 public key). Public data only; no connection or signature is involved."}},"additionalProperties":false},"output_schema":null,"annotations":{"title":"Check LP fees","readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T16:30:40.781Z"},{"name":"check_reclaimable_rent","title":"Check reclaimable rent","description":"Read how much SOL a Solana wallet can reclaim from rent: the deposits parked in its empty token accounts, and the surplus the rent cut left in accounts it still uses. Returns counts and net figures in SOL. Nothing is closed or moved.","input_schema":{"type":"object","required":["address"],"properties":{"address":{"type":"string","description":"The Solana wallet address to read (base58 public key). Public data only; no connection or signature is involved."}},"additionalProperties":false},"output_schema":null,"annotations":{"title":"Check reclaimable rent","readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T16:30:40.781Z"},{"name":"check_subscriptions","title":"Check subscriptions","description":"Read the on-chain subscriptions and recurring allowances a Solana wallet has granted, by state, plus the rent their accounts would return to this wallet (a sponsored subscription's rent goes back to its sponsor). Nothing is cancelled.","input_schema":{"type":"object","required":["address"],"properties":{"address":{"type":"string","description":"The Solana wallet address to read (base58 public key). Public data only; no connection or signature is involved."}},"additionalProperties":false},"output_schema":null,"annotations":{"title":"Check subscriptions","readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T16:30:40.781Z"},{"name":"check_token_delegates","title":"Check token delegates","description":"List the standing token delegates and approvals on a Solana wallet — programs still allowed to move its tokens. A risk read, not money: revoking returns no SOL. Nothing is revoked.","input_schema":{"type":"object","required":["address"],"properties":{"address":{"type":"string","description":"The Solana wallet address to read (base58 public key). Public data only; no connection or signature is involved."}},"additionalProperties":false},"output_schema":null,"annotations":{"title":"Check token delegates","readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T16:30:40.781Z"},{"name":"check_token_tax","title":"Check token tax","description":"List the transfer-tax tokens a Solana wallet launched through the platform, with each tax rate — the tokens whose withheld tax that wallet can collect. Nothing is collected.","input_schema":{"type":"object","required":["address"],"properties":{"address":{"type":"string","description":"The Solana wallet address to read (base58 public key). Public data only; no connection or signature is involved."}},"additionalProperties":false},"output_schema":null,"annotations":{"title":"Check token tax","readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T16:30:40.781Z"},{"name":"check_token_unlocks","title":"Check token unlocks","description":"Read a Solana token's on-chain locks: supply vesting and locked liquidity, per locker, with the cliff, start, period and released amounts each lock reports. Use it when a user asks when a token unlocks or whether its liquidity is locked. Reads public lock accounts only.","input_schema":{"type":"object","required":["mint"],"properties":{"mint":{"type":"string","description":"The token's mint address (base58)."}},"additionalProperties":false},"output_schema":null,"annotations":{"title":"Check token unlocks","readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T16:30:40.781Z"},{"name":"check_wallet","title":"Check wallet","description":"Read everything a wallet can get back, in one call: on Solana, the rent in empty token accounts, the surplus the rent cut left, wrapped SOL, failed-deploy buffers, closable programs, lookup tables, dead Meteora positions, subscriptions, LP fees waiting on Orca, Meteora and locked Raydium positions, standing token delegates (a risk, not money), transfer-tax tokens it launched, and permissioned tokens it can unlock; on an EVM chain, LP fees, creator fees, bridge withdrawals and the wrapped native coin. Every venue is read independently and reports ok, failed or unavailable, and whether it answered in full, so a failed read is never mistaken for nothing there. Use it for \"what can this wallet recover\"; use the per-venue tools for one venue in detail.","input_schema":{"type":"object","required":["address"],"properties":{"chain":{"enum":["solana","robinhood"],"type":"string","description":"Which chain the address lives on. Defaults to solana."},"address":{"type":"string","description":"The wallet address: a base58 public key on Solana, a 0x address on an EVM chain."}},"additionalProperties":false},"output_schema":null,"annotations":{"title":"Check wallet","readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T16:30:40.781Z"},{"name":"check_wrapped_sol","title":"Check wrapped SOL","description":"Read the wrapped SOL (wSOL) sitting in a Solana wallet's token accounts, and what unwrapping it back to SOL returns net of fees. Nothing is unwrapped.","input_schema":{"type":"object","required":["address"],"properties":{"address":{"type":"string","description":"The Solana wallet address to read (base58 public key). Public data only; no connection or signature is involved."}},"additionalProperties":false},"output_schema":null,"annotations":{"title":"Check wrapped SOL","readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T16:30:40.781Z"},{"name":"get_fee_estimate","title":"Get fee estimate","description":"Quote the exact cost of a token operation before anything is built: the platform fee for that service on that chain plus the estimated network fee (rent, base and priority), as decimal strings in the chain's currency. Use it when a user asks what a token deploy, authority revoke, airdrop or metadata update would cost. Reads only; nothing is prepared or sent.","input_schema":{"type":"object","required":["request"],"properties":{"request":{"type":"object","allOf":[{"if":{"required":["service"],"properties":{"service":{"enum":["spl-token","token-2022"]}}},"then":{"required":["token"]}},{"if":{"required":["service"],"properties":{"service":{"enum":["authority-tools","airdrop","update-metadata"]}}},"then":{"required":["tokenAddress","options"]}}],"required":["chain","service"],"properties":{"chain":{"enum":["solana"],"type":"string","description":"The chain the operation runs on."},"token":{"type":"object","required":["name","symbol","supply","decimals"],"properties":{"name":{"type":"string","description":"Token name, e.g. \"My Token\"."},"supply":{"type":"string","description":"Total supply in whole tokens as a decimal string, e.g. \"1000000000\" for 1B tokens — the mint's decimals are applied at prepare time."},"symbol":{"type":"string","description":"Token symbol, e.g. \"MYT\"."},"decimals":{"type":"integer","maximum":18,"minimum":0,"description":"Decimals, e.g. 9."},"metadataUri":{"type":"string","description":"Optional token metadata URI."}},"description":"The token spec — required when deploying a new token (spl-token, token-2022)."},"options":{"type":"object","description":"Service options, keyed by service. spl-token (optional, may be omitted): freezeAuthority. token-2022 (optional, may be omitted): transferTaxBps, transferTaxMaxFee, permanentDelegate, freezeAuthority — a transfer tax and a permanent delegate exist only on token-2022, and spl-token refuses them. authority-tools (REQUIRED): revokeMint, revokeFreeze, revokeUpdate as booleans — all three must be present, at least one true; optional revokePermanentDelegate, revokeTransferFee, revokeWithheldWithdraw, revokeTransferHook, revokePause. airdrop (REQUIRED): recipients, a list of {address, amount} — at most 20 recipients per transaction — with amount as a decimal string in whole tokens, the same unit as supply; the mint's decimals are applied at prepare time. update-metadata (REQUIRED, at least one): name, symbol, metadataUri."},"service":{"enum":["spl-token","token-2022","authority-tools","airdrop","update-metadata"],"type":"string","description":"The service to run. spl-token and token-2022 create a new mint (send `token`); authority-tools, airdrop and update-metadata act on an existing mint (send `tokenAddress` and the service's `options`)."},"tokenAddress":{"type":"string","description":"The existing mint (base58) for authority-tools, airdrop and update-metadata. Not used when deploying."},"priorityFeeLamports":{"type":"integer","maximum":100000000,"minimum":1,"description":"Optional priority fee in lamports to beat congestion."}},"description":"The operation intent — same shape the browser flow sends (chain, then service, then the service's fields).","additionalProperties":false}},"additionalProperties":false},"output_schema":null,"annotations":{"title":"Get fee estimate","readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T16:30:40.781Z"},{"name":"list_upgrades","title":"List upgrades","description":"List Solana's protocol upgrades (feature gates) with their state on mainnet, testnet and devnet — pending with an activation estimate, active with its activation epoch, or not yet queued — as read from the chain. Use it when a user asks whether a SIMD or feature has activated, or what is coming next. Optionally filter by mainnet state.","input_schema":{"type":"object","properties":{"state":{"enum":["pending","active","unqueued"],"type":"string","description":"Keep only gates in this mainnet state. Omit for all."}},"additionalProperties":false},"output_schema":null,"annotations":{"title":"List upgrades","readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T16:30:40.781Z"},{"name":"search_tokens","title":"Search tokens","description":"Find a token by name, symbol or address in the xroot.dev token directory — the trending and newest tokens the platform has indexed on an EVM chain — with each token's pool, price and cached audit verdict where one exists. Use it to resolve which of several same-named tokens a user means before auditing it.","input_schema":{"type":"object","properties":{"chain":{"enum":["robinhood"],"type":"string","description":"The chain whose directory to search. May be omitted while one chain's directory is indexed."},"query":{"type":"string","description":"Name, symbol or address fragment. Empty returns the trending list."}},"additionalProperties":false},"output_schema":null,"annotations":{"title":"Search tokens","readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T16:30:40.781Z"}],"next_cursor":null,"next_actions":[{"action":"get_connection","description":"Connection block to call these tools","href":"/v1/servers/dev.xroot%2Ftoken-operations/connection?target=mcpServers","arguments":{"name":"dev.xroot/token-operations","target":"mcpServers"}},{"action":"get_server","description":"Full descriptor with trust and connectability","href":"/v1/servers/dev.xroot%2Ftoken-operations","arguments":{"name":"dev.xroot/token-operations"}}]}