Skip to main content

MCP tools and trading

Tool reference

ToolModePurpose
nord_list_marketsPublic and authenticatedDiscover IDs, symbols, precision, and CLOB/RFQ modes; optional search and mode filters
nord_get_marketPublic and authenticatedPricing, availability, and up to 50 CLOB levels per side, or indicative RFQ reference data; requires marketId
nord_get_connectionAuthenticatedProfile identity, network, account, and session readiness
nord_get_accountAuthenticatedSelected-account balances and provider risk metrics
nord_list_positionsAuthenticatedPositions, optionally filtered by marketId
nord_list_open_ordersAuthenticatedCurrent CLOB orders and remaining sizes
nord_list_order_historyAuthenticatedA page of CLOB/RFQ account history
nord_get_orderAuthenticatedOrder state and a page of fills; requires orderId
nord_preview_orderAuthenticatedPrepare an indicative order without signing
nord_place_orderAuthenticatedSubmit a protected order with a stable requestId
nord_cancel_orderAuthenticatedCancel one CLOB order using orderId and a stable requestId
nord_get_requestAuthenticatedInspect and reconcile an operation by requestId

Identifiers and financial quantities are decimal strings. Paginated tools accept limit (default 20, maximum 50) and an optional cursor. Pass returned cursors unchanged. History can lag execution; an empty page or open-order list is not proof that an order was rejected. Unknown values are null, not zero; account equity is not fabricated from other risk metrics.

Tools return structured content and text. Check the result's ok value and error or request state, rather than treating a completed tool call as proof of execution. observedAt is the fetch time, not a guarantee that the underlying market data is fresh.

Order inputs

Discover the market ID first. Both preview and placement use these fields:

FieldMeaning
marketIdDecimal-string market ID, not a symbol
sidebuy or sell
typemarket or limit
baseSizePositive decimal-string base quantity; mutually exclusive with quoteNotional
quoteNotionalPositive decimal-string quote-denominated position notional; mutually exclusive with baseSize
limitPriceRequired for limit orders; not accepted for market orders
slippageBpsRequired integer from 0 to 9999 for market orders; not accepted for limit orders
reduceOnlyOptional boolean, defaults to false

Quote notional is the position size, not collateral or a leverage setting. It excludes fees. Explicit precision must match the market; it is not silently truncated. Derived quantities round down, and protective prices round toward the user's bound.

For example, after confirming the ID and capabilities of your intended market, pass this directly to nord_preview_order. The ID below is illustrative:

{
"marketId": "0",
"side": "buy",
"type": "market",
"quoteNotional": "100",
"slippageBps": 50,
"reduceOnly": false
}

A preview is neither a firm quote nor reusable authorization. Placement fetches fresh state and revalidates the session, account, market, precision, and pricing. If you decide to submit, nord_place_order wraps those inputs in order and requires a stable request ID:

{
"requestId": "order-example-001",
"order": {
"marketId": "0",
"side": "buy",
"type": "market",
"quoteNotional": "100",
"slippageBps": 50,
"reduceOnly": false
}
}

Use a new request ID for each new intent, and retain it to inspect or retry that same operation. Client approval settings govern submission.

CLOB and RFQ behavior

BehaviorCLOBRFQ
Market ordersIOC with a protective limit derived from the executable side of the bookMarket-style user request with a worst acceptable price
Limit ordersSupportedUnsupported
CancellationSupported; can race fillsUnsupported
Quote sizingNative quote sizingConverted to a conservative base quantity; a notional target, not a native quote-amount execution cap
OutcomeMay fill partially; inspect fills, resting size, and unfilled amountPlacement acknowledgement is separate from eventual fill or expiry

CLOB orders use expire-maker self-trade prevention. RFQ pricing requires a complete finalized sample no older than 30 seconds and a current-index observation no older than 10 seconds. Stale or missing pricing fails closed. RFQ data remains indicative even when fresh; it does not guarantee liquidity. Inspect nord_get_order for fills and finalization rather than reporting an RFQ acknowledgement as a completed trade.

See execution modes for the underlying market behavior.

Recover interrupted requests

The server persists request identity before submission and receipts before responding. Submission state and order lifecycle are separate: an accepted request does not necessarily mean a fully filled order.

If a write times out or the client disconnects:

  1. Call nord_get_request with the original requestId to inspect and advance reconciliation. Repeat this read if evidence is still missing.
  2. If retrying the original write, use the same request ID and exactly the same arguments. Changed arguments conflict. A request still in prepared state is incomplete; it can resume only if no action identity was persisted.
  3. Keep unknown outcomes unresolved until evidence establishes what happened. Do not submit a replacement with a new ID to bypass recovery.

The package does not promise permanent exactly-once execution based on client order IDs or Nord's temporary deduplication cache. Cancelling an MCP call, closing the client, or stopping the server does not cancel an already submitted order.

For CLI inspection and access removal, see session management.

These materials are provided for informational purposes only and do not constitute financial, investment, legal, or tax advice, or an offer or solicitation to buy or sell any asset. Trading digital assets and derivatives involves substantial risk, including the possible loss of some or all capital. Products may not be available in all jurisdictions. Users are responsible for evaluating suitability and complying with applicable laws.