Skip to main content

Tradovate MCP Tools

The Tv_* tools let an Elite user's AI client talk to their own linked Tradovate account through the hosted MCP server. No NT8 add-on is involved: calls execute server-side against the Tradovate Web API, so they work even when NinjaTrader is closed.

The only extra requirement beyond Elite is a linked Tradovate account. Without one, every Tv_* call returns a clean tradovate_not_linked error with a pointer to the Tradovate Account Manager, instead of an opaque client exception.

Read tools require the read scope; trade tools require trade (see Scopes). The REST twin of this surface, with the full field grammar, mutation safety guarantees, and error table, is the Tradovate API.

Read Tools

All 16 read tools use the read scope and return {"success": true, "data": ...} shapes matching the /v1/api/tv REST reads.

ToolRequired argsUse it for
Tv_StatusnoneLink status: linked identities, environments (demo/live), token expiry.
Tv_ListAccountsnoneList the linked Tradovate accounts (name, id, environment).
Tv_AccountSnapshotnoneOne-shot live snapshot of every linked account: balances, open positions with P&L, working orders.
Tv_GetAccountaccountOne account with its current cash-balance snapshot.
Tv_ListPositionsnone (account optional)Open positions: fill-reconciled for one account, or raw rows across all linked identities.
Tv_GetPositionaccount, instrumentNet position for one account and instrument. netPos is signed; 0 means flat.
Tv_ListOrdersnone (account optional)Working orders for one account, or every order across all linked identities.
Tv_GetOrderorderIdOne order by id (includes ordStatus).
Tv_GetOrderLifecycleorderIdAudit trail for one order: current version, submitted commands, and command reports (rejectReason/text for refusals).
Tv_ListFillsnone (account optional)Fills, optionally scoped to one account; rows include the resolved instrument symbol.
Tv_CashBalancesnoneCash-balance rows for every linked identity.
Tv_MarginSnapshotsnoneMargin snapshots for every linked identity.
Tv_FindContractnameOne contract by exact Tradovate symbol, e.g. ESU6.
Tv_SuggestContractstextContract autocomplete; use it to resolve the active front month.
Tv_ListExchangesnoneExchange reference list from Tradovate.
Tv_GetWatermarksaccountP&L high-water marks (pnlhigh, netliqhigh, unrealhigh) tracked by the CrossTrade Account Manager.

Trade Tools

All 13 trade tools use the trade scope. Order references (orderId) accept either a Tradovate numeric order id or the user-assigned orderId from a previous Tv_PlaceOrder.

ToolRequired argsUse it for
Tv_PlaceOrderaccount, instrument, action, qty, orderTypePlace an order. Supports market/limit/stop/stoplimit/mit/trailing types, server-side OCO brackets via takeProfit/stopLoss, and inline atm* multibracket fields.
Tv_FlatPlaceaccount, instrument, action, qty, orderTypeFlatten the position and cancel working orders on the instrument, then place a fresh entry with optional inline atm* management.
Tv_CancelOrderorderIdCancel one working order.
Tv_CancelOrdersaccountCancel every working order on one account.
Tv_CancelAllOrdersnoneCancel every working order across all linked identities.
Tv_ChangeOrderorderIdModify a working order in place (quantity and/or prices); unchanged values are merged from the live order version.
Tv_CancelReplaceorderId, account, instrument, action, qty, orderTypeCancel a working order and place a replacement in one command.
Tv_CancelAndBracketaccount, instrument, action, qtyCancel working orders on the instrument, clamp to the live position, and attach a fresh OCO bracket.
Tv_ClosePositionaccount, instrumentClose the position; optional qty or percent (0-1) closes part of it.
Tv_Flattennone (filters optional)Flatten positions matching account/instrument/marketPosition filters. No filters means every position.
Tv_FlattenEverythingnoneLiquidate every position and cancel every working order across all linked identities.
Tv_Reverseaccount, instrumentReverse the live position: liquidate, then enter the opposite side at the same size.
Tv_ReversePositionaccount, instrument, action, qty, orderTypeFlatten the instrument, then place the specified entry with optional inline atm* management.
Same pipeline as REST and webhooks

Trade tools run through the same validation and controls as the /v1/api/tv REST mutations and webhook signals: field validation, Account Manager locks (kill switch and close-only), and Trade Copier fan-out all apply. Arguments use the same camelCase field names as the REST surface. instrument accepts continuous (ES1!), NT8 (ES 09-26), or Tradovate (ESU6) forms.

Tv_PlaceOrder, Tv_FlatPlace, and Tv_ReversePosition accept the complete inline ATM field set. Tv_PlaceOrder, Tv_FlatPlace, Tv_CancelReplace, and Tv_ReversePosition also accept Strategy Sync fields. Distances use ticks by default or points with a pt suffix.

  • Tradovate native: atmTargets, atmStops, atmQtys, and triggerless atmTrail create the broker-hosted multibracket and continuous trails.
  • CrossTrade-exclusive: paired atmTrailTrigger/atmTrailOffset use CrossTrade's own live pricing to hold a fixed stop until the trigger, then hand off to a native Tradovate trail.
  • CrossTrade-exclusive: atmBreakeven/atmBreakevenOffset watch a target fill and move surviving stops. Tradovate AutoBracket has no native breakeven field.

Tradovate market-data entitlement is never used for trail-trigger decisions. Triggered trails fail closed without fresh pricing and keep their native fixed stop. Breakeven is driven by confirmed broker target fills. These CrossTrade-managed breakeven and triggered-trail features remain beta; native multibrackets and triggerless continuous trails are generally available.

Examples

A tools/call request that places a market order:

{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "Tv_PlaceOrder",
"arguments": {
"account": "DEMO12345678",
"instrument": "ES1!",
"action": "buy",
"qty": 1,
"orderType": "market"
}
}
}

A tools/call request that reads the live snapshot of every linked account:

{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "Tv_AccountSnapshot",
"arguments": {}
}
}

A native two-tier multibracket with a CrossTrade-exclusive triggered runner:

{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "Tv_PlaceOrder",
"arguments": {
"account": "DEMO12345678",
"instrument": "ES1!",
"action": "buy",
"qty": 2,
"orderType": "market",
"tif": "day",
"atmTargets": "20,40",
"atmStops": "15",
"atmQtys": "1,1",
"atmTrail": "false,true",
"atmTrailTrigger": ",30",
"atmTrailOffset": ",10"
}
}
}