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.
29 tools: 3 can delete or cancel things, 18 change things and 8 only read.
Scanned Oct 21, 2026
- Deletes or cancels3Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things18Claude Code: ask: see these tools
- Only reads8Claude Code: allow: see these tools
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/mcpFindings
Matches of fixed checks, with the text they matched.
The server marks "get_open_interest" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "get_open_interest" says "get": a word for reading.
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".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "get_open_interest" says "get": a word for reading.
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/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .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.
