Skip to main content
Glama
nexus-xyz

nexus-exchange-mcp

Official
by nexus-xyz

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
NEXUS_EXCHANGE_API_KEYNoHMAC API key id (x-api-key). Required for account/trade tools.
NEXUS_EXCHANGE_API_URLNoAPI base URL. Defaults to https://exchange.nexus.xyz/api/exchange.https://exchange.nexus.xyz/api/exchange
NEXUS_EXCHANGE_API_SECRETNoHMAC secret (hex). Required for account/trade tools.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
fetch_markets_summaryA

List all tradable markets with their current summary (mark price, 24h change, volume, open interest, funding). Public — no credentials needed.

fetch_tickerA

Get the ticker (last price, bid/ask, 24h stats) for one market, e.g. "BTC-USDX-PERP". Public — no credentials needed.

fetch_order_bookB

Get the current order book (bids/asks with price + size) for one market. Public — no credentials needed.

fetch_marketsA

List all markets with their static specs (tick size, lot size, leverage, contract details) — the raw market definitions without live summary stats. Public — no credentials needed. (Use fetch_markets_summary for live mark price / volume / funding.)

fetch_tickersA

Get tickers (last price, bid/ask, 24h stats) for ALL markets in one call. Public — no credentials needed.

fetch_mark_priceA

Get the current mark price for one market. Public — no credentials needed.

fetch_market_statusB

Get a market's trading status and halt info (whether trading is open, halted, or in auction). Public — no credentials needed.

fetch_tradesA

Get recent public trades (prints) for one market, newest first. Returns { items, next_cursor }. items is this page of results; next_cursor is an opaque token for the next page, or null when this is the last page. To read the full history, keep calling with cursor: <previous next_cursor> until next_cursor is null. limit sets the size of ONE page, not a total. Public — no credentials needed.

fetch_ohlcvA

Get OHLCV candles for one market. Public — no credentials needed. Timeframe is one of 1s, 1m, 5m, 1h (default 1m).

fetch_funding_rate_historyA

Get the funding-rate history for one perpetual market. Public — no credentials needed.

fetch_funding_samplesA

Get the dense per-tick funding premium-index samples for one perpetual market (60s cadence, up to 480 points = 8h). Finer-grained than fetch_funding_rate_history, which returns the settled hourly rates. Public — no credentials needed.

fetch_market_risk_paramsA

Get one market's risk parameters: margin requirements and maximum leverage, from the engine's market registry. Public — no credentials needed.

fetch_statsA

Get aggregate venue statistics (volume, trades, throughput) plus rolling unique-trader counts. Public — no credentials needed.

fetch_stats_historyA

Get the venue's per-second throughput history (ring buffer, up to 3600 points). Public — no credentials needed.

get_demo_accountA

Get a live, public demo account snapshot (balance, equity, positions). No credentials needed — useful to show the account flow before API keys are wired up.

get_demo_positionsA

Get the public demo account's open positions. No credentials needed.

get_demo_ordersA

Get the public demo account's open orders. No credentials needed.

fetch_balanceA

Get the authenticated account snapshot: collateral balance, equity, and positions. Positions carry per-position risk detail. notional_value, margin_used, roe, max_leverage, and leverage are derived from mirrored state, so any of them can be null with a companion <field>_error naming the reason (e.g. mark_price_unavailable); treat null as UNKNOWN, never as zero. leverage is currently always null (leverage_error: margin_state_not_mirrored) — do not infer it from margin_used. funding_paid is NOT one of those: it is always present and has no _error companion, so its "0" is a real zero (no funding accrued), not unknown. It is paid-positive — a negative value means funding was received. Requires API credentials.

fetch_account_summaryA

Get the authenticated account's portfolio summary (equity, margin usage, PnL rollup) — a richer view than fetch_balance. Includes withdrawable: the engine-authoritative free margin floored at zero, i.e. exactly what can leave the account (never negative). Because withdrawable comes from that authoritative margin view, this call fails closed with a 502 (authoritative_margin_unavailable) when the view is unavailable rather than returning a local estimate: retry after a short delay, do NOT read the error as a flat or empty account. Requires API credentials.

fetch_account_stateA

