Skip to content

io.github.Marginpad/sdk

by Marginpad · remote · no sign-in to list tools · v3.0.0 · published by GitHub user Marginpad

Free crypto-futures paper trading and live market data for AI agents. 29 tools; no key for data.

Deletes · 3Changes · 18

29 tools: 3 can delete or cancel things, 18 change things and 8 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http sdk https://marginpad.io/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The server marks "get_open_interest" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "get_open_interest" says "get": a word for reading.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

29 tools

Deletes or cancels 3Claude Code: deny
  • paper_cancel_orderCancel a resting limit order.No findings

    Why it is in this group

    • The name "paper_cancel_order" says "cancel": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Cancel a resting limit order. Requires an API key.

    Annotations the server declares

    • title: Cancel a resting order
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • paper_closeClose a simulated position, fully or partially.No findings

    Why it is in this group

    • The name "paper_close" says "close": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Close a simulated position, fully or partially. Requires an API key.

    Annotations the server declares

    • title: Close a paper position
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • paper_resetRestart this key’s book at $10,000: closed trades are archived (never deleted), resting orders cancelled, the report and equity curve start from now.No findings

    Why it is in this group

    • The name "paper_reset" says "reset": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Restart this key’s book at $10,000: closed trades are archived (never deleted), resting orders cancelled, the report and equity curve start from now. Refused while positions are open - close them first. Requires an API key.

    Annotations the server declares

    • title: Reset the paper book
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
Changes things 18Claude Code: ask
  • calc_liquidationLiquidation price for a position: entry, leverage, side.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Liquidation price for a position: entry, leverage, side.

    Annotations the server declares

    • title: Liquidation price calculator
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • calc_position_sizeRisk-based position size from account balance, risk percent, entry and stop.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Risk-based position size from account balance, risk percent, entry and stop.

    Annotations the server declares

    • title: Position size calculator
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_open_interestOpen interest per symbol - how much leveraged money is committed.1 finding

    Why it is in this group

    • The name "get_open_interest" says "get": a word for reading.
    • The description's first verb is "open": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "get_open_interest" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "get_open_interest" says "get": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Open interest per symbol - how much leveraged money is committed.

    Annotations the server declares

    • title: Open interest
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • paper_accountsEvery book (sub-account) of this account with lifetime numbers and the keys bound to it.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Every book (sub-account) of this account with lifetime numbers and the keys bound to it. A book is a separate journal, balance and report; a key minted with a book name trades that book. Requires an API key.

    Annotations the server declares

    • title: Paper books
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • paper_balanceYour paper account: balance, equity, free margin, unrealized P&L.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Your paper account: balance, equity, free margin, unrealized P&L. Requires an API key.

    Annotations the server declares

    • title: Paper account balance
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • paper_equityThe equity curve of this key’s book: starting balance + realized P&L per bucket from the ledger, the live unrealized point at the end, and max drawdown.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    The equity curve of this key’s book: starting balance + realized P&L per bucket from the ledger, the live unrealized point at the end, and max drawdown. Requires an API key.

    Annotations the server declares

    • title: Equity curve
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • paper_feesWhich exchange fee schedule your paper fills are charged at: lists the venues we model (Bybit, Binance, OKX, Bitget, MEXC, Gate, KuCoin, Kraken, Hyperliquid) with their taker rate …No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Which exchange fee schedule your paper fills are charged at: lists the venues we model (Bybit, Binance, OKX, Bitget, MEXC, Gate, KuCoin, Kraken, Hyperliquid) with their taker rate and the referral discount a MarginPad sign-up gets, and your current default. Pass set to change the default (a venue key, or "marginpad" for the default rate). Requires an API key.

    Annotations the server declares

    • title: Fee venue
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • paper_limit_orderPlace a resting order that fills only when the market reaches your price, and fills AT that price.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Place a resting order that fills only when the market reaches your price, and fills AT that price. type "limit" = a pullback entry (long below the market, short above); type "stop" = a breakout entry (long above the market, short below). To open right now use paper_open instead. Simulated money only. Requires an API key.

    Annotations the server declares

    • title: Place a limit or stop order
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • paper_modify_orderChange a resting limit or stop order in place: its price, stop-loss, take-profit, margin, leverage or trailing stop.No findings

    Why it is in this group

    • The name "paper_modify_order" says "modify": a word for a change.
    Description, as the server wrote it
    Change a resting limit or stop order in place: its price, stop-loss, take-profit, margin, leverage or trailing stop. Requires an API key.

    Annotations the server declares

    • title: Modify a resting order
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • paper_openOpen a simulated position at the live price.No findings

    Why it is in this group

    • The name "paper_open" says "open": a word for a change.
    Description, as the server wrote it
    Open a simulated position at the live price. Simulated money only - no real funds are ever at risk. Requires an API key.

    Annotations the server declares

    • title: Open a paper position
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • paper_ordersYour resting limit orders, plus the last 20 that filled, expired or were cancelled.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Your resting limit orders, plus the last 20 that filled, expired or were cancelled. Requires an API key.

    Annotations the server declares

    • title: Resting orders
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • paper_positionsYour paper positions with live mark price and P&L net of fees; status "open" for just the open ones.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Your paper positions with live mark price and P&L net of fees; status "open" for just the open ones. Requires an API key.

    Annotations the server declares

    • title: Paper positions
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • paper_realismHow honestly your paper fills are simulated.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    How honestly your paper fills are simulated. By default a market order fills at the live price with no slippage and maintenance margin is a flat 0.5%, which is easier than a real exchange and increasingly so as a position grows. Pass slippage and/or margin_tiers to turn either on, and margin_venue to build on a named venue’s published maintenance-margin rate (Binance 0.40%, Bybit 0.50%, MEXC 0.10%, Kraken 0.60%, Hyperliquid 1.25%, Coinbase 1.33%). Reading returns your setting, every venue rate and the whole size-tier ladder, so a liquidation price never has to be reverse-engineered. Positions keep the margin they were filled with. Requires an API key.

    Annotations the server declares

    • title: Fill realism
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • paper_replayBacktest with the real routes: replay one past UTC day on MarginPad’s 1-minute candles.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Backtest with the real routes: replay one past UTC day on MarginPad’s 1-minute candles. With symbol+day it STARTS a replay (speed = market seconds per real second, 1-600, default 60): from then on paper_open / paper_positions / paper_close act on a separate replay journal priced at the candle under the cursor, with stops, targets and liquidations checked on every candle. With no arguments it reads the status (cursor, price, progress, candles up to the cursor). With act "stop" it closes everything at the cursor and returns the summary. Requires an API key.

    Annotations the server declares

    • title: Replay a past day
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • paper_reportThe 30-day trading report for this account, measured from its own closed trades: totals and a skill score (free), win rate and return by coin, leverage band, side, hour and day plu…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    The 30-day trading report for this account, measured from its own closed trades: totals and a skill score (free), win rate and return by coin, leverage band, side, hour and day plus written findings (API Pro and above). Requires an API key.

    Annotations the server declares

    • title: Trading report
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • paper_simThe whole paper-trading simulation, configurable.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    The whole paper-trading simulation, configurable. By default this engine is deliberately easy: a market order fills whole at the live price, maintenance margin is a flat 0.5%, the balance is a scorecard that never refuses an open, and there is no latency, no size impact and no partial fill. That is right for learning and optimistic for proving out a bot. This sets any of it: the book size your results are measured against and whether it is a real budget (margin_enforced), what crossing the book costs on entry and exit (slippage, slippage_bps, impact_bps_per_100k), how long your order is in flight (latency_ms), whether orders fill part-way (partial_fills, min_fill_pct), how often the venue refuses (reject_rate_pct), your own fee (taker_bps), funding (funding, funding_mult) and where liquidation sits (margin_venue, margin_tiers, mmr_pct). Easiest route: pass a preset - frictionless, realistic, binance, bybit, okx, hyperliquid, thin_book or brutal. Reading returns every field with its range, its default and what it changes, the presets, and what a fill would look like right now. Out-of-range values are refused, never clamped. Positions keep the simulation they were filled under. Requires an API key.

    Annotations the server declares

    • title: Simulation profile
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • paper_sltpMove the stop-loss, take-profit or trailing stop on an open simulated position.No findings

    Why it is in this group

    • The description's first verb is "move": a word for a change.
    Description, as the server wrote it
    Move the stop-loss, take-profit or trailing stop on an open simulated position. Requires an API key.

    Annotations the server declares

    • title: Set stop / take-profit
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • paper_tradesClosed-trade ledger with paging - the full record for measuring a strategy.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Closed-trade ledger with paging - the full record for measuring a strategy. Requires an API key.

    Annotations the server declares

    • title: Closed paper trades
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Only reads 8Claude Code: allow
  • get_economic_calendarUpcoming macro events that move crypto (FOMC, CPI, NFP).No findings

    Why it is in this group

    • The name "get_economic_calendar" says "get": a word for reading.
    Description, as the server wrote it
    Upcoming macro events that move crypto (FOMC, CPI, NFP). Always check this before answering questions about dates - never answer those from memory.

    Annotations the server declares

    • title: Economic calendar
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_fear_greedCrypto Fear and Greed index, current value and classification.No findings

    Why it is in this group

    • The name "get_fear_greed" says "get": a word for reading.
    Description, as the server wrote it
    Crypto Fear and Greed index, current value and classification.

    Annotations the server declares

    • title: Fear and Greed index
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_fundingCurrent funding rates across exchanges - who pays whom to hold a perp position.No findings

    Why it is in this group

    • The name "get_funding" says "get": a word for reading.
    Description, as the server wrote it
    Current funding rates across exchanges - who pays whom to hold a perp position.

    Annotations the server declares

    • title: Funding rates
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_klinesOHLC candles for a symbol.No findings

    Why it is in this group

    • The name "get_klines" says "get": a word for reading.
    Description, as the server wrote it
    OHLC candles for a symbol. Use this to compute indicators or check a setup before trading.

    Annotations the server declares

    • title: OHLC candles
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_liquidationsRecent real liquidation events aggregated from eight exchanges.No findings

    Why it is in this group

    • The name "get_liquidations" says "get": a word for reading.
    Description, as the server wrote it
    Recent real liquidation events aggregated from eight exchanges.

    Annotations the server declares

    • title: Liquidations (24h)
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_marketsEvery tradable symbol with its asset class, maximum leverage and taker fee.No findings

    Why it is in this group

    • The name "get_markets" says "get": a word for reading.
    Description, as the server wrote it
    Every tradable symbol with its asset class, maximum leverage and taker fee. Call this before sizing a trade.

    Annotations the server declares

    • title: Tradable markets
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_priceLive price and 24h change for a crypto perp, stock, index, forex pair or metal.No findings

    Why it is in this group

    • The name "get_price" says "get": a word for reading.
    Description, as the server wrote it
    Live price and 24h change for a crypto perp, stock, index, forex pair or metal. No API key needed.

    Annotations the server declares

    • title: Live price
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_screenerScored trade setups across top USDT perps: 0-100 technical score, RSI, MACD, funding and open interest.No findings

    Why it is in this group

    • The name "get_screener" says "get": a word for reading.
    Description, as the server wrote it
    Scored trade setups across top USDT perps: 0-100 technical score, RSI, MACD, funding and open interest.

    Annotations the server declares

    • title: Setup screener
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 3.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http sdk https://marginpad.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__sdk__get_price",
      "mcp__sdk__get_klines",
      "mcp__sdk__get_markets",
      "mcp__sdk__get_screener",
      "mcp__sdk__get_funding",
      "mcp__sdk__get_liquidations",
      "mcp__sdk__get_fear_greed",
      "mcp__sdk__get_economic_calendar"
    ],
    "ask": [
      "mcp__sdk__get_open_interest",
      "mcp__sdk__calc_liquidation",
      "mcp__sdk__calc_position_size",
      "mcp__sdk__paper_balance",
      "mcp__sdk__paper_positions",
      "mcp__sdk__paper_trades",
      "mcp__sdk__paper_open",
      "mcp__sdk__paper_sltp",
      "mcp__sdk__paper_modify_order",
      "mcp__sdk__paper_fees",
      "mcp__sdk__paper_sim",
      "mcp__sdk__paper_realism",
      "mcp__sdk__paper_report",
      "mcp__sdk__paper_accounts",
      "mcp__sdk__paper_equity",
      "mcp__sdk__paper_replay",
      "mcp__sdk__paper_limit_order",
      "mcp__sdk__paper_orders"
    ],
    "deny": [
      "mcp__sdk__paper_close",
      "mcp__sdk__paper_reset",
      "mcp__sdk__paper_cancel_order"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as sdk. Review it before you use it.