Tools

The complete catalog of actions your agent can call on the NinjaTrader MCP server.
View as Markdown

Beta, pre-release. The NinjaTrader MCP server and its trading skills are in beta and aren’t yet generally available. The beta runs on Demo only, which trades simulated money. Live access opens later. Server hostnames, the tool set, the skills, and the onboarding flow may change before launch.

Tools are the actions your agent can take. Each tool declares an input schema, the access it requires, and a behavior hint your client uses to decide whether to ask for your approval before running it.

  • Read-only tools only query data. They never change your account.
  • Write tools change your account by placing or modifying orders, flattening positions, or changing risk settings. The server marks them with the MCP protocol’s destructive-action flag, destructiveHint, which is why most clients pause for confirmation before running them, and why some clients describe these actions as “destructive.”

Your agent discovers the full, live tool list from the server when it connects, so the catalog it sees always matches what the server actually offers. The reference below groups every tool by what it does.

The agent has a built-in describe tool for looking up enum values such as order types, statuses, and time-in-force, plus field meanings and worked examples. If you’re unsure what a value means, ask your agent to “describe” it.

The server follows a natural trading flow. A typical sequence is:

  1. my_portfolio: see accounts, positions, balances, and working orders.
  2. search_contracts: find the exact tradable symbol.
  3. market_snapshot: check the live quote, spec, and margin.
  4. estimate_order: pre-flight the margin, fees, and feasibility of a hypothetical order.
  5. place_order: submit it.

Account & portfolio

ToolDescriptionKey inputsAccessBehavior
my_portfolioAccount summary, open positions, and working orders.account, fieldsPositions: Read, Orders: ReadRead-only
user_profileYour profile: identity, multifactor authentication, subscription, market data, accounts, add-ons.fieldsUsers: ReadRead-only

Market data & contracts

ToolDescriptionKey inputsAccessBehavior
search_contractsFind tradable contracts by symbol, product, or exchange.text, exchange, productType, includeFamilySiblingsContractLibrary: ReadRead-only
market_snapshotReal-time quote, contract spec, and margin for one or more symbols.symbols, product, fieldsPrices: ReadRead-only
market_historyHistorical open-high-low-close bars with a Minute, Daily, or Tick bar type.symbol, barType, barSize, count, from, to, closeOnly, volumeProfilePrices: ReadRead-only
dom_snapshotDepth-of-market snapshot: bid/ask price ladders and sizes.symbol, depthPrices: ReadRead-only
pulseCrowd-sentiment snapshot for a product, contract, or group.topic, keyPrices: ReadRead-only

Trading & orders

ToolDescriptionKey inputsAccessBehavior
estimate_orderPre-flight margin, fees, and feasibility for a hypothetical order.account, symbol, action, quantity, orderType, price, stopPriceOrders: ReadRead-only
place_orderSubmit a new order, optionally with order-cancels-order or order-sends-order bracket legs.account, symbol, action, orderType, quantity, timeInForce, price, stopPrice, limitIfTouchedPrice, expirationTime, bracketsOrders: Full AccessWrite
modify_orderChange a working order’s price, stop price, or quantity.account, orderId, price, stopPrice, quantityOrders: Full AccessWrite
cancel_orderCancel a single order by ID, or all working orders on an account.account, orderId or allOrders: Full AccessWrite
close_positionFlatten a position for one symbol, or for all symbols, with an opposite-side market order.account, symbol or allOrders: Full Access, Positions: ReadWrite

Every order the agent submits must also pass the account’s pre-trade risk checks before it reaches the market. estimate_order runs the same checks as a dry run.

Bracket legs are offsets, not absolute prices. In place_order, a bracket’s profitTarget and stopLoss specify signed offsets from the entry’s working price, in contract-native units, not absolute prices. In modify_order, by contrast, the price fields are absolute. Ask your agent to describe(topic='place_order_examples') for bracket patterns.

History & reporting