Get the authenticated account's full state in ONE call: the portfolio summary aggregates plus every open position ({ summary, positions }). Prefer this over pairing fetch_account_summary with fetch_positions — both parts come from one coherent read, so summary.open_positions_count always matches the positions length. If the engine-authoritative margin view is unavailable this fails closed with a 502 (authoritative_margin_unavailable) rather than returning an estimate: retry after a short delay, do NOT read the error as a flat or empty account. Positions carry per-position risk detail. notional_value, margin_used, roe, max_leverage, and leverage are derived from mirrored state, so any of them can be null with a companion <field>_error naming the reason (e.g. mark_price_unavailable); treat null as UNKNOWN, never as zero. leverage is currently always null (leverage_error: margin_state_not_mirrored) — do not infer it from margin_used. funding_paid is NOT one of those: it is always present and has no _error companion, so its "0" is a real zero (no funding accrued), not unknown. It is paid-positive — a negative value means funding was received. Requires API credentials.

fetch_trading_feesA

Get the authenticated account's effective fee schedule: maker/taker rate in basis points (a NEGATIVE maker rate is a rebate paid TO the maker), fee tier, rolling 30-day traded volume, and any active discounts. This is the forward-looking schedule rate for the scope named by schedule (per-market rates differ), not a realized per-fill average; volume_30d_estimated: true means the 30-day volume may undercount. Requires API credentials.

fetch_portfolio_historyA

Get the authenticated account's portfolio time-series — equity, cumulative trading PnL, and cumulative traded volume — over a selectable window, oldest first. Richer than fetch_equity_history (equity only, 5s cadence, ~1h); both derive equity from the same source, so the two never disagree. Each window sets its own downsample cadence and point capacity: day 5m/288, week 1h/168, month 6h/120, all 1d/366. pnl is deposit-neutral (trading performance only) and volume is monotonically non-decreasing. This is a HEAVY read — the gateway charges it 5x an ordinary GET, so a single call draws about five requests' worth of budget and the remaining reported by fetch_rate_limit_status (counted in ordinary requests) drops by ~5. Poll it sparingly. Requires API credentials.

fetch_equity_historyA

Get the authenticated account's equity time-series (5s cadence, ~1h window), oldest first. For a longer window, or for PnL and volume series alongside equity, use fetch_portfolio_history. Returns { items, next_cursor }. items is this page of results; next_cursor is an opaque token for the next page, or null when this is the last page. To read the full history, keep calling with cursor: <previous next_cursor> until next_cursor is null. limit sets the size of ONE page, not a total. Requires API credentials.

fetch_positionsA

Get the authenticated account's open positions. Positions carry per-position risk detail. notional_value, margin_used, roe, max_leverage, and leverage are derived from mirrored state, so any of them can be null with a companion <field>_error naming the reason (e.g. mark_price_unavailable); treat null as UNKNOWN, never as zero. leverage is currently always null (leverage_error: margin_state_not_mirrored) — do not infer it from margin_used. funding_paid is NOT one of those: it is always present and has no _error companion, so its "0" is a real zero (no funding accrued), not unknown. It is paid-positive — a negative value means funding was received. Requires API credentials.

fetch_positions_historyA

Get the authenticated account's closed positions (realized PnL per position). Returns { items, next_cursor }. items is this page of results; next_cursor is an opaque token for the next page, or null when this is the last page. To read the full history, keep calling with cursor: <previous next_cursor> until next_cursor is null. limit sets the size of ONE page, not a total. Requires API credentials.

fetch_open_ordersB

Get the authenticated account's resting (open) orders. Requires API credentials.

fetch_orderA

Get a single order by its id (status, fills, remaining size). Pass market_id when known — the spec marks it required for routing, though the gateway currently resolves the order without it. Requires API credentials.

fetch_ordersA

Get the authenticated account's terminal-status order history (filled / cancelled / rejected / expired), newest first. Returns { items, next_cursor }. items is this page of results; next_cursor is an opaque token for the next page, or null when this is the last page. To read the full history, keep calling with cursor: <previous next_cursor> until next_cursor is null. limit sets the size of ONE page, not a total. Requires API credentials.

fetch_my_tradesA

List the authenticated account's fills (executed trades), newest first. Returns { items, next_cursor }. items is this page of results; next_cursor is an opaque token for the next page, or null when this is the last page. To read the full history, keep calling with cursor: <previous next_cursor> until next_cursor is null. limit sets the size of ONE page, not a total. Requires API credentials.

fetch_funding_historyA

Get the authenticated account's funding-payment history, newest first, optionally filtered to a single market. Requires API credentials.

fetch_withdrawalsB

List the authenticated account's withdrawal history. Requires API credentials.

fetch_depositsB

List the authenticated account's deposit history. Requires API credentials.

fetch_rate_limit_statusA

Get the authenticated account's current rate-limit status (remaining request budget). Useful for an agent to pace itself. Requires API credentials.

