Market
Available without credentials:get_health, get_markets, get_ticker, get_orderbook, get_klines, get_funding_rate, get_funding_rate_history, get_networks, get_transfer_assets
Account
Require API credentials, with one exception noted below:get_balance, get_open_orders, get_order_history, get_my_trades, get_positions, get_position_history, get_position_history_detail, get_spot_accounts, get_spot_account, get_perpetual_accounts, get_fee_schedule, get_fee_tier, get_market_fee_rate, get_transaction_history, get_funding_payments
get_fee_schedule is public. It calls a public endpoint and works with no credentials at all, despite sitting in this list. Because it lives in the account module, YELLOW_PRO_MODULES=market hides it — so a credential-free market-data agent needs market,account to reach the public fee schedule.Trading (opt-in)
Only registered whenYELLOW_PRO_ENABLE_TRADING=true:
place_order, cancel_order, cancel_all_orders, close_positions, set_leverage, transfer
Conventions
Markets use native ids: spot asETHUSDT, perpetual as BTCUSDT-PERP. Amounts and prices are decimal strings. All results are raw exchange JSON.
Timestamp units differ per tool
Three formats are in use. Passing the wrong one returns an empty result set rather than an error, so it reads as “no data” instead of a mistake.Order types
place_order supports these single-order types:
limit
limit
Requires
price.market
market
No
price.post_only
post_only
Requires
price and guarantees the order is maker-only.trigger_limit (Stop Limit)
trigger_limit (Stop Limit)
Requires both
trigger_price and price.trigger_market (Stop Market)
trigger_market (Stop Market)
Requires
trigger_price.trigger_type of stop_loss or take_profit. Order queries return the classified conditional type, such as stop_limit, stop_loss, take_limit, or take_profit. cancel_order accepts either the request type (trigger_*) or these returned types and normalizes Spot cancellation.
Time in force
Not passed explicitly,time_in_force defaults to gtc for limit-style orders and ioc for market-style orders.
Perpetual behaviour worth knowing
Leverage is always sent, and place_order is not where you set it
Leverage is always sent, and place_order is not where you set it
Perpetual
place_order always sends a leverage value, defaulting to "1". The effective margin still follows your account and market settings, so passing leverage here does not change your real leverage — set_leverage is the actual control.Perpetuals are cross margin only
Perpetuals are cross margin only
There is no isolated-margin mode. Risk is aggregated across positions; see Cross-Margin Risk & ADL.
Position modes (Perpetual)
Perpetual markets have a per-market position mode, listed underposition_modes in get_perpetual_accounts.
- HEDGE mode
- ONE_WAY mode
A market holds separate long and short legs. Orders take
direction long or short, defaulting from side and flipped by reduce_only.Switching position modes is only available in the Yellow.pro web UI, not through the MCP.
Transfers
transfer moves funds between your spot and perpetual accounts. Constraints from the Account Transfers API:
- Only stablecoins can move between spot and perpetuals.
- Source and destination must differ. The MCP schema permits identical values, but the exchange rejects them.
- Perpetuals-to-spot transfers are capped at 80% of
min(total - locked, available).
Pagination
Most list tools use the documented opt-in cursor protocol. Omitcursor for the first request; the MCP sends use_cursor=true. Pass the returned next_cursor to fetch the next page. page_size defaults to 50 and is capped at 100.
Fill-level position history (get_position_history_detail) is cursor-native: its first request omits both cursor and use_cursor, and its page_size defaults to 200 with a maximum of 500.
The yellow-pro CLI covers this same surface under different command names — see the CLI reference.