Install
openclaw skills install gate-exchange-spot-v2-stagingGate spot trading and account operations skill. Use when the user asks to buy/sell crypto on spot, check account value, or place conditional/trigger orders. Triggers on 'buy coin', 'sell spot', 'take profit', 'stop loss', or 'cancel order'.
openclaw skills install gate-exchange-spot-v2-staging⚠️ STOP — You MUST read and strictly follow the shared runtime rules before proceeding.
Do NOT select or call any tool until all rules are read. These rules have the highest priority.
→ Read ./references/gate-runtime-rules.md
| MCP Server | Status |
|---|---|
| Gate (main) | ✅ Required |
Query Operations (Read-only)
Execution Operations (Write)
GATE_API_KEY, GATE_API_SECRET)Read and strictly follow references/mcp.md, then execute this skill's routing/case logic.
SKILL.md remains the intent routing and scenario map.references/mcp.md is the authoritative MCP execution layer for tool contracts, pre-checks, confirmation gates, and degraded handling.| Group | Tool Calls (jsonrpc: call.method) |
|---|---|
| Account and balances | cex_spot_get_spot_accounts, cex_spot_list_spot_account_book |
| Place/cancel/amend orders | cex_spot_create_spot_order, cex_spot_create_spot_batch_orders, cex_spot_cancel_all_spot_orders, cex_spot_cancel_spot_order, cex_spot_cancel_spot_batch_orders, cex_spot_amend_spot_order, cex_spot_amend_spot_batch_orders |
| Trigger orders (price orders) | cex_spot_create_spot_price_triggered_order, cex_spot_list_spot_price_triggered_orders, cex_spot_get_spot_price_triggered_order, cex_spot_cancel_spot_price_triggered_order, cex_spot_cancel_spot_price_triggered_order_list |
| Open orders and fills | cex_spot_list_spot_orders, cex_spot_list_spot_my_trades |
| Market data | cex_spot_get_spot_tickers, cex_spot_get_spot_order_book, cex_spot_get_spot_candlesticks |
| Trading rules | cex_spot_get_currency, cex_spot_get_currency_pair |
| Fees | cex_wallet_get_wallet_fee, cex_spot_get_spot_batch_fee |
BASE_QUOTE format for trading pairs, for example BTC_USDT.min_quote_amount (commonly 10U).min_base_amount / amount_precision).When calling cex_spot_create_spot_order with type=market, fill amount by side:
| side | amount meaning | Example |
|---|---|---|
buy | Quote-currency amount (USDT) | "Buy 100U BTC" -> amount="100" |
sell | Base-currency quantity (BTC/ETH, etc.) | "Sell 0.01 BTC" -> amount="0.01" |
Pre-check before execution:
buy market order: verify quote-currency balance can cover amount (USDT).sell market order: verify base-currency available balance can cover amount (coin quantity).When the user asks for any spot trading operation, follow this sequence.
Classify the request into one of these six categories:
Extract key fields:
currency / currency_pairside (buy/sell)amount (coin quantity) or quote_amount (USDT amount)price or price condition (for example "2% below current")When type=market, normalize parameters as:
side=buy: amount = quote_amount (USDT amount)side=sell: amount = base_amount (base-coin quantity)Pre-check order:
Before every cex_spot_create_spot_order, cex_spot_create_spot_batch_orders, or cex_spot_create_spot_price_triggered_order, always provide an Order Draft first, then wait for explicit confirmation.
Required execution flow:
Required confirmation fields:
currency_pair)buy/sell, market/limit)amount meaning and valueRecommended draft wording:
Order Draft: BTC_USDT, buy, market, amount=100 USDT, estimated fill around current ask, risk: slippage in fast markets. Reply "Confirm order" to place it.Allowed confirmation responses (examples):
Confirm order, Confirm, Proceed, Yes, place itHard blocking rules (non-bypassable):
cex_spot_create_spot_order, cex_spot_create_spot_batch_orders, or cex_spot_create_spot_price_triggered_order unless the user explicitly confirms in the immediately previous turn.If user confirmation is missing, ambiguous, or negative:
Use only the minimal tool set required for the task:
cex_spot_get_spot_accountscex_spot_get_currency_paircex_spot_get_spot_tickerscex_spot_create_spot_order / cex_spot_create_spot_batch_orderscex_spot_create_spot_price_triggered_order / cex_spot_list_spot_price_triggered_orders / cex_spot_get_spot_price_triggered_order / cex_spot_cancel_spot_price_triggered_order / cex_spot_cancel_spot_price_triggered_order_listcex_spot_cancel_all_spot_orders / cex_spot_cancel_spot_order / cex_spot_cancel_spot_batch_orders / cex_spot_amend_spot_order / cex_spot_amend_spot_batch_orderscex_spot_list_spot_orders (use status=open)cex_spot_list_spot_my_tradescex_spot_list_spot_account_bookcex_spot_get_spot_batch_feeThe response must include:
| Case | User Intent | Core Decision | Tool Sequence |
|---|---|---|---|
| 1 | Market buy | Place market buy if USDT is sufficient | cex_spot_get_spot_accounts → cex_spot_create_spot_order |
| 2 | Buy at target price | Create a limit buy order | cex_spot_get_spot_accounts → cex_spot_create_spot_order |
| 3 | Buy with all balance | Use all available USDT balance to buy | cex_spot_get_spot_accounts → cex_spot_create_spot_order |
| 4 | Buy readiness check | Currency status + min size + current unit price | cex_spot_get_currency → cex_spot_get_currency_pair → cex_spot_get_spot_tickers |
| 5 | Asset summary | Convert all holdings to USDT value | cex_spot_get_spot_accounts → cex_spot_get_spot_tickers |
| 6 | Cancel all then check balance | Cancel all open orders and return balances | cex_spot_cancel_all_spot_orders → cex_spot_get_spot_accounts |
| 7 | Sell dust | Sell only if minimum size is met | cex_spot_get_spot_accounts → cex_spot_get_currency_pair → cex_spot_create_spot_order |
| 8 | Balance + minimum buy check | Place order only if account balance and min_quote_amount are both satisfied | cex_spot_get_spot_accounts → cex_spot_get_currency_pair → cex_spot_create_spot_order |
| Case | User Intent | Core Decision | Tool Sequence |
|---|---|---|---|
| 9 | Buy 2% lower | Place limit buy at current price -2% | cex_spot_get_spot_tickers → cex_spot_create_spot_order |
| 10 | Sell at +500 | Place limit sell at current price +500 | cex_spot_get_spot_tickers → cex_spot_create_spot_order |
| 11 | Buy near today's low | Buy only if current price is near 24h low | cex_spot_get_spot_tickers → cex_spot_create_spot_order |
| 12 | Sell on 5% drop request | Calculate target drop price and place sell limit order | cex_spot_get_spot_tickers → cex_spot_create_spot_order |
| 13 | Buy top gainer | Auto-pick highest 24h gainer and buy | cex_spot_get_spot_tickers → cex_spot_create_spot_order |
| 14 | Buy larger loser | Compare BTC/ETH daily drop and buy the bigger loser | cex_spot_get_spot_tickers → cex_spot_create_spot_order |
| 15 | Buy then place sell | Market buy, then place sell at +2% reference price | cex_spot_create_spot_order → cex_spot_create_spot_order |
| 16 | Fee estimate | Estimate total cost from fee rate and live price | cex_wallet_get_wallet_fee → cex_spot_get_spot_tickers |
| Case | User Intent | Core Decision | Tool Sequence |
|---|---|---|---|
| 17 | Raise price for unfilled order | Confirm how much to raise (or target price), locate unfilled buy orders, confirm which order to amend if multiple, then amend limit price | cex_spot_list_spot_orders(status=open) → cex_spot_amend_spot_order |
| 18 | Verify fill and holdings | Last buy fill quantity + current total holdings | cex_spot_list_spot_my_trades → cex_spot_get_spot_accounts |
| 19 | Cancel if not filled | If still open, cancel and then recheck balance | cex_spot_list_spot_orders(status=open) → cex_spot_cancel_spot_order → cex_spot_get_spot_accounts |
| 20 | Rebuy at last price | Use last fill price, check balance, then place limit buy | cex_spot_list_spot_my_trades → cex_spot_get_spot_accounts → cex_spot_create_spot_order |
| 21 | Sell at break-even or better | Sell only if current price is above cost basis | cex_spot_list_spot_my_trades → cex_spot_get_spot_tickers → cex_spot_create_spot_order |
| 22 | Asset swap | Estimate value, if >=10U then sell then buy | cex_spot_get_spot_accounts → cex_spot_get_spot_tickers → cex_spot_create_spot_order(sell) → cex_spot_create_spot_order(buy) |
| 23 | Buy if price condition met | Buy only when current < 60000, then report balance | cex_spot_get_spot_tickers → cex_spot_create_spot_order → cex_spot_get_spot_accounts |
| 24 | Buy on trend condition | Buy only if 3 of last 4 hourly candles are bullish | cex_spot_get_spot_candlesticks → cex_spot_create_spot_order |
| 25 | Fast-fill limit buy | Use best opposite-book price for fast execution | cex_spot_get_spot_order_book → cex_spot_create_spot_order |
| Case | User Intent | Core Decision | Tool Sequence |
|---|---|---|---|
| 26 | Filter and batch-cancel selected open orders | Verify target order ids exist in open orders, show candidate list, cancel only after user verification | cex_spot_list_spot_orders(status=open) → cex_spot_cancel_spot_batch_orders |
| 27 | Market slippage simulation | Simulate average fill from order-book asks for a notional buy, compare to last price | cex_spot_get_spot_order_book → cex_spot_get_spot_tickers |
| 28 | Batch buy placement | Check total required quote amount vs available balance, then place multi-order basket | cex_spot_get_spot_accounts → cex_spot_create_spot_batch_orders |
| 29 | Fee-rate comparison across pairs | Compare fee tiers and translate fee impact into estimated cost | cex_spot_get_spot_batch_fee → cex_spot_get_spot_tickers |
| 30 | Account-book audit + current balance | Show recent ledger changes for a coin and current remaining balance | cex_spot_list_spot_account_book → cex_spot_get_spot_accounts |
| 31 | Batch amend open buy orders by +1% | Filter open orders by pair, select up to 5 target buy orders, reprice and batch amend after user verification | cex_spot_list_spot_orders(status=open) → cex_spot_amend_spot_batch_orders |
| Case | User Intent | Core Decision | Tool Sequence |
|---|---|---|---|
| 32 | Conditional buy trigger order | Read current BTC price, compute 5% drop trigger, place buy trigger after confirmation | cex_spot_get_spot_tickers → cex_spot_create_spot_price_triggered_order |
| 33 | Dual TP/SL trigger placement | Check ETH available balance, build TP and SL trigger legs, confirm then place both | cex_spot_get_spot_accounts → cex_spot_create_spot_price_triggered_order → cex_spot_create_spot_price_triggered_order |
| 34 | Single trigger order progress query | Read trigger-order detail and compare against live market price to compute distance to trigger | cex_spot_get_spot_price_triggered_order → cex_spot_get_spot_tickers |
| 35 | Batch cancel BTC buy trigger orders | List open trigger orders, filter BTC buy side, confirm scope, then batch cancel | cex_spot_list_spot_price_triggered_orders(status=open) → cex_spot_cancel_spot_price_triggered_order_list |
| 36 | Single trigger/TP-SL order cancel | Verify one target trigger order is active, then cancel after confirmation | cex_spot_get_spot_price_triggered_order → cex_spot_cancel_spot_price_triggered_order |
| Condition | Action |
|---|---|
| User asks to check balance before buying | Must call cex_spot_get_spot_accounts first; place order only if sufficient |
| User specifies buy/sell at target price | Use type=limit at user-provided price |
| User asks for fastest fill at current market | Prefer market; if "fast limit" is requested, use best book price |
Market buy (buy) | Fill amount with USDT quote amount, not base quantity |
Market sell (sell) | Fill amount with base-coin quantity, not USDT amount |
| User requests take-profit/stop-loss | Use trigger-order workflow: validate position size, draft TP+SL legs, then place after explicit confirmation |
| Any order placement request | Require explicit final user confirmation before cex_spot_create_spot_order |
| User has not replied with clear confirmation | Keep order as draft; no trading execution |
| Confirmation is stale or not from the immediately previous turn | Invalidate it and require a fresh confirmation |
| Multi-leg trading flow | Require per-leg confirmation before each cex_spot_create_spot_order |
| User asks to amend an unfilled buy order | Confirm price increase amount or exact target price before cex_spot_amend_spot_order |
| Multiple open buy orders match amendment request | Ask user to choose which order to amend before executing |
| User requests selected-order batch cancellation | Verify each order id exists/open, present list, and run cex_spot_cancel_spot_batch_orders only after user verification |
| User requests batch amend for open orders | Filter target pair open buy orders (max 5), compute repriced levels, and run cex_spot_amend_spot_batch_orders only after user verification |
| User requests trigger-order progress | Read one trigger order and compare current ticker price to trigger condition; return numeric distance |
| User requests trigger-order batch cancellation | Filter trigger orders by pair+side, present cancellation scope, then call cex_spot_cancel_spot_price_triggered_order_list after confirmation |
| User requests single trigger-order cancellation | Verify order is active/matching intent, then call cex_spot_cancel_spot_price_triggered_order after confirmation |
| User requests market slippage simulation | Use order-book depth simulation and compare weighted fill vs ticker last price |
| User requests multi-coin one-click buy | Validate summed quote requirement, then use cex_spot_create_spot_batch_orders |
| User requests fee comparison for multiple pairs | Use cex_spot_get_spot_batch_fee and convert to cost impact with latest prices |
| User requests account flow for a coin | Use cex_spot_list_spot_account_book and then reconcile with cex_spot_get_spot_accounts |
| User amount is too small | Check min_quote_amount; if not met, ask user to increase amount |
| User requests all-in buy/sell | Use available balance, then trim by minimum trade rules |
| Trigger condition not met | Do not place order; return current vs target price gap |
## Execution Result
| Item | Value |
|------|-----|
| Scenario | {case_name} |
| Pair | {currency_pair} |
| Action | {action} |
| Status | {status} |
| Key Metrics | {key_metrics} |
{decision_text}
Example decision_text:
✅ Condition met. Your order has been placed.📝 Order draft ready. Reply "Confirm order" to execute.⏸️ No order placed yet: current price is 60200, above your target 60000.❌ Not executed: minimum order amount is 10U, your input is 5U.| Error Type | Typical Cause | Handling Strategy |
|---|---|---|
| Insufficient balance | Not enough available USDT/coins | Return shortfall and suggest reducing order size |
| Minimum trade constraint | Below minimum amount/size | Return threshold and suggest increasing order size |
| Trigger-order parameter mismatch | Trigger rule/price/side is inconsistent with user intent | Return normalized trigger draft and require user reconfirmation |
| Missing final confirmation | User has not clearly approved final order summary | Keep order pending and request explicit confirmation |
| Stale confirmation | Confirmation does not match the current draft or is not in the previous turn | Reject execution and ask for reconfirmation |
| Draft-only mode | User has not confirmed yet | Only run query/estimation tools; do not call cex_spot_create_spot_order, cex_spot_create_spot_batch_orders, or cex_spot_create_spot_price_triggered_order |
| Ambiguous amendment target | Multiple candidate open buy orders | Keep pending and ask user to confirm order ID/row |
| Batch-cancel ambiguity | Some requested order ids are missing/not-open | Return matched vs unmatched ids and request reconfirmation |
| Batch-amend ambiguity | Candidate order set is unclear or exceeds max selection | Ask user to confirm exact order ids (up to 5) before execution |
| Order missing/already filled | Amendment/cancellation target is invalid | Ask user to refresh open orders and retry |
| Market condition not met | Trigger condition is not satisfied | Return current price, target price, and difference |
| Pair unavailable | Currency suspended or abnormal status | Clearly state pair is currently not tradable |
gate-exchange-spot (Case 2/9/23)