Skip to main content
Glama

Simulation profile

paper_sim
Idempotent

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.

Input Schema

NameRequiredDescriptionDefault
resetNotrue = back to the engine defaults.
presetNofrictionless | realistic | binance | bybit | okx | hyperliquid | thin_book | brutal. A preset starts from the defaults, so it is a clean slate plus that configuration. Omit every field to READ.
fundingNofalse = never charge funding, which is how you separate an execution edge from a carry edge.
mmr_pctNo0.05-10. Your own maintenance margin, beating margin_venue.
slippageNoFill against yourself the way a real book does: 0.01% crypto majors, 0.05% other crypto, 0.005% forex, 0.02% stocks/metals/indices.
taker_bpsNo0-100. Your own per-side fee in basis points. 5.5 = 0.055%.
latency_msNo0-2000. Your order is in flight this long and the price is re-read afterwards.
funding_multNo0-5. Scale the real 8-hourly funding rate.
leverage_maxNoYour own leverage ceiling below the market cap. 0 = the market cap.
margin_tiersNoRaise maintenance margin with size, as a risk-limit ladder does, so a large position liquidates sooner.
margin_venueNobinance | bybit | okx | bitget | mexc | kucoin | gate | kraken | hyperliquid | coinbase, or "marginpad". Moves ONLY where liquidation sits.
min_fill_pctNo10-100. The worst fill ratio with partial_fills on.
slippage_bpsNo0-500. Your own crossing cost in basis points instead of that table. 10 = 0.10%.
exit_slippageNoPay the crossing cost on the way out too (default true). A stop, take-profit or liquidation still fills at its level.
partial_fillsNoAllow a market order to fill less than it asked for.
margin_enforcedNotrue = an open needing more than free margin is refused 402, as a venue refuses it. Free margin is balance minus committed margin; unrealized profit is not collateral, because every position is isolated.
reject_rate_pctNo0-50. Share of opens refused 503 venue_rejected on purpose.
max_notional_usdNoYour own ceiling on one position’s notional. 0 = none.
start_balance_usdNo100 to 10,000,000. The book return_pct, the equity curve and max drawdown are measured against.
impact_bps_per_100kNo0-500. Extra basis points per $100,000 of notional, because size walks further down the book.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare it is a non-read-only, non-destructive, idempotent operation. The description adds substantial behavior beyond that: out-of-range values are refused and never clamped, positions keep the simulation they were filled under, presets start from defaults as a clean slate, reading returns every field with range/default/effect, and an API key is required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The prose is long but front-loaded with the default posture before the field inventory, and each sentence carries a distinct concept (defaults, configurable surface, presets, read behavior, refusal policy, persistence, auth). For a 20-parameter engine, the length is defensible, though a couple of clauses could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates fully: it explains what a read returns, what presets exist, that invalid values are refused rather than clamped, that existing positions retain their simulation, and that auth is needed. An agent has everything required to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the 20 parameters are already documented individually; baseline would be 3. The description adds value by grouping the fields by concern (book size, crossing cost, latency, fill behavior, refusals, fees/funding, liquidation), explaining preset semantics, and clarifying the read mode that the schema only hints at.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: it configures the whole paper-trading simulation engine, and enumerates the exact knobs (margin, slippage, latency, partial fills, reject rate, fees, funding, liquidation). It is clearly the setter for simulation state, but it never names siblings such as paper_realism or paper_reset, so the sibling differentiation is left implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context: pass a preset for the easiest route, omit every field to READ, and requires an API key. It also states a default posture (deliberately easy, good for learning, optimistic for proving a bot), which helps an agent decide when this is appropriate. It stops short of explicitly naming the alternative read tool or the reset tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.