fetch_adl_historyA

Get the auto-deleveraging (ADL) events that touched a given account. Requires API credentials.

fetch_cancel_on_disconnectA

Get the authenticated account's cancel-on-disconnect (COD) status. COD is an opt-in dead man's switch: when the account's last authenticated WebSocket connection drops and does not reconnect within the grace window, the exchange cancels all of the account's resting orders. Returns enabled (the account's own opt-in), active (whether it will actually fire — the opt-in AND the exchange-side feature switch), and grace_secs (the reconnect window in seconds, null when the feature is unavailable). Clients that trade purely over REST and never open a WebSocket are not covered. Requires API credentials.

set_cancel_on_disconnectA

Enable or disable cancel-on-disconnect (COD) for the authenticated account. Pass enabled: true to arm the dead man's switch (the exchange cancels all resting orders when your authenticated WebSocket drops and does not reconnect within the grace window) or enabled: false to disable it. Off by default. enabled is required and explicit — there is no default — so every call states the intended state and an argless call is rejected rather than silently toggling. Returns the resulting COD status. Requires API credentials.

create_orderA

Place an order on a market, buy/sell. Supports limit, market, stop-loss (stop_limit / stop_market), take-profit (take_profit_limit / take_profit_market), and trailing (trailing_stop / trailing_limit) orders. Limit-family orders require a price; stop / take-profit orders require a trigger_price; trailing orders require trailing_offset_bps (and trailing_limit also limit_offset_bps). Requires API credentials. This submits a REAL order to the matching engine.

create_ordersB

Submit multiple orders in one request. Each order has the same shape as create_order (market_id, side, type, size, and the type-dependent price / trigger_price / trailing offsets / time_in_force / reduce_only). Requires API credentials. This submits REAL orders to the matching engine.

cancel_orderA

Cancel ONE resting order by order_id. market_id is required (the route uses it for routing). This tool only ever cancels the single named order; to cancel every open order use cancel_all_orders. Requires API credentials.

cancel_all_ordersA

Cancel ALL of the authenticated account's open orders, optionally scoped to one market with market_id. Destructive: you must pass confirm: true, so a stray or argless call can't mass-cancel by accident. To cancel a single order use cancel_order. Requires API credentials.

edit_orderA

Amend a resting order's price and/or size in one atomic cancel-replace operation. At least one of price or size is required; a pre-trade margin check is applied to the replacement before it is accepted. Liquidation orders cannot be amended. Requires API credentials. This modifies a REAL order on the matching engine.

preview_orderA

Preview an order without submitting it: projects the margin, equity, and fee impact of the order. Takes the same arguments as create_order. Nothing reaches the matching engine. Requires API credentials.

fetch_adl_eventsA

Get the auto-deleveraging (ADL) settlement history for one market — the events where the engine force-closed positions to cover a shortfall. Requires API credentials.

depositB

Deposit USDX collateral into the authenticated account. amount is a positive decimal string. Requires API credentials. This moves REAL collateral on the account.

claim_creditA

Claim synthetic USDX credit from the testnet faucet, up to a per-key daily allowance (default 500 USDX, resets midnight UTC). Pass amount (positive decimal string) to claim a specific amount, or omit it to claim the full remaining allowance. The credited USDX is synthetic testnet value. Requires API credentials.

create_depositA

Submit a (testnet/synthetic) deposit for the authenticated account via the deposits ledger (POST /deposits — unlike deposit, the deposit is recorded and listable with fetch_deposits). amount is a positive decimal string; asset defaults to USDX. Requires API credentials. This moves REAL collateral on the account.

claim_faucetA

Claim the fixed testnet faucet amount of synthetic USDX for the authenticated account, subject to a per-wallet cooldown and cumulative cap. Unlike claim_credit the amount is fixed server-side — no arguments. Requires API credentials.

add_marginA

Add or remove isolated margin on an open position. Fails if the position is not in isolated margin mode (MarginModeNotIsolated), if there is no open position in the market (NoOpenPosition), or if a removal breaches the margin floor. amount is a positive decimal string. Requires API credentials. This moves REAL margin on the position.

fetch_bridge_assetsA

List the bridgeable chains and, per chain, the depositable assets (USDC, USDX) and withdrawable assets (USDX) with their decimals, minimum amounts, required confirmations, and fees. Public catalog — no credentials needed. Use it to discover valid chain values for the other bridge tools.

create_bridge_deposit_addressA

Deprecated: no server implements this route (its design was cancelled, ENG-11460), so every call fails. Get or create the authenticated account's cross-chain deposit address on a chain. Sending a supported asset to the returned address credits the account. Idempotent per (account, chain): repeated calls return the same address rather than allocating a new one. Requires API credentials.

list_bridge_deposit_addressesA

Deprecated: no server implements this route (its design was cancelled, ENG-11460), so every call fails. List the authenticated account's cross-chain deposit addresses across chains. Requires API credentials.

fetch_bridge_depositsA

List the authenticated account's cross-chain (bridge) deposits, newest first. Optionally filter by source chain, asset (USDC|USDX), or status (detected|confirming|credited|failed). Distinct from fetch_deposits, which lists the account's ledger deposits. Requires API credentials.

fetch_bridge_depositB

Fetch a single cross-chain (bridge) deposit by id. Only deposits owned by the authenticated account are returned. Requires API credentials.

create_bridge_wallet_challengeA

Step 1 of registering a withdrawal wallet: returns the exact message to sign with that wallet's key (EIP-191 personal_sign) and the expires_at it is valid until. Sign the message in the wallet and pass it and the signature to register_bridge_wallet, or, for the wallet create_wallet made, omit the signature and the server signs. Treat message as opaque: echo it back verbatim, never reformat, re-encode or trim it. The nonce field is informational — sign message, not the nonce, and do not treat the challenge as single-use: until it expires the same signature can be submitted again, which is harmless because the message is bound to your account and to address. Mints nothing and changes no state, so it is safe to call before you have decided to register. A 503 wallet_registration_unavailable means this deployment has no challenge key configured — registration is off there, and retrying will not help. Requires API credentials.

register_bridge_walletA

Step 2 of registering a withdrawal wallet: submit the address, the message returned by create_bridge_wallet_challenge echoed back VERBATIM, and the EIP-191 signature over it. Omit signature to have the stdio server sign with its own wallet (see create_wallet; play-funds targets only, and address must be that wallet). The address recovered from the signature must equal address, and the challenge must name the authenticated account. The registered wallet is where withdrawals are paid, so getting it wrong matters: an account holds ONE wallet in this cut and replacement is not supported — registering a different address afterwards is refused with 409 wallet_already_registered rather than updating the record. Because of that you must pass confirm: true. Re-registering the SAME address is idempotent and returns the existing record. Errors: invalid_address, invalid_challenge, challenge_expired, signature_mismatch, account_mismatch on 400; wallet_registration_unavailable on 503 when the deployment has no challenge key (not transient — do not retry). Requires API credentials.

list_bridge_walletsA

List the authenticated account's registered withdrawal wallets. Wallets are not chain-scoped: one EVM address is valid on every supported EVM chain, and the chain is chosen per withdrawal. In this cut an account holds at most one wallet and both verified and is_default are always true on it, so do not branch on either — they start varying only with the wallet-lifecycle follow-up. An empty wallets array means nothing is registered yet; use create_bridge_wallet_challenge then register_bridge_wallet. Requires API credentials.

fetch_agentsA

List the delegated agent keys registered for the authenticated wallet (address, label, expiry). Requires API credentials.

register_agentA

Register a delegated agent key so an AI agent can trade on a wallet's behalf without holding the wallet key. Authorized by an EIP-712 signature from the OWNER WALLET over RegisterAgent{agent, expiresAt, nonce} (domain Nexus Exchange v1). Sign it in the wallet and pass wallet and signature, or omit both to have the stdio server sign with its own wallet (see create_wallet; testnet and local only, expiry defaulting to now+30d). No API credentials are needed; the signature is the authorization.

revoke_agentA

Revoke a previously registered delegated agent key by its address. Destructive: the agent can no longer trade on the wallet's behalf. To avoid an accidental revoke you must pass confirm: true. Requires API credentials.

create_walletA

Make a new EVM wallet for this server to sign with, on a play-funds target only (testnet, local, or a custom stage declared NEXUS_EXCHANGE_FUNDS=play). The key is saved in this network's section of the Nexus CLI config (0600) and used for the rest of the session; only the address comes back, never the key. After it, login, register_agent and register_bridge_wallet sign for themselves when signature is omitted, so create_wallet, login, create_api_key gets an agent an account with nothing signed elsewhere. If a wallet already exists for this network it is refused unless confirm: true, which overwrites the old key and keeps it nowhere. Stdio server only. Refused on mainnet and on any target whose funds are real or undeclared.

loginA

Sign in with an EVM wallet to get a 24h session token. Submit an EIP-191 personal_sign signature over the exact message "Sign in to Nexus Exchange", made in the wallet and passed as signature. Omit signature to have the stdio server sign with its own wallet (see create_wallet; play-funds targets only). The returned token is the Bearer credential for the *_api_key tools. The stdio server keeps it for the rest of this session and saves it for this network in the Nexus CLI config (saved_to names the file), so nothing has to be copied into the environment. No credentials needed to call this.

fetch_api_keysA

List the HMAC API keys for the authenticated wallet (key ids and metadata; never the secrets). Authenticates with the session token from login, or NEXUS_EXCHANGE_SESSION_TOKEN.

create_api_keyA

Create a new HMAC API key for the authenticated wallet. The stdio server keeps the key for the rest of this session, so the account and trading tools work right away. The API shows the secret ONCE: the stdio server saves it for this network in the Nexus CLI config and secret comes back redacted, with saved_to naming the file. When it could not be saved, secret is returned in full and must be stored now. Authenticates with the session token from login, or NEXUS_EXCHANGE_SESSION_TOKEN.

delete_api_keyA

Delete (revoke) an HMAC API key by its key id. Destructive: any caller using that key stops working. You must pass confirm: true. Authenticates with the session token from login, or NEXUS_EXCHANGE_SESSION_TOKEN.

create_ws_tokenA

Mint a short-lived (60s, single-use) token for an authenticated per-account WebSocket stream (order/fill/position updates). Uses the current /ws/token endpoint, which supports HMAC keys and registered agents. The response carries ws_endpoint — the URL to connect to for the configured network — so no host has to be guessed. Requires API credentials.

create_ws_token_legacyA

Mint a short-lived (60s, single-use) token for the legacy public /stream endpoint via POST /ws-tokens. Prefer create_ws_token (/ws/token) for new code; this is kept for /stream compatibility. The response carries ws_endpoint for the configured network. Requires API credentials.

fetch_statusA

Aggregate service health of the exchange stack (indexer / engine / oracle / bots), as used by status pages. Public — no credentials needed.

get_deposit_targetB

Get the on-chain deposit target (address/memo) to fund the account. This legacy single-target lookup remains unbuilt server-side, and the bridge deposit-address tools that were to supersede it are deprecated because nothing serves them either.

list_marketsA

Deprecated: use fetch_markets_summary. List all tradable markets with their current summary (mark price, 24h change, volume, open interest, funding). Public — no credentials needed.

get_tickerA

Deprecated: use fetch_ticker. Get the ticker (last price, bid/ask, 24h stats) for one market, e.g. "BTC-USDX-PERP". Public — no credentials needed.

get_orderbookA

Deprecated: use fetch_order_book. Get the current order book (bids/asks with price + size) for one market. Public — no credentials needed.

list_market_specsA

Deprecated: use fetch_markets. List all markets with their static specs (tick size, lot size, leverage, contract details) — the raw market definitions without live summary stats. Public — no credentials needed. (Use fetch_markets_summary for live mark price / volume / funding.)

get_tickersA

Deprecated: use fetch_tickers. Get tickers (last price, bid/ask, 24h stats) for ALL markets in one call. Public — no credentials needed.

get_mark_priceA

Deprecated: use fetch_mark_price. Get the current mark price for one market. Public — no credentials needed.

get_market_statusA

Deprecated: use fetch_market_status. Get a market's trading status and halt info (whether trading is open, halted, or in auction). Public — no credentials needed.

get_tradesA

Deprecated: use fetch_trades. Get recent public trades (prints) for one market, newest first. Returns { items, next_cursor }. items is this page of results; next_cursor is an opaque token for the next page, or null when this is the last page. To read the full history, keep calling with cursor: <previous next_cursor> until next_cursor is null. limit sets the size of ONE page, not a total. Public — no credentials needed.

get_candlesA

Deprecated: use fetch_ohlcv. Get OHLCV candles for one market. Public — no credentials needed. Timeframe is one of 1s, 1m, 5m, 1h (default 1m).

get_funding_historyA

Deprecated: use fetch_funding_rate_history. Get the funding-rate history for one perpetual market. Public — no credentials needed.

get_funding_samplesA

Deprecated: use fetch_funding_samples. Get the dense per-tick funding premium-index samples for one perpetual market (60s cadence, up to 480 points = 8h). Finer-grained than fetch_funding_rate_history, which returns the settled hourly rates. Public — no credentials needed.

get_market_risk_paramsA

Deprecated: use fetch_market_risk_params. Get one market's risk parameters: margin requirements and maximum leverage, from the engine's market registry. Public — no credentials needed.

get_statsA

Deprecated: use fetch_stats. Get aggregate venue statistics (volume, trades, throughput) plus rolling unique-trader counts. Public — no credentials needed.

get_stats_historyA

Deprecated: use fetch_stats_history. Get the venue's per-second throughput history (ring buffer, up to 3600 points). Public — no credentials needed.

get_balanceA

Deprecated: use fetch_balance. Get the authenticated account snapshot: collateral balance, equity, and positions. Positions carry per-position risk detail. notional_value, margin_used, roe, max_leverage, and leverage are derived from mirrored state, so any of them can be null with a companion <field>_error naming the reason (e.g. mark_price_unavailable); treat null as UNKNOWN, never as zero. leverage is currently always null (leverage_error: margin_state_not_mirrored) — do not infer it from margin_used. funding_paid is NOT one of those: it is always present and has no _error companion, so its "0" is a real zero (no funding accrued), not unknown. It is paid-positive — a negative value means funding was received. Requires API credentials.

get_account_summaryA

Deprecated: use fetch_account_summary. Get the authenticated account's portfolio summary (equity, margin usage, PnL rollup) — a richer view than fetch_balance. Includes withdrawable: the engine-authoritative free margin floored at zero, i.e. exactly what can leave the account (never negative). Because withdrawable comes from that authoritative margin view, this call fails closed with a 502 (authoritative_margin_unavailable) when the view is unavailable rather than returning a local estimate: retry after a short delay, do NOT read the error as a flat or empty account. Requires API credentials.

get_account_stateA

Deprecated: use fetch_account_state. Get the authenticated account's full state in ONE call: the portfolio summary aggregates plus every open position ({ summary, positions }). Prefer this over pairing fetch_account_summary with fetch_positions — both parts come from one coherent read, so summary.open_positions_count always matches the positions length. If the engine-authoritative margin view is unavailable this fails closed with a 502 (authoritative_margin_unavailable) rather than returning an estimate: retry after a short delay, do NOT read the error as a flat or empty account. Positions carry per-position risk detail. notional_value, margin_used, roe, max_leverage, and leverage are derived from mirrored state, so any of them can be null with a companion <field>_error naming the reason (e.g. mark_price_unavailable); treat null as UNKNOWN, never as zero. leverage is currently always null (leverage_error: margin_state_not_mirrored) — do not infer it from margin_used. funding_paid is NOT one of those: it is always present and has no _error companion, so its "0" is a real zero (no funding accrued), not unknown. It is paid-positive — a negative value means funding was received. Requires API credentials.

get_account_feesA

Deprecated: use fetch_trading_fees. Get the authenticated account's effective fee schedule: maker/taker rate in basis points (a NEGATIVE maker rate is a rebate paid TO the maker), fee tier, rolling 30-day traded volume, and any active discounts. This is the forward-looking schedule rate for the scope named by schedule (per-market rates differ), not a realized per-fill average; volume_30d_estimated: true means the 30-day volume may undercount. Requires API credentials.

get_portfolio_historyA

Deprecated: use fetch_portfolio_history. Get the authenticated account's portfolio time-series — equity, cumulative trading PnL, and cumulative traded volume — over a selectable window, oldest first. Richer than fetch_equity_history (equity only, 5s cadence, ~1h); both derive equity from the same source, so the two never disagree. Each window sets its own downsample cadence and point capacity: day 5m/288, week 1h/168, month 6h/120, all 1d/366. pnl is deposit-neutral (trading performance only) and volume is monotonically non-decreasing. This is a HEAVY read — the gateway charges it 5x an ordinary GET, so a single call draws about five requests' worth of budget and the remaining reported by fetch_rate_limit_status (counted in ordinary requests) drops by ~5. Poll it sparingly. Requires API credentials.

get_equity_historyA

Deprecated: use fetch_equity_history. Get the authenticated account's equity time-series (5s cadence, ~1h window), oldest first. For a longer window, or for PnL and volume series alongside equity, use fetch_portfolio_history. Returns { items, next_cursor }. items is this page of results; next_cursor is an opaque token for the next page, or null when this is the last page. To read the full history, keep calling with cursor: <previous next_cursor> until next_cursor is null. limit sets the size of ONE page, not a total. Requires API credentials.

get_positionsA

Deprecated: use fetch_positions. Get the authenticated account's open positions. Positions carry per-position risk detail. notional_value, margin_used, roe, max_leverage, and leverage are derived from mirrored state, so any of them can be null with a companion <field>_error naming the reason (e.g. mark_price_unavailable); treat null as UNKNOWN, never as zero. leverage is currently always null (leverage_error: margin_state_not_mirrored) — do not infer it from margin_used. funding_paid is NOT one of those: it is always present and has no _error companion, so its "0" is a real zero (no funding accrued), not unknown. It is paid-positive — a negative value means funding was received. Requires API credentials.

get_closed_positionsA

Deprecated: use fetch_positions_history. Get the authenticated account's closed positions (realized PnL per position). Returns { items, next_cursor }. items is this page of results; next_cursor is an opaque token for the next page, or null when this is the last page. To read the full history, keep calling with cursor: <previous next_cursor> until next_cursor is null. limit sets the size of ONE page, not a total. Requires API credentials.

get_open_ordersA

Deprecated: use fetch_open_orders. Get the authenticated account's resting (open) orders. Requires API credentials.

get_orderA

Deprecated: use fetch_order. Get a single order by its id (status, fills, remaining size). Pass market_id when known — the spec marks it required for routing, though the gateway currently resolves the order without it. Requires API credentials.

get_order_historyA

Deprecated: use fetch_orders. Get the authenticated account's terminal-status order history (filled / cancelled / rejected / expired), newest first. Returns { items, next_cursor }. items is this page of results; next_cursor is an opaque token for the next page, or null when this is the last page. To read the full history, keep calling with cursor: <previous next_cursor> until next_cursor is null. limit sets the size of ONE page, not a total. Requires API credentials.

get_fillsA

Deprecated: use fetch_my_trades. List the authenticated account's fills (executed trades), newest first. Returns { items, next_cursor }. items is this page of results; next_cursor is an opaque token for the next page, or null when this is the last page. To read the full history, keep calling with cursor: <previous next_cursor> until next_cursor is null. limit sets the size of ONE page, not a total. Requires API credentials.

get_funding_paymentsA

Deprecated: use fetch_funding_history. Get the authenticated account's funding-payment history, newest first, optionally filtered to a single market. Requires API credentials.

get_withdrawalsA

Deprecated: use fetch_withdrawals. List the authenticated account's withdrawal history. Requires API credentials.

list_depositsA

Deprecated: use fetch_deposits. List the authenticated account's deposit history. Requires API credentials.

get_rate_limit_statusA

Deprecated: use fetch_rate_limit_status. Get the authenticated account's current rate-limit status (remaining request budget). Useful for an agent to pace itself. Requires API credentials.

get_adl_historyA

Deprecated: use fetch_adl_history. Get the auto-deleveraging (ADL) events that touched a given account. Requires API credentials.

get_cancel_on_disconnectA

Deprecated: use fetch_cancel_on_disconnect. Get the authenticated account's cancel-on-disconnect (COD) status. COD is an opt-in dead man's switch: when the account's last authenticated WebSocket connection drops and does not reconnect within the grace window, the exchange cancels all of the account's resting orders. Returns enabled (the account's own opt-in), active (whether it will actually fire — the opt-in AND the exchange-side feature switch), and grace_secs (the reconnect window in seconds, null when the feature is unavailable). Clients that trade purely over REST and never open a WebSocket are not covered. Requires API credentials.

place_orderA

Deprecated: use create_order. Place an order on a market, buy/sell. Supports limit, market, stop-loss (stop_limit / stop_market), take-profit (take_profit_limit / take_profit_market), and trailing (trailing_stop / trailing_limit) orders. Limit-family orders require a price; stop / take-profit orders require a trigger_price; trailing orders require trailing_offset_bps (and trailing_limit also limit_offset_bps). Requires API credentials. This submits a REAL order to the matching engine.

place_orders_batchA

Deprecated: use create_orders. Submit multiple orders in one request. Each order has the same shape as create_order (market_id, side, type, size, and the type-dependent price / trigger_price / trailing offsets / time_in_force / reduce_only). Requires API credentials. This submits REAL orders to the matching engine.

amend_orderA

Deprecated: use edit_order. Amend a resting order's price and/or size in one atomic cancel-replace operation. At least one of price or size is required; a pre-trade margin check is applied to the replacement before it is accepted. Liquidation orders cannot be amended. Requires API credentials. This modifies a REAL order on the matching engine.

get_market_adl_eventsA

Deprecated: use fetch_adl_events. Get the auto-deleveraging (ADL) settlement history for one market — the events where the engine force-closed positions to cover a shortfall. Requires API credentials.

deposit_collateralA

Deprecated: use deposit. Deposit USDX collateral into the authenticated account. amount is a positive decimal string. Requires API credentials. This moves REAL collateral on the account.

submit_depositA

Deprecated: use create_deposit. Submit a (testnet/synthetic) deposit for the authenticated account via the deposits ledger (POST /deposits — unlike deposit, the deposit is recorded and listable with fetch_deposits). amount is a positive decimal string; asset defaults to USDX. Requires API credentials. This moves REAL collateral on the account.

adjust_isolated_marginA

Deprecated: use add_margin. Add or remove isolated margin on an open position. Fails if the position is not in isolated margin mode (MarginModeNotIsolated), if there is no open position in the market (NoOpenPosition), or if a removal breaches the margin floor. amount is a positive decimal string. Requires API credentials. This moves REAL margin on the position.

get_bridge_assetsA

Deprecated: use fetch_bridge_assets. List the bridgeable chains and, per chain, the depositable assets (USDC, USDX) and withdrawable assets (USDX) with their decimals, minimum amounts, required confirmations, and fees. Public catalog — no credentials needed. Use it to discover valid chain values for the other bridge tools.

list_bridge_depositsA

Deprecated: use fetch_bridge_deposits. List the authenticated account's cross-chain (bridge) deposits, newest first. Optionally filter by source chain, asset (USDC|USDX), or status (detected|confirming|credited|failed). Distinct from fetch_deposits, which lists the account's ledger deposits. Requires API credentials.

get_bridge_depositA

Deprecated: use fetch_bridge_deposit. Fetch a single cross-chain (bridge) deposit by id. Only deposits owned by the authenticated account are returned. Requires API credentials.

list_agentsA

Deprecated: use fetch_agents. List the delegated agent keys registered for the authenticated wallet (address, label, expiry). Requires API credentials.

list_api_keysA

Deprecated: use fetch_api_keys. List the HMAC API keys for the authenticated wallet (key ids and metadata; never the secrets). Authenticates with the session token from login, or NEXUS_EXCHANGE_SESSION_TOKEN.

get_ws_tokenA

Deprecated: use create_ws_token. Mint a short-lived (60s, single-use) token for an authenticated per-account WebSocket stream (order/fill/position updates). Uses the current /ws/token endpoint, which supports HMAC keys and registered agents. The response carries ws_endpoint — the URL to connect to for the configured network — so no host has to be guessed. Requires API credentials.

get_ws_token_legacyA

Deprecated: use create_ws_token_legacy. Mint a short-lived (60s, single-use) token for the legacy public /stream endpoint via POST /ws-tokens. Prefer create_ws_token (/ws/token) for new code; this is kept for /stream compatibility. The response carries ws_endpoint for the configured network. Requires API credentials.

get_service_statusA

Deprecated: use fetch_status. Aggregate service health of the exchange stack (indexer / engine / oracle / bots), as used by status pages. Public — no credentials needed.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.2/5.0

Scored across 115 tools

Disambiguation1/5

Roughly half the surface consists of deprecated aliases that duplicate a live tool one-to-one (get_balance/fetch_balance, get_orderbook/fetch_order_book, place_order/create_order, amend_order/edit_order, list_deposits/fetch_deposits, etc.), so an agent must constantly resolve 'which of these two identical tools do I call?'. On top of that, several tools are admitted dead ends that always fail (create_bridge_deposit_address, list_bridge_deposit_addresses, get_deposit_target), and get_deposit vs create_deposit vs deposit_collateral add further near-miss overlap.

Naming Consistency2/5

Two competing conventions coexist: the modern set uses fetch_*/create_*/edit_*/cancel_*/register_* while the deprecated set uses get_*/list_*/place_*/amend_*/adjust_*. Within each family the verb_noun pattern is readable, but mixing get_/fetch_ and place_/create_ across the same resource is exactly the inconsistency the rubric penalizes.

Tool Count1/5

115 tools is an extreme mismatch for any single server. Even after removing the ~45 deprecated aliases, the live surface is 60+ tools, which far exceeds a well-scoped set and forces the agent to carry a large mental model of near-duplicates.

Completeness4/5

Domain coverage is actually broad and strong: markets/tickers/orderbook/OHLCV/funding, full order lifecycle (create, batch, preview, edit, cancel, cancel-all), account/positions/PnL/fees/history, deposits/withdrawals/bridge, API keys, agent keys, wallets, and WS tokens. The main gap is that a few advertised bridge/deposit-target tools have no working server implementation, leaving genuine dead ends.

Maintenance

ActivityActive
ResponsivenessNo issues