Before using any tool, call
get_connection_status or get_wallet_addresses to confirm the wallet is authenticated.Wallet operations
get_connection_status
Lightweight check of the local wallet connection status. Use this before any operation to confirm authentication without fetching full wallet details. No parameters.get_wallet_addresses
Gets all blockchain addresses for the authenticated embedded wallet (Solana, Ethereum, Bitcoin, Sui).
Example response:
get_token_balances
Returns token holdings for the authenticated wallet with live USD pricing via the Phantom portfolio API.send_solana_transaction
Simulates, signs, and broadcasts a Solana transaction.
Example request:
send_evm_transaction
Simulates, signs, and broadcasts an EVM transaction with automatic gas estimation.
Example request:
sign_solana_message
Signs a UTF-8 message on Solana.sign_evm_personal_message
Signs a UTF-8 message using EIP-191 personal signing for EVM chains.sign_evm_typed_data
Signs structured data using EIP-712 for EVM chains. Used for DeFi permits and other typed data flows.simulate_transaction
Simulates a transaction and returns expected asset changes, security warnings, and blocking conditions without submitting on-chain. Use this to preview what a transaction will do before signing or sending. Supports Solana, EVM (Ethereum, Base, Polygon, Arbitrum), Sui, and Bitcoin. Monad simulation support will be deprecated on August 26, 2026. TheuserAccount wallet address is auto-derived from the authenticated session for Solana and EVM chains. Supply it explicitly for Sui and Bitcoin.
Chain-specific
params shapes:
- Solana:
{ transactions: ["<base58>"] } - EVM:
{ transactions: [{ from, to, value, data, chainId, type }] } - Sui:
{ rawTransaction: "<bytes>" } - Bitcoin:
{ transaction: "<raw>", userAddresses?: ["bc1q..."] } - EVM message:
{ message: "0x..." }
Response shape
The result is a discriminated union ontype ("transaction" or "message") with a strongly typed schema. Treat any non-empty block as a blocking condition that should prevent signing or sending.
Each
expectedChanges[] entry is one of:
type: "AssetChange"-name,changeText,changeSign(PLUS|MINUS|EQUAL),asset({ type: "fungible" | "collectible" | "native" | "unknown", symbol, decimals, amount, usdValue? }),changeType(approval|revokal|transfer|mint|unknown), and optionalimage,context,metadata.type: "MessageOnly"-message,fallbackMessage,changeType, and optionalimage,context,metadata.
block or warnings[]) has { message, severity, kind? }. severity is an integer where lower numbers are more severe:
advancedDetails shape depends on the chain and request type:
- EVM transaction:
{ chainId, advancedRows, gas, gasLimit, tokenChange?, contractAddresses }. Each contract address has atypeofspender,contract, orunknown. - Solana transaction:
{ chainId, tokenChange, advancedRows, requestId, safeguard?, totalFee, feePayers }. - Sui transaction:
{ chainId, tokenChange, requestId, gas: { computationCost, storageCost, storageRebate, nonRefundableStorageFee, totalGasUsed } }. - Bitcoin transaction:
{ inputs, outputs }with amounts in satoshis. - EVM message:
{ contractAddress }. - Solana message:
{ errorSignInWithSolana }.
get_token_allowance
Returns the ERC-20 token allowance granted by an owner address to a spender address on any supported EVM chain. Use this before a swap to check whether an approval transaction is needed. WhenownerAddress is omitted, the authenticated wallet address is used automatically.
Example response:
transfer_tokens
Transfers native tokens or SPL/ERC-20 tokens across Solana and EVM chains using a simulation-first flow.
Example (SOL transfer):
Swaps and portfolio
buy_token
No fees on swaps. Phantom does not charge transaction fees, platform fees, or commission on swaps executed through the MCP server. Your users keep what they swap. Fetches a swap quote from the Phantom routing engine for Solana, EVM, and cross-chain swaps. Optionally signs and sends the initiation transaction whenexecute: true.
Cross-chain swaps work in both directions: Solana to EVM and EVM to Solana. Cross-chain swaps can also target Hypercore/Hyperliquid when supported.
Example (Solana swap: sell SOL for USDC):
portfolio_rebalance
Analyzes portfolio allocation and rebalances via token swaps. No fees on any swaps executed during rebalancing. Portfolio rebalancing uses the same zero-fee swap routing asbuy_token.
Analyzes portfolio allocation and rebalances to target percentages via token swaps. Currently supports Solana only. Uses a two-phase flow: call with phase: "analyze" to inspect current allocations, then phase: "execute" with targetAllocations to rebalance. Use dryRun: true to preview without executing.
Session and billing
phantom_login
Re-authenticates with Phantom. Use this to log in for the first time, switch accounts, or refresh an expired session. Opens the Phantom Connect browser flow. No parameters.pay_api_access
Pays for daily API access when another tool returnsAPI_PAYMENT_REQUIRED. Pass the preparedTx value from that error response, then retry the original tool call.
Perpetuals
Looking for a Hyperliquid-focused walkthrough instead of the full tool catalog? See the dedicated perps tools guide.
Read-only
deposit_to_hyperliquid
Bridges tokens from an external chain (Solana, Arbitrum, Base, Ethereum, Polygon) into Hyperliquid as USDC via cross-chain swap. Uses a quote-first flow by default.
Example (deposit SOL into Hyperliquid as USDC):
open_perp_position
Opens a market or limit long/short perpetual position.
Example (market long):
close_perp_position
Closes a perpetual position fully or partially.cancel_perp_order
Cancels an open perpetual order by ID.update_perp_leverage
Updates leverage and margin mode for a market.transfer_spot_to_perps
Moves USDC from Hypercore spot into the perps margin account.withdraw_from_perps
Bridges USDC from the Hyperliquid perpetuals account to an external chain (Solana, Base, Ethereum, Arbitrum, Polygon) via the Relay bridge.
Example:
deposit_to_hyperliquid which uses a quote-first flow). Use get_perp_markets, get_perp_account, and get_perp_positions first to verify the intended trade.
Funding flow
Moving funds in and out of perps is a two-step process: Deposit chain (external → perps):deposit_to_hyperliquid— bridges tokens from Solana, Arbitrum, Base, Ethereum, or Polygon into Hyperliquid spot as USDC.transfer_spot_to_perps— moves USDC from Hyperliquid spot into the perps margin account.
withdraw_from_perps— bridges USDC from perps directly to the destination chain in one step.
phantom perps withdraw-hl-spot in the CLI. This command replaces the withdraw_from_hyperliquid_spot MCP tool from earlier releases, which has been removed.