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 CrossTrade NT8 add-on is involved.

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. ESZ6.
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 12-26), or Tradovate (ESZ6) 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 CrossTrade keeps tightening that ordinary stop to follow the trade's best price by the offset. It is never converted to a native Tradovate trailing order.
  • 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.

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"
}
}
}