Solana MCP server for Gemini CLI
Run one command to add Voyager to Gemini CLI with an agent's API key. Gemini can then check prices, swap tokens and set limit orders through Jupiter, inside that agent's limits.
Setup
Connect Gemini CLI to Solana in four steps.
- 01Sign in at Voyager with a Solana wallet and create an agent.
- 02Fund the agent's wallet with only what it may trade, plus about 0.02 SOL for network fees.
- 03Set its limits: per-trade, daily and monthly caps in USD, tokens, slippage and an approval threshold.
- 04Create an API key for the agent and add the config below to Gemini CLI.
Gemini CLI
Terminal, or ~/.gemini/settings.json
gemini mcp add --transport http \ --header "Authorization: Bearer vgr_live_…" \ voyager https://www.runvoyager.com/api/mcp
Try it
What to ask Gemini CLI.
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 Gemini CLI 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
Gemini CLI and Voyager.
Can Gemini CLI trade crypto with Voyager?
Yes, on Solana. Once connected, Gemini CLI can check prices and balances, swap tokens and place limit orders through Jupiter, within the limits you set for the agent.
Does Gemini CLI get my wallet's private key?
No. Gemini CLI uses the agent's API key. The agent's wallet key stays encrypted on Voyager's servers, and the agent can't transfer funds out.
How do I stop Gemini CLI from trading?
Pause the agent in the dashboard and its next call is refused, including limit orders that fire later. You can also revoke its API key at any time.
Limits narrow what an agent can do. They do not make trading safe. Know the risks.