Install
openclaw skills install phemex-tradeTrade on Phemex (USDT-M futures, Coin-M futures, Spot) — place orders, manage positions, check balances, and query market data. Use when the user wants to (1...
openclaw skills install phemex-tradeTrade on Phemex via the phemex-cli tool. Supports USDT-M futures, Coin-M futures, and Spot markets.
list_symbols tool — Discover all available trading pairs, filtered by contract type. No more guessing symbol names.~/.phemexrc) — Store API credentials persistently. No need to export env vars every session.--help for every tool — Run phemex-cli <tool> --help to see parameters, defaults, and usage examples inline.closeRp, fundingRateRr) are mapped to readable names (closePrice, fundingRate). Use --raw to get the original names.suggestion and tip fields with actionable guidance instead of raw API codes.Ensure you have the latest version installed:
npm install -g phemex-trade-mcp@latest
phemex-cli <tool_name> --param1 value1 --param2 value2
Or with JSON args:
phemex-cli <tool_name> '{"param1":"value1","param2":"value2"}'
Output is always JSON. Credentials are loaded from environment variables or ~/.phemexrc (see Setup).
Every tool supports --help with full parameter docs and examples:
phemex-cli place_order --help
Output:
Usage: phemex-cli place_order [options]
Place an order (Market, Limit, Stop, StopLimit)
Required Parameters:
--symbol <string> Trading pair (e.g. BTCUSDT)
--side <string> Buy or Sell
--orderQty <number> Quantity. linear: base amount (0.01 = 0.01 BTC). ...
--ordType <string> Order type: Market, Limit, Stop, StopLimit
Optional Parameters:
--price <number> Limit price (required for Limit/StopLimit)
--timeInForce <string> GoodTillCancel, PostOnly, ... [default: GoodTillCancel]
--reduceOnly <boolean> Only reduce position [default: false]
...
Examples:
phemex-cli place_order --symbol BTCUSDT --side Buy --orderQty 0.01 --ordType Market
phemex-cli place_order --symbol BTCUSDT --side Sell --orderQty 0.01 --ordType Limit --price 90000 --timeInForce PostOnly
More help examples:
phemex-cli get_ticker --help # see params for price ticker
phemex-cli get_klines --help # see resolution values for candlesticks
phemex-cli set_leverage --help # see leverage param format
phemex-cli transfer_funds --help # see direction values
phemex-cli list_symbols --help # see contractType filter
By default, output uses readable field names:
phemex-cli get_ticker --symbol BTCUSDT
{
"closePrice": "70549.9",
"openPrice": "70192.7",
"highPrice": "70750",
"lowPrice": "69160",
"markPrice": "70549.9",
"fundingRate": "-0.00003417",
"volume": "5303.525",
"turnover": "371204351.5978"
}
Use --raw to get original API field names (for scripts that depend on old format):
phemex-cli get_ticker --symbol BTCUSDT --raw
{
"closeRp": "70549.9",
"openRp": "70192.7",
"highRp": "70750",
"lowRp": "69160",
"markPriceRp": "70549.9",
"fundingRateRr": "-0.00003417",
"volumeRq": "5303.525",
"turnoverRv": "371204351.5978"
}
Field name mapping reference:
| Suffix | Meaning | Example | Mapped to |
|---|---|---|---|
Rp | Real Price | closeRp | closePrice |
Rv | Real Value | accountBalanceRv | accountBalance |
Rr | Real Rate | fundingRateRr | fundingRate |
Rq | Real Quantity | volumeRq | volume |
Every tool accepts an optional --contractType flag:
linear (default) — USDT-M perpetual futures. Symbols end in USDT (e.g. BTCUSDT).inverse — Coin-M perpetual futures. Symbols end in USD (e.g. BTCUSD).spot — Spot trading. Symbols end in USDT (e.g. BTCUSDT). The server auto-prefixes s for the API.get_ticker — 24hr price ticker. Example: phemex-cli get_ticker --symbol BTCUSDTget_orderbook — Order book (30 levels). Example: phemex-cli get_orderbook --symbol BTCUSDTget_klines — Candlestick data. Example: phemex-cli get_klines --symbol BTCUSDT --resolution 3600 --limit 100get_recent_trades — Recent trades. Example: phemex-cli get_recent_trades --symbol BTCUSDTget_funding_rate — Funding rate history. Example: phemex-cli get_funding_rate --symbol .BTCFR8H --limit 20get_account — Balance and margin info. Example: phemex-cli get_account --currency USDTget_spot_wallet — Spot wallet balances. Example: phemex-cli get_spot_walletget_positions — Current positions with PnL. Example: phemex-cli get_positions --currency USDTget_open_orders — Open orders. Example: phemex-cli get_open_orders --symbol BTCUSDTget_order_history — Closed/filled orders. Example: phemex-cli get_order_history --symbol BTCUSDT --limit 50get_trades — Trade execution history. Example: phemex-cli get_trades --symbol BTCUSDT --limit 50place_order — Place an order (Market, Limit, Stop, StopLimit). Key params: --symbol, --side (Buy/Sell), --orderQty, --ordType, --price (Limit/StopLimit), --stopPx (Stop/StopLimit), --timeInForce (GoodTillCancel/PostOnly/ImmediateOrCancel/FillOrKill), --reduceOnly, --posSide (Long/Short/Merged), --stopLoss, --takeProfit, --qtyType (spot only). orderQty units differ by contract type:
linear (USDT-M): orderQty = base currency amount (e.g. 0.01 = 0.01 BTC). To buy 10 USDT worth, calculate qty = 10 / current price.inverse (Coin-M): orderQty = number of contracts as integer (e.g. 10 = 10 contracts). Each contract has a fixed USD value (e.g. 1 USD/contract for BTCUSD).spot: depends on --qtyType. ByBase (default) = base currency (e.g. 0.01 = 0.01 BTC). ByQuote = quote currency (e.g. 50 = 50 USDT worth of BTC).phemex-cli place_order --symbol BTCUSDT --side Buy --orderQty 0.01 --ordType Marketamend_order — Modify an open order. Example: phemex-cli amend_order --symbol BTCUSDT --orderID xxx --price 95000cancel_order — Cancel one order. Example: phemex-cli cancel_order --symbol BTCUSDT --orderID xxxcancel_all_orders — Cancel all orders for a symbol. Example: phemex-cli cancel_all_orders --symbol BTCUSDTset_leverage — Set leverage. Example: phemex-cli set_leverage --symbol BTCUSDT --leverage 10switch_pos_mode — Switch OneWay/Hedged. Example: phemex-cli switch_pos_mode --symbol BTCUSDT --targetPosMode OneWaytransfer_funds — Move funds between spot and futures. Example: phemex-cli transfer_funds --currency USDT --amount 100 --direction spot_to_futuresget_transfer_history — Transfer history. Example: phemex-cli get_transfer_history --currency USDT --limit 20list_symbols — List all available trading symbols, grouped by contract type.# List all symbols (linear, inverse, spot)
phemex-cli list_symbols
# Only USDT-M perpetual futures
phemex-cli list_symbols --contractType linear
# Only Coin-M perpetual futures
phemex-cli list_symbols --contractType inverse
# Only spot pairs
phemex-cli list_symbols --contractType spot
Example output:
{
"linear": ["BTCUSDT", "ETHUSDT", "SOLUSDT", "BNBUSDT", ...],
"inverse": ["BTCUSD", "ETHUSD", ...],
"spot": ["BTCUSDT", "ETHUSDT", ...]
}
Use list_symbols to discover valid symbol names before trading. This avoids "invalid symbol" errors.
Errors return structured JSON with actionable guidance. Examples:
Invalid symbol:
phemex-cli get_ticker --symbol INVALIDXXX
{
"error": "Invalid symbol: INVALIDXXX",
"code": 6001,
"suggestion": "Symbol \"INVALIDXXX\" is not recognized. Check spelling and contract type.",
"tip": "Run \"phemex-cli list_symbols\" to see all available symbols."
}
Common typo (BTCUSD instead of BTCUSDT):
phemex-cli get_ticker --symbol BTCUSD
{
"error": "Invalid symbol: BTCUSD",
"code": 6001,
"suggestion": "Did you mean BTCUSDT? For USDT perpetuals, use symbols ending in USDT (e.g. BTCUSDT).",
"tip": "Run \"phemex-cli list_symbols\" to see all available symbols."
}
Order quantity too large:
{
"error": "Order quantity too large",
"code": "TE_QTY_TOO_LARGE",
"suggestion": "The order quantity exceeds the maximum allowed for BTCUSDT.",
"tip": "Reduce --orderQty or check the symbol's max order size on Phemex."
}
Other enhanced errors: insufficient balance, invalid API key, rate limiting, invalid leverage, order not found — all include suggestion and tip fields.
place_order, show the user exactly what the order will do: symbol, side, quantity, type, price. Ask for confirmation.cancel_all_orders, list the open orders first and confirm with the user.set_leverage, explain the implications (higher leverage = higher liquidation risk).phemex-cli get_ticker --symbol BTCUSDT
phemex-cli list_symbols --contractType linear
phemex-cli place_order --symbol BTCUSDT --side Buy --orderQty 0.01 --ordType Market
phemex-cli place_order --symbol BTCUSD --side Sell --orderQty 10 --ordType Limit --price 100000 --contractType inverse
phemex-cli place_order --symbol BTCUSDT --side Buy --orderQty 10 --ordType Market --contractType spot --qtyType ByQuote
phemex-cli get_positions --currency USDT
phemex-cli place_order --help
Create ~/.phemexrc — credentials persist across sessions without exporting env vars:
# ~/.phemexrc
PHEMEX_API_KEY=your-api-key
PHEMEX_API_SECRET=your-api-secret
PHEMEX_API_URL=https://api.phemex.com
# Optional: max order value limit (USD)
PHEMEX_MAX_ORDER_VALUE=1000
That's it. All phemex-cli commands will pick up these values automatically.
export PHEMEX_API_KEY=your-api-key
export PHEMEX_API_SECRET=your-api-secret
export PHEMEX_API_URL=https://api.phemex.com
Settings are loaded in this order (highest priority first):
~/.phemexrc config fileThis means env vars always override the config file, so you can safely keep production creds in ~/.phemexrc and temporarily override with PHEMEX_API_URL=https://testnet-api.phemex.com phemex-cli ... for testing.
~/.phemexrc or export as environment variablesphemex-cli list_symbols --contractType linear should return symbolsPHEMEX_API_URL (defaults to testnet https://testnet-api.phemex.com for safety; set to https://api.phemex.com for real trading)PHEMEX_MAX_ORDER_VALUE to limit maximum order size (USD)npm i -g phemex-trade-mcp