Voyager

Trade crypto on Solana from Claude Code

Run one command to add Voyager to Claude Code, with an agent's API key or by signing in with your wallet. Claude Code can then check prices, swap tokens and set limit orders through Jupiter while it works, inside that agent's limits.

Setup

Connect Claude Code to Solana in four steps.

  1. 01Sign in at Voyager with a Solana wallet and create an agent.
  2. 02Fund the agent's wallet with only what it may trade, plus about 0.02 SOL for network fees.
  3. 03Set its limits: per-trade, daily and monthly caps in USD, tokens, slippage and an approval threshold.
  4. 04Create an API key, or skip it and sign in with your wallet from Claude Code, then add the config below.

Claude Code

Terminal

claude mcp add --transport http voyager https://www.runvoyager.com/api/mcp \
  --header "Authorization: Bearer vgr_live_…"

Leave out --header to sign in with your wallet instead: run /mcp in Claude Code and choose Authenticate.

Try it

What to ask Claude Code.

Each request becomes one or two tool calls. Voyager checks every call against the agent's limits before anything is signed.

  • you › How much of my daily limit is left?
  • you › What are SOL and JUP trading at right now?
  • you › Swap 25 USDC for SOL.
  • you › Sell 2 SOL if it drops below 120 USD, and take profit at 200 USD.
  • you › Show my last five trades and their status.
  • you › Cancel my open limit orders.

Tools

Solana tools Claude Code can call.

get_account
Returns this agent's Solana wallet address, the spending policy its owner set (per-trade cap, daily and monthly caps, allowed tokens, max slippage, approval threshold) and how much budget is left. Call this before trading so you stay inside the limits.
get_balances
Lists the tokens held by the agent's wallet with amounts and USD values.
search_tokens
Finds Solana tokens by symbol, name or mint address. Returns mint, decimals, USD price, liquidity, and whether Jupiter has verified the token or flagged it as suspicious. Many scam tokens copy popular symbols, so use the returned mint address when trading anything outside the majors.
get_prices
Current USD prices for up to 50 tokens, with the 24h change in percent.
get_quote
Quotes a swap through Jupiter without executing it: expected output, minimum output after slippage, price impact, fees, and whether the owner's spending policy would allow it (policy.allowed, policy.requiresApproval, policy.violations). Give exactly one of amount or amountUsd.
swap
Swaps tokens from the agent's wallet through Jupiter, at the best route available, and waits for the result. The owner's spending policy is enforced: a trade over a limit is rejected with the rule it broke, and a trade over the approval threshold returns status "awaiting_approval" until the owner approves it in the dashboard. Give exactly one of amount or amountUsd. Pass an idempotencyKey if you might retry.
get_trade
Returns the current status of a trade by ID, including the transaction signature and explorer link once it lands.
list_trades
Lists the agent's most recent trades, newest first, including rejected and pending ones.
create_limit_order
Places a price-triggered order: when the trigger token's USD price crosses triggerPriceUsd in the given direction, Voyager swaps the input token for the output token at market. Use it for buy-the-dip ("buy SOL with 50 USDC if SOL goes below $120"), take-profit ("sell 2 SOL if SOL goes above $250") or stop-loss ("sell 2 SOL if SOL goes below $90"). Funds stay in the wallet until the order fires, and the spending policy is checked again at that moment. If other waiting orders already sell the same token and, with this one, would sell more than the wallet holds, the call fails with a "conflict" error whose details.orders lists them. Do not choose for your user: show them those orders and ask which they mean, then call again with the same request plus onOverlap. "link" makes them one-cancels-other, so only the first to fire trades (the usual take-profit plus stop-loss). "replace" cancels them and places this order instead; use it to change an existing order, since orders cannot be edited. "independent" keeps them all, and any that fires after the tokens are gone fails. Pass overlapOrderIds to link or replace only some of them. Orders that fit within the balance together, such as a ladder of partial take-profits, are placed with no question asked.
list_limit_orders
Lists the agent's limit orders, optionally filtered by status (open, held, triggered, filled, cancelled, expired, failed). Orders with the same ocoGroupId are one-cancels-other: while one is triggered the others are "held", and once it fills they are cancelled.
cancel_limit_order
Cancels an open or held limit order. Nothing moves on-chain, since funds never left the wallet. Other orders in its one-cancels-other group stay as they are.

Agent permissions

Limits the model can't change.

Only you can raise an agent's limits, from the dashboard, with a fresh wallet signature.

Spending caps
Per-trade, rolling 24-hour and 30-day limits in USD. Each trade is checked and reserved against the budget in one locked step.
Token rules
Major tokens resolve to their canonical mints. Purchases are limited to Jupiter-verified tokens, or to an allowlist you choose.
Execution limits
Maximum slippage and price impact apply to every route Jupiter returns.
Approvals
Trades above your threshold wait in the dashboard until you approve or reject them.
No transfer tool
Agents can quote, swap and place limit orders. Withdrawals are owner-only and go to your sign-in wallet.
Pause
A paused agent has its next call refused, including limit orders that fire later.

FAQ

Claude Code and Voyager.

Can Claude Code trade crypto with Voyager?

Yes, on Solana. Once connected, Claude Code can check prices and balances, swap tokens and place limit orders through Jupiter, within the limits you set for the agent.

Does Claude Code get my wallet's private key?

No. Claude Code uses the agent's API key or signs in with your wallet. The agent's wallet key stays encrypted on Voyager's servers, and the agent can't transfer funds out.

How do I stop Claude Code from trading?

Pause the agent in the dashboard and its next call is refused, including limit orders that fire later. You can also disconnect the app or revoke its API key at any time.

Limits narrow what an agent can do. They do not make trading safe. Know the risks.