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, Monad), Sui, and Bitcoin. 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.