Index / MCP servers / Rubin Exchange

Rubin Exchange MCP server

Rubin Exchange is an MCP server with 33 tools an agent can call, among them batch_cancel, cancel_all_orders, cancel_order. It answers at https://mcp.mainnet.rubin.trade/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 6 of 6 times since 12 September 2026; the last check, on 24 October 2026, succeeded.

Status
Answering
Tools
33
Official
yes, served from rubin.trade
Reliability
6 of 6 checks
Response time
220 ms
Transport
streamable HTTP
Last checked
24 October 2026

Rubin: self-custody DEX for crypto perpetuals & spot - trade, read positions, orders, balances.

Description as the publisher wrote it.

The 33 tools Rubin Exchange offers

ToolWhat it does
batch_cancelCancel multiple SHORT_TERM orders in one tx. SHORT_TERM only (chain limitation) — for stateful/mixed use cancel_all_orders.
Inputs: market, clientIds
cancel_all_ordersCancel every OPEN order for the subaccount in a market (handles SHORT_TERM and LONG_TERM automatically). Returns `confirmation.remainingOpen` — orders still OPEN after the cancel (0 = all gone); if > 0, retry.
Inputs: market, confirm
cancel_orderCancel a single order by clientId. For SHORT_TERM pass goodTilBlock; for LONG_TERM/CONDITIONAL pass goodTilTimeSeconds (the original good-til value, available from get_open_orders). Returns `confirmation` with the verified result (canceled
Inputs: market, clientId, orderFlags, goodTilBlock, goodTilTimeSeconds, confirm
close_all_positionsFlatten EVERY open perpetual position with reduce-only MARKET orders (one per market). Respects the operator market allowlist (disallowed markets are skipped and reported). Each close is bounded at oracle ± slippageBps mirrored by side (def
Inputs: slippageBps, confirm
close_positionClose all or part of an open perpetual position with a reduce-only MARKET order. Reads the current position, flips the side automatically (LONG→SELL, SHORT→BUY) and sizes the close. percent defaults to 100 (full close); a partial close is f
Inputs: market, percent, slippageBps, confirm
deposit_to_subaccountDeposit USDC from the account's WALLET into its trading SUBACCOUNT so it becomes collateral. Without amountUsd it moves everything above the $0.95 gas reserve (what the web app does); with amountUsd it moves exactly that much, as long as $0
Inputs: amountUsd
get_balanceGet the subaccount collateral (USDC asset position) and the on-chain wallet bank balances. Collateral is what backs trading; the WALLET balance is where money sent to the account lands and is NOT collateral until deposited. `funding` summar
get_block_heightReturn the latest chain block height. Useful for SHORT_TERM order goodTilBlock math.
get_candlesGet OHLCV candles for a market at a given resolution. Useful for trend/volatility analysis.
Inputs: market, resolution, fromISO, toISO, limit
get_candles_multiGet recent OHLCV candles for a market across MULTIPLE resolutions in one call — by default ALL indexer resolutions (1MIN, 5MINS, 15MINS, 30MINS, 1HOUR, 4HOURS, 1DAY) — so the agent can read the trend across timeframes at once. Returns { can
Inputs: market, resolutions, limit
get_equityGet the subaccount summary: equity, freeCollateral, marginEnabled, open perpetual positions and asset positions.
get_fee_tierThis account's current trading fee tier and conditions: maker/taker fee (% of notional; a negative maker fee is a rebate), the 30-day maker/taker volume it is judged on, any staking discount, the next tier and how much more 30d volume it ta
get_fillsGet executed fills for the subaccount, including price, size, fee and maker/taker liquidity.
Inputs: market, limit, page
get_funding_statusWhere the account's USDC sits: in the WALLET (bank balance — money sent to the account lands here and is NOT collateral) vs in the trading SUBACCOUNT (equity / free collateral). Returns depositableUsdc (wallet minus the $0.95 gas reserve),
get_leaderboardThe trader PnL leaderboard for a time span (ONE_DAY, SEVEN_DAYS, THIRTY_DAYS, ONE_YEAR, ALL_TIME): rank, username, address, PnL (USD), ROI (%) and current equity per trader, paginated. Also returns `me` — this account's own row on that boar
Inputs: timeSpan, limit, page, sortBy, sortDirection, search
get_marketGet details for one perpetual market (clobPairId, atomicResolution, quantumConversionExponent, tick/step sizes, oracle price, status).
Inputs: market
get_my_rankWhere THIS account ranks on the PnL leaderboard: rank, board size ("21 of 66"), PnL, ROI and equity — for one time span, or for every time span (ONE_DAY … ALL_TIME) when none is given. A null entry means the account is not ranked on that bo
Inputs: timeSpan
get_newsFetch the latest headlines from the ritbit news feed (curated crypto / markets / business channels, newest first). Filter by `category` (crypto|markets|business) or explicit `channels`, and/or a free-text `query` (a ticker or keyword, match
Inputs: category, channels, query, limit, sinceHours
get_open_ordersGet currently active ORDERS for the subaccount, optionally filtered by market and side. Includes OPEN resting orders and UNTRIGGERED conditional orders (TP/SL accepted on-chain but not yet triggered). Returns { orders: [...] }. This does NO
Inputs: market, side, limit
get_orderbookGet the live orderbook (bids/asks) for a market, optionally truncated to a depth.
Inputs: market, depth
get_pnlGet historical PnL ticks for the subaccount (equity, totalPnl, netTransfers over time). Use createdOnOrAfter to bound the range.
Inputs: limit, createdOnOrAfter, page
get_portfolioOne-call snapshot of everything the account has "open": equity & freeCollateral, every open POSITION (with notional, unrealized PnL and estimated liquidation price), every active ORDER (resting + untriggered TP/SL), and account margin risk.
get_position_riskMargin health for the subaccount: equity, freeCollateral, total maintenance/initial margin, maintenanceMarginBufferUsd (the EXACT liquidation guard — liquidatable when < 0), marginUsageRatio (1.0 = at liquidation), account leverage, and per
get_positionsGet perpetual POSITIONS with size, side, entryPrice, unrealizedPnl, realizedPnl and netFunding. Defaults to OPEN positions. NOTE: a position is what you HOLD after an order fills — it is NOT an open order. When the user asks loosely "what i
Inputs: status
get_referral_programThis account's referral / affiliate program status: referral code and link, whether the link is unlocked (lifetime volume threshold, or already an affiliate), current affiliate tier and taker-fee share, referred volume (30d / all-time), ear
list_marketsList all perpetual markets with ticker, status and oracle price. Use this first to discover valid market tickers (e.g. BTC-USD) before placing orders.
open_positionEnter a NEW position with a MARKET order, sized by base `size` OR quote `notionalUsd` (exactly one required; notionalUsd converts at the oracle price and is floored to the step size). Optionally attach a reduce-only stopLossPrice and/or tak
Inputs: market, side, size, notionalUsd, slippageBps, stopLossPrice
place_limit_orderPlace a limit order. Default timeInForce=GTT (long-term, durable, broadcast-commit so errors return synchronously). Use SHORT_TERM only for latency-sensitive orders (expire within ~20 blocks, broadcast async). NOTE: stateful (GTT) orders ar
Inputs: market, side, price, size, timeInForce, postOnly
place_market_orderPlace an IOC market order. It executes as an IOC limit at a worst-acceptable price mirrored around the oracle by side — BUY caps ABOVE the oracle, SELL below — at slippageBps distance (default 500 = 5%). Fills happen at book prices; the cap
Inputs: market, side, size, slippageBps, reduceOnly, clientId
place_stop_lossPlace a reduce-only Stop loss (conditional market order) that triggers at triggerPrice. Side must be the CLOSING side of the position: SELL closes a LONG, BUY closes a SHORT. Once triggered it executes as an IOC limit bounded at triggerPric
Inputs: market, side, triggerPrice, size, slippageBps, clientId
place_take_profitPlace a reduce-only Take profit (conditional market order) that triggers at triggerPrice. Side must be the CLOSING side of the position: SELL closes a LONG, BUY closes a SHORT. Once triggered it executes as an IOC limit bounded at triggerPr
Inputs: market, side, triggerPrice, size, slippageBps, clientId
top_up_gasMove a little USDC from the trading subaccount back to the WALLET when the wallet is at or below $0.55 — just enough to restore the $0.95 gas reserve that deposit/withdraw transactions need. Only the gas reserve, only to the account's own w
whoamiReport what this session controls: the master account (its address in BOTH forms — cosmos rit1… and EVM 0x…, the same 20 bytes), the subaccount, whether it can trade or is read-only, and the exact on-chain authorization scope (which message

Add Rubin Exchange to your AI client

Every block below points at https://mcp.mainnet.rubin.trade/mcp. Pick your client and copy.

Claude Code: one command in your terminal
claude mcp add --transport http rubin-exchange https://mcp.mainnet.rubin.trade/mcp
Claude Desktop: claude_desktop_config.json
{
  "mcpServers": {
    "rubin-exchange": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.mainnet.rubin.trade/mcp"]
    }
  }
}
Cursor: ~/.cursor/mcp.json, or .cursor/mcp.json in a project
{
  "mcpServers": {
    "rubin-exchange": {
      "url": "https://mcp.mainnet.rubin.trade/mcp"
    }
  }
}
VS Code and GitHub Copilot: .vscode/mcp.json
{
  "servers": {
    "rubin-exchange": {
      "type": "http",
      "url": "https://mcp.mainnet.rubin.trade/mcp"
    }
  }
}
Zed: Zed settings.json
{
  "context_servers": {
    "rubin-exchange": {
      "url": "https://mcp.mainnet.rubin.trade/mcp"
    }
  }
}
Windsurf: ~/.codeium/mcp_config.json
{
  "mcpServers": {
    "rubin-exchange": {
      "serverUrl": "https://mcp.mainnet.rubin.trade/mcp"
    }
  }
}
JetBrains AI Assistant: Settings, Tools, AI Assistant, MCP, New MCP Server, as JSON
{
  "mcpServers": {
    "rubin-exchange": {
      "url": "https://mcp.mainnet.rubin.trade/mcp"
    }
  }
}
Continue: .continue/mcpServers/neuronto.yaml
name: Rubin Exchange
version: 0.0.1
schema: v1
mcpServers:
  - name: Rubin Exchange
    type: streamable-http
    url: https://mcp.mainnet.rubin.trade/mcp
Gemini CLI: ~/.gemini/settings.json
{
  "mcpServers": {
    "rubin-exchange": {
      "httpUrl": "https://mcp.mainnet.rubin.trade/mcp"
    }
  }
}
Codex CLI: MCP server config
{
  "mcpServers": {
    "rubin-exchange": {
      "type": "http",
      "url": "https://mcp.mainnet.rubin.trade/mcp"
    }
  }
}
Warp: MCP servers, + Add, paste JSON
{
  "mcpServers": {
    "rubin-exchange": {
      "url": "https://mcp.mainnet.rubin.trade/mcp"
    }
  }
}
Goose: a one-click extension link
goose://extension?url=https%3A%2F%2Fmcp.mainnet.rubin.trade%2Fmcp&type=streamable_http&id=rubin-exchange&name=Rubin%20Exchange

Is Rubin Exchange up right now?

It answered our last check on 24 October 2026 in 220 ms. Over 6 checks since 12 September 2026 it answered 6. Status here comes from Neuronto's own probes, not from the publisher.

MCP servers similar to Rubin Exchange

Questions about Rubin Exchange

Is there an official Rubin Exchange MCP server?

Yes. It is published by rubin.trade and served from mcp.mainnet.rubin.trade, the vendor's own domain: https://mcp.mainnet.rubin.trade/mcp.

How many tools does Rubin Exchange have?

33, as returned by the server's own tools/list on 23 September 2026: batch_cancel, cancel_all_orders, cancel_order, close_all_positions, close_position, deposit_to_subaccount, get_balance, get_block_height, and 25 more.

Is Rubin Exchange down?

It answered our last check on 24 October 2026 in 220 ms. Over 6 checks since 12 September 2026 it answered 6.

How do I add Rubin Exchange to Cursor?

Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://mcp.mainnet.rubin.trade/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.

Does Rubin Exchange need an API key?

It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.

Where this comes from

Publisher: trade.rubin. Endpoint host: mcp.mainnet.rubin.trade. ARD identifier: urn:air:trade.rubin:mcp:exchange. First indexed 10 September 2026. The tools are exactly what the server returned; nothing on this page is inferred from its name. Ranking in Neuronto search is never for sale.

Is this your server? Get a message the day it stops answering or its tools change: monitoring, 14 days free. Or claim the domain to manage how it is listed.