SKILL.md
OKX CEX Earn CLI
Preflight
Before running any command, follow ../_shared/preflight.md.
Use metadata.version from this file's frontmatter as the reference for Step 2.
Prerequisites
- Install
okxCLI:
npm install -g @okx_ai/okx-trade-cli
- Configure credentials:
okx config init # select site -> follow browser OAuth flow
- Verify:
okx earn savings balance
Security: NEVER accept credentials in chat. Guide users to okx config init for setup.
Credential & Profile Check
Run both commands before any authenticated command — the apiKey field from okx auth status --json is the auth-binary's internal state and is always false regardless of whether ~/.okx/config.toml has an API-key profile. okx config show --json is the only authoritative source for API-key presence. The auth method is detected during preflight Step 2 and remembered for the session.
okx config show --json # reveals API-key profiles (TOML config)
okx auth status --json # reveals OAuth session state (auth-binary state)
Apply in this order — first match wins:
config show --jsonhas any profile with a non-emptyapi_keyfield → API Key mode. Proceed.
- No API-key profile AND
auth status --jsonreturns"status":"logged_in"→ OAuth mode. Proceed.
- No API-key profile AND
"status":"pending"— login is in progress, wait for it to complete.
- No API-key profile AND
"status":"not_logged_in"— stop, loadokx-cex-authskill and follow login steps, wait for completion.
OKX Earn does not support demo mode. Always use live mode silently — don't mention it unless there's an error.
- API Key users: use
--profile <live-profile>(the profile withoutdemo=true).
- OAuth users: no flag needed (live is the default).
**On authentication errors (401 / "Session expired" / "Run okx auth login first"):** stop immediately, load okx-cex-auth skill and follow re-authentication steps, then retry.
Skill Routing
User intent
Route to skill
Market prices, tickers, candles
okx-cex-market
Spot / swap / futures / options orders
okx-cex-trade
Account balance, positions, transfers
okx-cex-portfolio
Grid / DCA trading bots
okx-cex-bot
Simple Earn, Flash Earn, On-chain Earn, Dual Investment (双币赢), or AutoEarn (自动赚币)
This skill
Command Index
earn savings — Simple Earn (9 commands)
Command
Type
Auth
Description
earn savings balance [ccy]
READ
Required
Savings balance (all or specific currency). Also fetch fixed-term orders for a complete picture.
earn savings purchase --ccy --amt [--rate]
WRITE
Required
Subscribe funds to Simple Earn (活期)
earn savings redeem --ccy --amt
WRITE
Required
Redeem funds from Simple Earn (活期)
earn savings set-rate --ccy --rate
WRITE
Required
Set minimum lending rate
earn savings lending-history
READ
Required
User's personal lending records with earnings detail
earn savings rate-history
READ
Required
Simple Earn lending rates and fixed-term offers (require auth)
earn savings fixed-orders [--ccy] [--state]
READ
Required
Query fixed-term (定期) orders. States: pending/earning/expired/settled/cancelled
earn savings fixed-purchase --ccy --amt --term [--confirm]
WRITE
Required
Subscribe to Simple Earn Fixed (定期). Without --confirm: preview only
earn savings fixed-redeem <reqId>
WRITE
Required
Redeem a fixed-term order (full amount). Only pending state orders can be redeemed early
For full command syntax, rate field semantics, and confirmation templates, read {baseDir}/references/savings-commands.md.
earn dcd — Dual Investment / 双币赢 (6 commands)
Command
Type
Auth
Description
earn dcd pairs
READ
Required
Available DCD currency pairs
earn dcd products
READ
Required
Active products with filters
earn dcd quote-and-buy --productId --sz --notionalCcy
WRITE
Required
Atomic subscribe: quote + execute in one step
earn dcd order --ordId
READ
Required
Quick state check for a single order
earn dcd orders
READ
Required
Full order list / history
earn dcd redeem-execute --ordId
WRITE
Required
Two-step early redemption: preview then execute
DCD does not support demo/simulated trading mode. Always use live mode (API Key: --profile <live-profile>; OAuth: no flag needed).
For full command syntax, product concepts, and error codes, read {baseDir}/references/dcd-commands.md.
earn onchain — On-chain Earn (6 commands)
Command
Type
Auth
Description
earn onchain offers
READ
Required
Available staking/DeFi products
earn onchain purchase --productId --ccy --amt
WRITE
Required
Subscribe to on-chain product
earn onchain redeem --ordId --protocolType
WRITE
Required
Redeem on-chain investment
earn onchain cancel --ordId --protocolType
WRITE
Required
Cancel pending on-chain order
earn onchain orders
READ
Required
Active on-chain orders
earn onchain history
READ
Required
Historical on-chain orders
For full command syntax and parameters, read {baseDir}/references/onchain-commands.md.
earn auto-earn — AutoEarn / 自动赚币 (3 commands)
Command
Type
Auth
Description
earn auto-earn status [CCY]
READ
Required
Query currencies supporting auto-earn and their status
earn auto-earn on <CCY>
WRITE
Required
Enable auto-earn for a currency
earn auto-earn off <CCY>
WRITE
Required
Disable auto-earn for a currency
24h restriction: Cannot disable within 24 hours of enabling (API hard limit). Always warn user before enabling.
For full command syntax, earnType inference rules, and MCP tool reference, read {baseDir}/references/autoearn-commands.md.
earn flash-earn — Flash Earn / 闪赚 (1 command)
Command
Type
Auth
Description
earn flash-earn projects [--status <0|100|0,100>]
READ
Required
Browse Flash Earn projects by status. 0=upcoming, 100=in-progress, default is both
Operation Flow
Step 0 — Credential & Profile Check
Before any authenticated command: see [Credential &#x26; Profile Check](#credential--profile-check). Always use live mode silently.
Step 1 — Identify earn intent
Simple Earn Flexible (活期):
- Query balance / history / rates → READ command, proceed directly.
- Subscribe / redeem / set-rate → WRITE command, go to Step 2.
Simple Earn Fixed (定期):
- Query offers / order list → READ command, proceed directly.
- Subscribe (two-step: preview then confirm) / redeem (pending state only) → WRITE command, go to Step 2. Read
{baseDir}/references/savings-commands.mdfor pre-execution checklists and confirmation templates.
- For multi-step workflows (subscribe with preview, early redemption), read
{baseDir}/references/workflows.md.
On-chain Earn:
- Query offers / orders / history → READ command, proceed directly.
- Purchase / redeem / cancel → WRITE command, go to Step 2.
AutoEarn (自动赚币):
- Query auto-earn status → READ, proceed directly.
- Enable / disable auto-earn → WRITE, go to Step 2. Read
{baseDir}/references/autoearn-commands.mdfor confirmation templates and earnType inference.
Flash Earn (闪赚):
- Browse projects → READ, proceed directly.
- Use
--status 0for upcoming projects,--status 100for in-progress projects, or omit the flag to view both.
When user asks to view "earn positions" or "赚币持仓" (regardless of whether they mention DCD explicitly), query all position-bearing sub-modules simultaneously (Flash Earn is query-only, no positions):
okx earn savings balance --json # Simple Earn Flexible (活期)
okx earn savings fixed-orders --json # Simple Earn Fixed (定期)
okx earn onchain orders --json # On-chain Earn
okx earn dcd orders --json # Dual Investment (双币赢)
Only present sections that have actual holdings. For DCD: translate state codes using the table in {baseDir}/references/dcd-commands.md.
Dual Investment (DCD / 双币赢):
- Browse products / pairs → READ; when user specifies a currency, read
{baseDir}/references/workflows.md(DCD browse flow) for the mandatory parallel pre-fetch before rendering the product table
- Subscribe (quote-and-buy) → WRITE → see
{baseDir}/references/workflows.md(DCD subscribe flow)
- Early redeem → WRITE → see
{baseDir}/references/workflows.md(DCD early redeem flow)
For multi-step workflows (idle fund analysis, subscribe + verify, redeem + transfer, on-chain subscribe), read {baseDir}/references/workflows.md.
Step 2 — Confirm write operation
For all WRITE commands, present a summary and wait for explicit confirmation.
"just do it" / "直接搞" is NOT valid confirmation — the user must see the summary first.
For Simple Earn confirmation dialog format, read {baseDir}/references/savings-commands.md. For On-chain confirmation, read {baseDir}/references/onchain-commands.md.
Step 3 — Execute and verify
After any purchase, verify based on product type:
- DCD
quote-and-buysucceeded → runearn dcd orders --json, show only the matching order.
- On-chain purchase (response contains
ordId) → runearn onchain orders --json, show only the matching order.
- Simple Earn Flexible purchase (no
ordIdin response) → runearn savings balance --ccy <ccy> --json.
- Simple Earn Fixed purchase → run
earn savings fixed-orders --ccy <ccy> --state pending --json, show the new order.
Simple Earn Flexible purchase: Run in parallel — earn savings balance --ccy <ccy> and earn savings rate-history --ccy <ccy> --limit 1 --json. For output format, read {baseDir}/references/savings-commands.md.
Simple Earn Flexible redeem: Run earn savings balance --ccy <ccy> to confirm updated balance. Inform user funds returned to funding account.
Simple Earn Fixed purchase: Run earn savings fixed-orders --ccy <ccy> --state pending --json to confirm the order was created. Show order details including APR, term, and expected expiry date.
Simple Earn Fixed redeem: Run earn savings fixed-orders --json to confirm the order state changed to cancelled. Inform user full principal returned to funding account — no interest earned for early cancellation.
On-chain redeem: Query earn onchain orders to confirm state. Show estSettlementTime as estimated arrival time.
On-chain cancel: Query earn onchain orders after submission:
- Order gone from list → inform user: cancellation complete, funds returned to funding account.
state: 3(cancelling) → inform user: cancellation in progress, funds will return to funding account shortly.
Global Notes
- Security: Never ask users to paste API keys or secrets into chat.
- Output: Always pass
--jsonto list/query commands and render results as a Markdown table — never paste raw terminal output.
- Network errors: If commands fail with a connection error, prompt user to check VPN:
curl -I https://www.okx.com
- Language: Always respond in the user's language.
For number/time formatting and response structure conventions, read {baseDir}/references/templates.md.