ToolDescriptionKey inputsAccessBehavior
order_historyHistorical orders with status, fill price, and timestamps.account, startDate, endDate, symbol, status, formatOrders: ReadRead-only
fill_historyHistorical fills with prices, quantities, and fee breakdown.account, startDate, endDate, symbol, formatOrders: ReadRead-only
order_detailsDetailed order info: fills, commands, and strategy.account, orderIdOrders: ReadRead-only
position_historyHistorical positions: open/close times, direction, prices, realized P&L.account, startDate, endDate, symbol, formatPositions: ReadRead-only
cash_historyPer-transaction cash ledger with change types, amounts, and timestamps.account, startDate, endDate, cashChangeType, symbol, formatAccounting: ReadRead-only
daily_balance_historyDaily account balance history with total amounts and realized P&L.account, startDate, endDate, formatAccounting: ReadRead-only
performance_summaryFull trade performance stats: aggregates, winners/losers, drawdown, run-up.account, startDate, endDateAccounting: ReadRead-only

Date inputs accept YYYY-MM-DD or natural terms like today, yesterday, this week, last month, or last N days. History tools support a compact columns response format that’s about 50% smaller on large histories. A fields filter to keep only the paths you need is available on my_portfolio, market_snapshot, and user_profile.

Risk

ToolDescriptionKey inputsAccessBehavior
risk_settingsPer-account risk configuration: loss limits, drawdown, margin thresholds.accountRisks: ReadRead-only
update_risk_settingsChange risk and auto-liquidation settings. The tool changes only the fields you provide.account, dailyLossLimit, weeklyLossLimit, dailyProfitLimit, weeklyProfitLimit, trailingMaxDrawdown, trailingMaxDrawdownLimit, trailingMaxDrawdownMode, flattenTimestampRisks: Full AccessWrite

Alerts

ToolDescriptionKey inputsAccessBehavior
create_alertCreate a price-cross or expression alert.symbol, trigger, price, expression, message, validUntil, triggerLimitsAlerts: Full AccessWrite—safe to retry
list_alertsList all your alerts with status, trigger counts, and expiry.statusAlerts: Full AccessRead-only
dismiss_alertDeactivate an alert. The server keeps the record instead of deleting it.alertIdAlerts: Full AccessWrite

Analytics

The calendar tools are available when the deployment has the market-info service enabled. The timeline tools appear in your agent’s tool list only when your account has the timeline feature enabled.

ToolDescriptionKey inputsAccessBehavior
timeline_reportPer-day trade report with P&L, MAE/MFE, and entry/exit quality. Single date or range.account, date, endDate, timezoneAccounting: ReadRead-only
timeline_detailsEvent-by-event timeline for a single trade: entry, scale-in, scale-out, exit.trade_id, timezoneAccounting: ReadRead-only
economic_calendarEconomic event releases such as CPI, NFP, FOMC, EIA, and OPEC. Paginated.fromDate, toDate, limit, offsetPrices: ReadRead-only
earnings_calendarCorporate earnings releases. Paginated.fromDate, toDate, limit, offsetPrices: ReadRead-only

Utility

ToolDescriptionKey inputsAccessBehavior
describeFetch documentation for a named topic: enum values, field meanings, output shapes, and examples. Use topic='index' to list all topics.topicNoneRead-only

describe is how the agent looks up the exact valid values for enumerated fields, plus complex output structures and worked examples. For example, action accepts Buy or Sell. orderType accepts Market, Limit, Stop, StopLimit, TrailingStop, MIT, LimitIfTouched, and more. timeInForce accepts Day, GTC, IOC, FOK, or GTD. Other enumerated fields include ordStatus, barType, productType, and cashChangeType.

Rate limits

Each tool has a per-minute request budget, and the server applies a short time penalty when your agent exceeds a budget. The limits are generous for normal agent use. Read-heavy tools like my_portfolio and market_snapshot allow far more frequent calls than write tools. If your agent is making rapid repeated calls and starts getting throttled, have it slow down and retry. This mirrors the rate-limit behavior of the Trade API.