onestop

trade.onestopPublished by onestop.tradev1.0.2Updated Nov 4, 2026

Gasless Solana swaps, market-cap limit, trailing and TWAP orders, and plans. Your key stays local.

VerifiedSTDIODesktop only

Overview

onestop's local MCP server, published by onestop.trade; no sign-in required; STDIO; 19 tools.

No AI overview yet: these facts come from the registry entry and the server itself.

Publisher
onestop.trade

Installation

In SourceWeft

  1. Open onestop in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

onestop MCP

Lets an AI agent trade Solana tokens through onestop: gasless swaps (no SOL needed; the network cost and any fee are taken from the trade), market-cap orders (limit, trailing, limit then trail, TWAP) and plans that buy and then protect the position. Your wallet's key stays on your machine.

json
{ "mcpServers": { "onestop": { "command": "npx", "args": ["-y", "@onestop-trade/onestop-mcp"],    "env": { "ONESTOP_PRIVATE_KEY": "your-wallet-private-key" } } } }

Node 20.18 or later.

Setting
ONESTOP_PRIVATE_KEY or ONESTOP_KEYPAIR_PATHthe wallet that trades: its private key as your wallet exports it (Phantom: Settings → your account → Show private key), or the path to a keypair file. Use a wallet you keep for trading
SOLANA_RPC_URLyour RPC, used to simulate every transaction before signing (default: public mainnet)
ONESTOP_DRY_RUN=1trade nothing: order and plan tools answer without calling onestop, and swaps stop after the guard. Paper orders still run
ONESTOP_SKIP_SPEND_CHECK=1turn off the guard's balance checks (the structural checks stay). For debugging only
ONESTOP_STATEwhere the MCP keeps the orders and plans it placed (default ~/.onestop-mcp/<wallet>.json)
ONESTOP_API_URL, ONESTOP_SERVER_PUBKEY (+ _NEXT)for a self-hosted engine: its URL, its signing key

Tools

Amounts are raw units (lamports for SOL); levels and shares are basis points (20000 = 2x, 10000 = all).

Walletwallet (address and link, no network call), connect (wait for the engine login)
Swapsquote (price it, get the unsigned transaction), submit_swap (trade a quoted transaction), swap (both in one call)
Market datatokens (price, market cap, liquidity), holdings (balances in USD)
Orderslimit_order, trailing_order, limit_trailing_order, twap_order; each but the TWAP can also fill in slices. list_orders, get_order, cancel_order, extend_order
Plansplace_plan (an entry buy, then a protect or take-profit exit for exactly what it bought), get_plan, cancel_plan
Logactivity: fills signed or refused (and why), paper fills, order and plan updates

paper: true on an order or plan rehearses it with real prices: fills are priced from the route and recorded, and nothing is signed or traded.

What it signs

Every message from onestop must carry onestop's engine signature. A fill is signed only for an order this MCP placed, after checking onestop committed to exactly what was asked, or for the exit of one of its plans, selling no more than the entry bought. Before signing, the transaction is simulated on your RPC and checked: onestop's gas wallet pays the fee and your wallet is the only other signer; your SOL can't fall by more than the quote says; no token balance falls except the one you're selling, by at most the amount; the output arrives; no approvals, authority changes or account reassignment; nothing closes an account you already had.

It has to be running

onestop watches the market 24/7, but this MCP signs each fill, so it needs to be running: if it's closed when an order fires, the fill waits and runs when it's back, at the price then.

Source: README.md at commit 41fd681

Tools

19

wallet

This MCP's wallet address and its link to onestop: whether it's logged in to the engine, the API it uses, whether dry run is on, and how many orders and plans it's tracking. No network call. Call it first: every other tool acts for this wallet.

Takes no parameters.

connect

Wait up to 20 seconds for the engine login, then report the same as wallet. The MCP logs in by itself at start and again after any drop, backing off up to 30 seconds between tries, so use this to wait for it rather than retrying another tool.

Takes no parameters.

quote

Price a swap without trading. Returns amount_in, expected_out, min_out, the fee and the gas (both taken from the trade), and transaction.base64: the unsigned transaction, good for about 45 seconds. Nothing is signed or sent. Pass the transaction to submit_swap to trade it after looking at the quote, or use swap to do both at once.

Parametersinputrequiredamountoutputrequiredholdings_bpsslippage_bps

submit_swap

Trade a transaction from quote. The MCP checks it with the guard first, simulating it on the wallet's own RPC: onestop pays the fee, only this wallet signs besides it, nothing approves or reassigns the wallet's accounts, the wallet loses no more than the quote says, and the output arrives. Then it signs, sends it through onestop's MEV-protected lane and waits for it to land. Only a transaction this MCP quoted recently is accepted, because the guard needs its quote and onestop co-signs only trades it quoted. Returns confirmed with the signature and the wallet's balance changes, or refused with the guard's reasons. With dry run it stops after the guard.

Parameterstransactionrequired

swap

Swap now in one call: quote, guard, sign and send, the same as quote followed by submit_swap. No SOL needed for gas: onestop pays it and takes it, with any fee, from the trade. Returns the amounts and the result: confirmed with the signature and balance changes, refused with the guard's reasons, or dry_run.

Parametersinputrequiredamountoutputrequiredholdings_bpsslippage_bps

tokens

Price, market cap, liquidity and main pool for up to 100 tokens. Read only.

Parametersmintsrequired

holdings

A wallet's SOL and token balances, valued in USD. Read only.

Parameterswallet

limit_order

A limit order: buy or sell when the market cap crosses a level, given as target_bps of the market cap now (above it, a take profit or a breakout buy; below it, a stop loss or a dip buy) or as target_mcap_usd. It fires only on a cross after placement. Add twap_slices and twap_interval_s to fill in slices. A buy takes amount in lamports; a sell takes amount in raw token units or holdings_bps of the balance when it fires. paper: true rehearses with real prices and never trades. It lapses after expires_h hours if it hasn't fired. Returns the order with its order_id; follow it with get_order. Signing: fills are signed by this MCP process. If it isn't running when an order fires, the fill is queued and executed on reconnect at the then-current price.

Parametersmintrequiredsiderequiredpaperamountexpires_htarget_bpstwap_slicesholdings_bpsslippage_bpstarget_mcap_usdtwap_interval_s

trailing_order

A trailing order: a sell follows the market cap up and fires when it falls trail_bps from its high; a buy follows it down and fires when it rises trail_bps from its low. Add twap_slices and twap_interval_s to fill in slices. A buy takes amount in lamports; a sell takes amount in raw token units or holdings_bps of the balance when it fires. paper: true rehearses with real prices and never trades. It lapses after expires_h hours if it hasn't fired. Returns the order with its order_id; follow it with get_order. Signing: fills are signed by this MCP process. If it isn't running when an order fires, the fill is queued and executed on reconnect at the then-current price.

Parametersmintrequiredsiderequiredpaperamountexpires_htrail_bpsrequiredtwap_slicesholdings_bpsslippage_bpstwap_interval_s

limit_trailing_order

A limit, then a trail: it waits for the market cap to reach the level (target_bps of the market cap now, or target_mcap_usd), then trails from there and fires when the market cap moves back trail_bps from its best. A sell above the market cap now lets a winner run past the target and keeps the gain. Add twap_slices and twap_interval_s to fill in slices. A buy takes amount in lamports; a sell takes amount in raw token units or holdings_bps of the balance when it fires. paper: true rehearses with real prices and never trades. It lapses after expires_h hours if it hasn't fired. Returns the order with its order_id; follow it with get_order. Signing: fills are signed by this MCP process. If it isn't running when an order fires, the fill is queued and executed on reconnect at the then-current price.

Parametersmintrequiredsiderequiredpaperamountexpires_htrail_bpsrequiredtarget_bpstwap_slicesholdings_bpsslippage_bpstarget_mcap_usdtwap_interval_s

twap_order

A TWAP order: buy or sell now in twap_slices swaps twap_interval_s seconds apart, to spread the price impact. Each slice is what's left divided by the slices left. A buy takes amount in lamports; a sell takes amount in raw token units or holdings_bps of the balance when it fires. paper: true rehearses with real prices and never trades. It lapses after expires_h hours if it hasn't fired. Returns the order with its order_id; follow it with get_order. Signing: fills are signed by this MCP process. If it isn't running when an order fires, the fill is queued and executed on reconnect at the then-current price.

Parametersmintrequiredsiderequiredpaperamountexpires_htwap_slicesrequiredholdings_bpsslippage_bpstwap_interval_srequired

list_orders

This wallet's orders, newest first. An order is waiting, armed (trailing from its best), filling, then filled, cancelled, expired or failed.

Takes no parameters.

get_order

One order: its status, trigger levels, the market cap it saw last, its slices and its fills with their signatures.

Parametersorder_idrequired

cancel_order

Cancel an order. A slice that's already signed can't be called back; the rest of the order stops. A plan's orders are cancelled with cancel_plan.

Parametersorder_idrequired

extend_order

Set an open order's expiry to expires_h hours from now.

Parametersorder_idrequiredexpires_hrequired

place_plan

A plan: an entry buy, then an exit onestop creates for exactly the tokens the entry bought. protect arms once the market cap reaches arm_bps of the entry's (30000 = 3x) and then sells when it falls trail_bps from its high. exit takes profit at target_bps of the entry market cap, or shapes the protected sell (twap, and sell_bps of the tokens); with neither level the exit sells at once. A plan needs protect or exit. To protect tokens already held, leave out entry and give amount or holdings_bps. Returns the plan with its plan_id; follow it with get_plan. Signing: fills are signed by this MCP process. If it isn't running when an order fires, the fill is queued and executed on reconnect at the then-current price.

Parametersexitmintrequiredentrypaperamountprotectexpires_hholdings_bpsslippage_bps

get_plan

A plan's progress: the entry's fills, the tokens it bought and its average entry market cap, the exit (armed with its high and stop, or its take-profit level), and the market cap now as a multiple of the entry.

Parametersplan_idrequired

cancel_plan

Cancel a plan and every stage that hasn't run. Tokens already bought stay in the wallet.

Parametersplan_idrequired

activity

What this MCP did since it started, newest first: fills it signed (with signatures) or refused (with the reason), paper fills, exits it took on, and order and plan updates.

Parameterslimit

Version history

1
  1. v1.0.2LatestNov 4, 2026

Score

80% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.