/SKILL.md
This skill should be used when the user asks to "buy token", "sell token", "swap token", "trade crypto", "check trade status", "query transaction", "scan tokens", "feed", "monitor chain", "query token", "token details", "check token safety", "list wallets", "show wallets", "my wallets", "AI scan", "AI扫链", "auto scan", "smart scan", "tweet scan", "推文扫链", "twitter scan", "onboarding", "get started", "check IP", "get IP", "IP whitelist", "查IP", "IP白名单", "launch token", "create token", "发币", "创建代币", "auto sell", "stop loss", "take profit", "trailing stop", "止盈止损", "移动止损", "holders", "top holders", "kol holders", "insider", "持仓", "持仓列表", or mentions trading on Solana/ETH/BSC/Base chains via XXYY. Enables on-chain token trading and data queries through the XXYY Open API.
npx skillsauth add jimmy-holiday/xxyy-trade-skill xxyy-tradeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
On-chain token trading and data queries on Solana, Ethereum, BSC, and Base via XXYY Open API.
Set environment variables before use:
XXYY_API_KEY (required) -- Your XXYY Open API Key (format: xxyy_ak_xxxx). Get one at https://www.xxyy.io/apikeyXXYY_API_BASE_URL (optional) -- API base URL, defaults to https://www.xxyy.ioAll requests require header: Authorization: Bearer $XXYY_API_KEY
⚠ READ BEFORE FIRST USE. This skill executes real on-chain trades with real funds. There is no read-only API key — the same key signs both data queries and trades. Treat your
XXYY_API_KEYlike a hot wallet private key. The skill will surface a one-time risk acknowledgement on your first trade each session; after that, only trade details are confirmed so trading stays fast.
get_ip tool to check your current outbound IP before setting up the whitelist.STRICT: Only the endpoints listed below exist. Do NOT guess, infer, or construct any URL that is not explicitly documented here. If you need functionality not covered below, tell the user it is not supported.
Complete endpoint list:
POST /api/trade/open/api/swap— Buy / SellGET /api/trade/open/api/trade— Query TradeGET /api/trade/open/api/ping— PingPOST /api/trade/open/api/feed/{type}— Feed ScanGET /api/trade/open/api/query— Token QueryGET /api/trade/open/api/wallets— List WalletsGET /api/trade/open/api/wallet/info— Wallet InfoGET /api/trade/open/api/pnl— PNL QueryGET /api/trade/open/api/trades— Trade HistoryGET /api/trade/open/api/ip— Get IP (exempt from IP whitelist)GET /api/trade/open/api/kol-buy-list— KOL Buy ListGET /api/trade/open/api/tag-holder-buy-list— Tag Holder Buy ListGET /api/trade/open/api/label-list— Label List (tokens with specific labels)POST /api/trade/open/api/signal-list— Signal List (AI trending signals)POST /api/trade/open/api/trending-list— Trending List (hot tokens by period, SOL/BSC)POST /api/trade/open/api/{chain}/launch— Launch Token (create new token)POST /api/trade/open/api/autoSell/createOrUpdate— Create/Update Auto-Sell RulesGET /api/trade/open/api/autoSell/list— List Auto-Sell RulesGET /api/trade/open/api/autoSell/delete— Delete Auto-Sell RulesGET /api/trade/open/api/autoSell/open— Toggle Auto-SellGET /api/trade/open/api/holders/{type}— Token Holder List
POST ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/swap
{
"chain": "sol",
"walletAddress": "<user_wallet>",
"tokenAddress": "<token_contract>",
"isBuy": true,
"amount": 0.1,
"tip": 0.0001,
"slippage": 20
}
| Param | Required | Type | Valid values | Description |
|-------|----------|------|-------------|-------------|
| chain | YES | string | sol / eth / bsc / base | Only these 4 values accepted |
| walletAddress | YES | string | SOL: Base58 32-44 chars; EVM: 0x+40hex | Wallet address on XXYY platform, must match chain |
| tokenAddress | YES | string | Valid contract address | Token contract address to buy |
| isBuy | YES | boolean | true | Must be true for buy |
| amount | YES | number | > 0 | Amount in native currency (SOL/ETH/BNB) |
| tip | YES | number | SOL: 0.0001-0.1 (unit: SOL); EVM: 0.1-100 (unit: Gwei) | Priority fee for all chains. If not provided, falls back to priorityFee |
| slippage | NO | number | 0-100 | Slippage tolerance %, default 20 |
| model | NO | number | 1 or 2 | 1=anti-sandwich (default), 2=fast mode |
| priorityFee | NO | number | >= 0 | Solana chain only. Extra priority fee in addition to tip |
POST ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/swap
{
"chain": "sol",
"walletAddress": "<user_wallet>",
"tokenAddress": "<token_contract>",
"isBuy": false,
"amount": 50,
"tip": 0.0001
}
| Param | Required | Type | Valid values | Description |
|-------|----------|------|-------------|-------------|
| chain | YES | string | sol / eth / bsc / base | Only these 4 values accepted |
| walletAddress | YES | string | SOL: Base58 32-44 chars; EVM: 0x+40hex | Wallet address on XXYY platform, must match chain |
| tokenAddress | YES | string | Valid contract address | Token contract address to sell |
| isBuy | YES | boolean | false | Must be false for sell |
| amount | YES | number | 1-100 | Sell percentage. Example: 50 = sell 50% of holdings |
| tip | YES | number | SOL: 0.0001-0.1 (unit: SOL); EVM: 0.1-100 (unit: Gwei) | Priority fee for all chains. If not provided, falls back to priorityFee |
| slippage | NO | number | 0-100 | Slippage tolerance %, default 20 |
| model | NO | number | 1 or 2 | 1=anti-sandwich (default), 2=fast mode |
| priorityFee | NO | number | >= 0 | Solana chain only. Extra priority fee in addition to tip |
tip (required) -- Universal priority fee for ALL chains. EVM chains (eth/bsc/base) use tip as the priority fee. If tip is not provided, the API falls back to priorityFee.
priorityFee (optional) -- Only effective on Solana chain. Solana supports both tip and priorityFee simultaneously.GET ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/trade?txId=<tx_id>
Response fields: txId, status (pending/success/failed), statusDesc, chain, tokenAddress, walletAddress, isBuy, baseAmount, quoteAmount
GET ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/trades?walletAddress=<wallet>&chain=<chain>
Paginated query of successful trade records for a specific wallet. Only returns completed transactions, sorted by creation time (newest first).
| Param | Required | Type | Valid values | Description |
|-------|----------|------|-------------|-------------|
| walletAddress | YES | string | Wallet address | Must belong to current API Key user |
| chain | YES | string | sol / eth / bsc / base | Chain identifier (required) |
| tokenAddress | NO | string | Contract address | Filter by specific token |
| pageNum | NO | int | >= 1 | Page number, default 1 |
| pageSize | NO | int | 1-20 | Items per page, default 20 |
{
"code": 200,
"data": {
"pageNum": 1,
"pageSize": 10,
"total": 56,
"list": [
{
"txId": "5xYz...",
"status": 2,
"statusDesc": "success",
"chain": "sol",
"tokenAddress": "EPjF...",
"walletAddress": "5xYz...",
"isBuy": 1,
"baseAmount": 0.5,
"quoteAmount": 1000,
"createTime": "2026-03-18T10:00:00",
"updateTime": "2026-03-18T10:00:05"
}
]
}
}
Response fields: txId, status (fixed 2=success), statusDesc, chain, tokenAddress, walletAddress, isBuy (1=buy, 0=sell), baseAmount, quoteAmount, createTime, updateTime
GET ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/ping
Returns "pong" if API key is valid.
POST ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/feed/{type}?chain={chain}
Retrieve Meme token lists: newly launched, almost graduated, or graduated.
| Param | Required | Type | Valid values | Description |
|-------|----------|------|-------------|-------------|
| type | YES | path string | NEW / ALMOST / COMPLETED | NEW = newly launched, ALMOST = almost graduated, COMPLETED = graduated |
| chain | NO | query string | sol / eth / bsc / base | Default sol. All 4 chains supported |
All filters are optional. Range parameters use comma-separated string format "min,max". Leave one side empty to set only min or max (e.g. "100," = min 100, ",50" = max 50).
| Param | Type | Description | Example |
|-------|------|-------------|---------|
| dex | string[] | DEX platform filter | See DEX Values by Chain below |
| quoteTokens | string[] | Quote token filter | See quoteTokens Values by Chain below |
| link | string[] | Social media link filter | ["x","tg","web"] |
| keywords | string[] | Token name/symbol keyword match | ["pepe","doge"] |
| ignoreWords | string[] | Ignore keywords | ["scam"] |
| mc | string | Market cap range (USD) | "10000,500000" |
| liq | string | Liquidity range (USD) | "1000," |
| vol | string | Trading volume range (USD) | "5000,100000" |
| holder | string | Holder count range | "50," |
| createTime | string | Creation time range (minutes from now) | "1,20" |
| tradeCount | string | Trade count range | "100," |
| buyCount | string | Buy count range | "50," |
| sellCount | string | Sell count range | "10," |
| devBuy | string | Dev buy amount range (native token) | "0.001," |
| devSell | string | Dev sell amount range (native token) | "0.001," |
| devHp | string | Dev holding % range | ",60" |
| topHp | string | Top10 holding % range | ",60" |
| insiderHp | string | Insider holding % range | ",50" |
| bundleHp | string | Bundle holding % range | ",60" |
| newWalletHp | string | New wallet holding % range | ",30" |
| progress | string | Graduation progress % range (NEW/ALMOST only) | "1,90" |
| snipers | string | Sniper count range | ",5" |
| xnameCount | string | Twitter rename count range | ",3" |
| tagHolder | string | Watched wallet buy count range | "1,2" |
| kol | string | KOL buy count range | "1,2" |
| dexPay | int | DexScreener paid, 1 = filter paid only | 1 |
| oneLink | int | At least one social link, 1 = enabled | 1 |
| live | int | Currently live streaming, 1 = filter live | 1 |
pump, pumpmayhem, bonk, heaven, believe, daosfun, launchlab, mdbc, jupstudio, mdbcbags, trends, moonshotn, boop, moon, timefour, four_agent, bnonly, flapsol, usdc, usd1bnb, usdt, usdc, usd1, aster, u{
"code": 200,
"msg": "success",
"data": {
"items": [
{
"tokenAddress": "...",
"symbol": "TOKEN",
"name": "Token Name",
"createTime": 1773140232851,
"dexName": "PUMPFUN",
"launchPlatform": { "name": "PUMPFUN", "progress": "12.89", "completed": false },
"holders": 3,
"priceUSD": 0.000003046,
"marketCapUSD": 3046.80,
"devHoldPercent": 12.48,
"hasLink": false,
"snipers": 0,
"quoteToken": "sol"
}
]
},
"success": true
}
Key response fields: tokenAddress, symbol, name, createTime, dexName, launchPlatform (name/progress/completed), holders, priceUSD, marketCapUSD, devHoldPercent, hasLink, snipers, volume, tradeCount, buyCount, sellCount, topHolderPercent, insiderHp, bundleHp
GET ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/query?ca={contract_address}&chain={chain}
Query token details: price, security checks, tax rates, holder distribution, etc.
| Param | Required | Type | Valid values | Description |
|-------|----------|------|-------------|-------------|
| ca | YES | string | Contract address | Token contract address |
| chain | NO | string | sol / eth / bsc / base | Default sol. All 4 chains supported |
{
"code": 200,
"msg": "success",
"data": {
"chainId": "bsc",
"tokenAddress": "0x...",
"baseSymbol": "TOKEN",
"tradeInfo": {
"marketCapUsd": 15464629.87,
"price": 0.01546,
"holder": 7596,
"hourTradeNum": 20611,
"hourTradeVolume": 2564705.05
},
"pairInfo": {
"pairAddress": "0x...",
"pair": "TOKEN - WBNB",
"liquidateUsd": 581750.57,
"createTime": 1772182240000
},
"securityInfo": {
"honeyPot": false,
"openSource": true,
"noOwner": true,
"locked": true
},
"taxInfo": { "buy": "0", "sell": "0" },
"linkInfo": { "tg": "", "x": "", "web": "" },
"dev": { "address": "0x...", "pct": 0.0 },
"topHolderPct": 25.14,
"topHolderList": [
{ "address": "0x...", "balance": 98665702.34, "pct": 9.86 }
]
},
"success": true
}
Response groups:
GET ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/wallets
Query the current user's wallet list (with balances) for a specific chain.
| Param | Required | Type | Valid values | Description |
|-------|----------|------|-------------|-------------|
| chain | NO | string | sol / eth / bsc / base | Default sol |
| pageNum | NO | int | >= 1 | Page number, default 1 |
| pageSize | NO | int | 1-20 | Items per page, default 20 |
| tokenAddress | NO | string | Contract address | Returns token holdings per wallet |
{
"code": 200,
"msg": "success",
"data": {
"totalCount": 3,
"pageSize": 20,
"totalPage": 1,
"currPage": 1,
"list": [
{
"userId": 12345,
"chain": 1,
"name": "Wallet-1",
"address": "5xYz...abc",
"balance": 1.523456789,
"topUp": 1,
"tokenBalance": null,
"createTime": "2025-01-01 00:00:00",
"updateTime": "2025-06-01 12:00:00",
"isImport": false
}
]
},
"success": true
}
Response fields:
tokenAddress is provided). Contains amount, decimals, uiAmount, uiAmountString| Code | Chain | |------|-------| | 1 | SOL | | 2 | BSC | | 3 | ETH | | 6 | BASE |
GET ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/wallet/info
Query a single wallet's details (native balance + optional token balance).
| Param | Required | Type | Valid values | Description |
|-------|----------|------|-------------|-------------|
| walletAddress | YES | string | Wallet address | EVM chains are case-insensitive |
| chain | NO | string | sol / eth / bsc / base | Default sol |
| tokenAddress | NO | string | Contract address | Returns token holdings for this token |
{
"code": 200,
"msg": "success",
"data": {
"address": "5xY...abc",
"name": "MyWallet",
"chain": 1,
"isImport": false,
"topUp": 0,
"balance": 1.234567,
"tokenBalance": {
"amount": "1000000",
"uiAmount": 1.0,
"decimals": 6
}
},
"success": true
}
Response fields:
tokenAddress is provided. Contains amount, uiAmount, decimalsGET ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/pnl?walletAddress=<wallet>&tokenAddress=<token>&chain=<chain>
Query PNL (profit and loss) data for a specific wallet-token pair. Returns buy/sell totals, current holdings, and profit in both native currency and USD. Covers the last 30 days.
| Param | Required | Type | Valid values | Description |
|-------|----------|------|-------------|-------------|
| walletAddress | YES | string | Wallet address | Must belong to current API Key user |
| tokenAddress | YES | string | Contract address | Token contract address |
| chain | YES | string | sol / eth / bsc / base | Chain identifier (required) |
{
"code": 200,
"data": {
"wallet": "5xYz...",
"tokenMint": "EPjF...",
"balance": 1.5,
"buy": 2.0,
"sell": 0.8,
"hold": 1.2,
"pnl": 0.5,
"pnlusd": 75.0,
"holdTokenNum": 1000,
"holdTokenPercent": 0.05,
"lastTradeTime": 1710000000000,
"meta": {
"symbol": "TOKEN",
"dexId": "raydium",
"pairAddress": "xxx"
}
}
}
Response fields:
GET ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/ip
Get the current outbound IP address of this server. Use this to check which IP to add to your API Key's whitelist. This endpoint is exempt from IP whitelist restrictions — it will work even if your IP is not whitelisted.
No parameters required.
{
"code": 200,
"data": {
"ip": "203.0.113.42"
},
"success": true
}
Response fields:
GET ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/kol-buy-list?chain={chain}
Get KOL (Key Opinion Leader) recent buy list. Shows tokens recently purchased by influential traders.
| Param | Required | Type | Valid values | Description |
|-------|----------|------|-------------|-------------|
| chain | NO | string | sol / eth / bsc / base | Default sol. All 4 chains supported |
{
"code": 200,
"msg": "success",
"data": [
{
"tokenMeta": {
"symbol": "TOKEN",
"dexId": "pump",
"dexIcon": "https://...",
"imageUrl": "https://...",
"pairAddress": "PairAddress...",
"mint": "TokenMintAddress..."
},
"priceNative": 0.0000001,
"priceUsd": 0.0000085,
"marketCap": 8500.0,
"priceChange24h": 15.0,
"walletBuyCnt": 2,
"lastTradeTime": 1711234567890,
"holder": 120,
"volumeNative": 5000.0,
"volumeUSD": 5000.0,
"walletBuyItemList": [
{
"wallet": "KolWalletAddress...",
"walletName": "KOL Name",
"walletBuyAmount": 1.5
}
]
}
]
}
Response fields:
GET ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/tag-holder-buy-list?chain={chain}
Get tag holder (Smart Money, Whale, etc.) recent buy list. Shows tokens recently purchased by tagged wallets.
| Param | Required | Type | Valid values | Description |
|-------|----------|------|-------------|-------------|
| chain | NO | string | sol / eth / bsc / base | Default sol. All 4 chains supported |
{
"code": 200,
"msg": "success",
"data": [
{
"tokenMeta": {
"symbol": "TOKEN",
"dexId": "pump",
"dexIcon": "https://...",
"imageUrl": "https://...",
"pairAddress": "PairAddress...",
"mint": "TokenMintAddress..."
},
"priceNative": 0.0000001,
"priceUsd": 0.0000085,
"marketCap": 8500.0,
"priceChange24h": -5.0,
"walletBuyCnt": 1,
"lastTradeTime": 1711234567890,
"holder": 250,
"volumeNative": 12000.0,
"volumeUSD": 12000.0,
"walletBuyItemList": [
{
"wallet": "HolderWalletAddress...",
"walletName": "Smart Money",
"walletBuyAmount": 2.5
}
]
}
]
}
Response fields:
GET ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/label-list?chain={chain}&labelType={labelType}
Get tokens with specific labels (e.g., AGENT_KOL marked tokens).
| Param | Required | Type | Valid values | Description |
|-------|----------|------|-------------|-------------|
| chain | NO | string | sol / eth / bsc / base | Default sol. All 4 chains supported |
| labelType | NO | string | AGENT_KOL | Default AGENT_KOL. Currently only AGENT_KOL supported |
{
"code": 200,
"msg": "success",
"data": [
{
"pairAddress": "PairAddress...",
"dexId": "raydium",
"dexName": "Raydium",
"symbol": "TOKEN",
"name": "Token Name",
"tokenAddress": "TokenAddress...",
"imageUrl": "https://...",
"priceUSD": "0.00123",
"marketCapUSD": "123456.78",
"priceChange24H": "15.5",
"launchFrom": "pump",
"links": {
"tg": "https://t.me/...",
"x": "https://x.com/...",
"web": "https://..."
}
}
],
"success": true
}
Response fields:
POST ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/signal-list?type={type}&chain={chain}
Get AI trend signal list (e.g., open-ai-trending tokens).
| Param | Required | Type | Valid values | Description |
|-------|----------|------|-------------|-------------|
| type | NO | string | open-ai-trending | Default open-ai-trending. Currently only open-ai-trending supported |
| chain | NO | string | sol / eth / bsc / base | Default sol. All 4 chains supported |
Request body: Empty JSON object {}
{
"code": 200,
"msg": "success",
"data": [
{
"pairAddress": "PairAddress...",
"dexId": "raydium",
"dexName": "Raydium",
"symbol": "TOKEN",
"name": "Token Name",
"tokenAddress": "TokenAddress...",
"imageUrl": "https://...",
"priceUSD": "0.00456",
"marketCapUSD": "456789.12",
"priceChange24H": "-5.2",
"launchFrom": "pump",
"links": {
"tg": "https://t.me/...",
"x": "https://x.com/...",
"web": "https://..."
}
}
],
"success": true
}
Response fields: Same as Label List (see above)
POST ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/trending-list?chain={chain}
Get trending/hot token list. Shows the most active tokens within a given time period. Supports SOL and BSC chains.
| Param | Required | Type | Valid values | Description |
|-------|----------|------|-------------|-------------|
| chain | NO | string | sol / bsc | Default sol. Only SOL and BSC supported |
| period | YES | string | 1M / 5M / 30M / 1H / 6H / 24H | Time period for trending. Not all periods available for all internal categories |
Request body:
{ "period": "5M" }
{
"code": 200,
"msg": "success",
"data": [
{
"imageUrl": "https://...",
"createTime": "1774581395318",
"symbol": "TOKEN",
"name": "Token Name",
"dexId": "pfamm",
"headerImage": "https://...",
"pairAddress": "PairAddress...",
"tokenAddress": "TokenMintAddress...",
"priceUSD": "0.00005670",
"priceChange24H": "98.00",
"launchPlatform": {
"name": "PUMP",
"progress": 85,
"completed": false,
"launchedPair": null
},
"dexName": "Pump AMM",
"dexIcon": "https://...",
"marketCapUSD": "56708.41",
"links": { "tg": "", "x": "https://x.com/...", "web": "" },
"security": {
"mintAuthority": { "value": false, "passed": true },
"freezeAuthority": { "value": false, "passed": true },
"topHolder": { "value": 18.61, "passed": false },
"lpBurned": { "value": 100.0, "passed": true }
},
"holders": 641,
"devHoldPercent": "0.0000000000000",
"smartWallets": { "total": 3, "records": [{ "wallet": "...", "action": "buy", "nativeAmount": "1.5" }] },
"sourceDexIcon": "https://...",
"launchFrom": "pump",
"extendFlags": { "live": false },
"volume": 142092.91,
"liquid": 20995.35,
"buyCount": 2123,
"sellCount": 1620,
"auditInfo": {
"devHp": 0,
"snipers": 20,
"insiderHp": 0,
"newHp": 10.63,
"bundleHp": 0,
"dexPaid": true
}
}
]
}
Response fields:
POST ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/{chain}/launch
Launch (create) a new token. Optionally buy an initial amount of the newly created token.
Note: Chain restriction is lifted at the API level, but the current implementation only ships chain-specific options for
sol(solOptions) andbsc(bscOptions). Launching oneth/basewill fail downstream until corresponding options are added.
| Param | Required | Type | Valid values | Description |
|-------|----------|------|-------------|-------------|
| chain | YES | string | sol / eth / bsc / base | See note above |
| Param | Required | Type | Description |
|-------|----------|------|-------------|
| walletAddress | YES | string | Wallet address (must belong to the API Key's account) |
| name | YES | string | Token name |
| symbol | YES | string | Token symbol |
| buyAmount | NO | string | Native token amount for initial buy. "0" = create only. Default: "0" |
| solOptions | Sol only | object | Solana chain specific options (see below) |
| bscOptions | BSC only | object | BSC chain specific options (see below) |
buyAmount Limits:
| Param | Required | Type | Default | Description |
|-------|----------|------|---------|-------------|
| uri | YES | string | - | Metadata JSON URI (Metaplex standard, containing name/symbol/description/image) |
| slippage | NO | integer | 100 | Slippage in basis points. 100 = 1%. Only effective when buyAmount > 0 |
| priorityFee | NO | long | 100000 | Priority fee in lamports |
| tipFee | NO | long | 100000 | Tip fee in lamports |
| model | NO | integer | 1 | 1 = MEV protection, 2 = fast mode |
| creator | NO | string | null | Creator address (base58). Defaults to signing wallet |
| mayhemMode | NO | boolean | false | Pump mayhem mode |
| cashback | NO | boolean | false | Pump cashback |
Platform fee (1%) is charged automatically when buyAmount > 0, not configurable.
| Param | Required | Type | Default | Description |
|-------|----------|------|---------|-------------|
| desc | YES | string | - | Token description |
| image | YES | string | - | Image URL / base64 / data URI (≤5MB) |
| label | NO | string | "Meme" | Category: Meme, AI, Defi, Games, Infra, De-Sci, Social, Depin, Charity, Others |
| gasPrice | NO | string | null | Custom gas price (wei). Auto-fetched if not provided |
| model | NO | integer | 1 | 1 = MEV protection (bundle), 2 = fast mode |
| feePlan | NO | boolean | false | Fee plan toggle |
| webUrl | NO | string | "" | Website URL |
| twitterUrl | NO | string | "" | Twitter URL |
| telegramUrl | NO | string | "" | Telegram URL |
| tokenTaxInfo | NO | object | null | Token tax configuration (see below) |
| Param | Required | Type | Description |
|-------|----------|------|-------------|
| feeRate | YES | integer | Trading fee rate. Fixed options: 1, 3, 5, 10 (representing 1%-10%) |
| burnRate | YES | integer | Burn rate (0-100) |
| divideRate | YES | integer | Dividend distribution rate (0-100) |
| liquidityRate | YES | integer | Liquidity pool rate (0-100) |
| recipientRate | YES | integer | Recipient allocation rate (0-100) |
| minSharing | Conditional | long | Min token amount for dividend participation (in ether). Required when divideRate > 0. Format: d × 10^n (n≥5, 1≤d≤9) |
| recipientAddress | Conditional | string | Recipient address (0x...). Required when recipientRate > 0 |
Constraint: burnRate + divideRate + liquidityRate + recipientRate must equal 100.
Success:
{
"code": 200,
"msg": "success",
"data": {
"txHash": "transaction hash or signature",
"tokenAddress": "newly created token address",
"success": true
},
"success": true
}
On-chain execution failed:
{
"code": 200,
"msg": "success",
"data": {
"txHash": "transaction hash or signature",
"tokenAddress": null,
"success": false
},
"success": true
}
| Code | Message | Description | |------|---------|-------------| | 8004 | wrong_parameter | Missing or invalid required fields | | 8006 | insufficient_balance | Wallet balance below minimum | | 8060 | api_key_invalid | Invalid API Key | | 8062 | api_key_rate_limited | QPS limit exceeded | | 8106 | open_api_launch_chain_not_supported | Chain not supported (only sol/bsc) | | 8107 | open_api_launch_buy_amount_exceed | buyAmount exceeds max (SOL: 100, BSC: 20) | | 8108 | open_api_launch_failed | Node service call failed | | 9006 | wallet_not_exists | Wallet not found or not owned by current account |
/swap, /launch, /autoSell/*), confirm with the user: chain, token address, amount/percentage, buy or sell, and which wallet. Prefer an inline summary; do not block the user with multiple back-and-forth prompts once details are clear.
API Key = wallet access, no read-only key exists, IP whitelist recommended — and have them confirm once via AskUserQuestion. Subsequent writes in the same session skip this risk block and only confirm trade details for speed.chain must be one of sol/eth/bsc/baseisBuy must be boolean true or falseamount for buy: must be > 0; for sell: must be 1-100tip must be provided; SOL chain: 0.0001-0.1 (unit: SOL); EVM chains: 0.1-100 (unit: Gwei). If tip is outside the recommended range, must warn the user about potentially high cost and require explicit confirmation before proceedingmodel if provided must be 1 or 2priorityFee if provided only applies to Solana chainNEW, ALMOST, COMPLETED (uppercase). Reject any other value.sol, eth, bsc, base. Default sol.tokenAddress — only display newly appeared tokenstokenAddress set to avoid repeatscode == 200 with success == true means success; code == 300 is server error (inform user to retry later); code == 8060/8061 means stop immediately; code == 8062 means wait 2 seconds and retry.ca) must be provided. If missing, ask user for it.sol, eth, bsc, base. Default sol.securityInfo.honeyPot == true, display a prominent warning that this token is a honeypot and trading it is extremely risky.taxInfo.buy or taxInfo.sell > 5%, warn user about high tax rates.sol.tokenAddress to show per-wallet balance.Manage take-profit and stop-loss rules. When auto-sell is enabled, buying a token automatically creates pending sell orders based on these rules.
GET ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/autoSell/list
No parameters. Returns all rules for current user.
Response:
{
"code": 200,
"data": [
{
"id": 123,
"taskFlag": 0,
"pricePercent": 30,
"sellPercent": 100,
"isTrailing": 1,
"createTime": "2026-04-09T08:00:00.000+00:00"
}
],
"success": true
}
Fields:
taskFlag: 0 = stop-loss (止损), 1 = take-profit (止盈)pricePercent: trigger percentage (e.g. 30 = price drops/rises 30% from buy price)sellPercent: percentage of holdings to sell (0-100)isTrailing: 1 = trailing stop enabled, 0 = disabled. Only effective for stop-loss rules (taskFlag=0). When enabled, the stop-loss price automatically trails upward as token price rises, locking in profits.POST ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/autoSell/createOrUpdate
⚠️ This is a full replacement -- all existing rules are deleted and replaced with the provided list. Always include ALL desired rules (both new and existing) in the request.
{
"infos": [
{ "taskFlag": 1, "pricePercent": 100, "sellPercent": 50, "isTrailing": 0 },
{ "taskFlag": 0, "pricePercent": 30, "sellPercent": 100, "isTrailing": 1 }
]
}
Behavior notes:
isTrailing is ignored for take-profit rules (taskFlag=1) and always stored as 0.GET ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/autoSell/delete?ids=123,456
ids (required): comma-separated rule IDs to delete. Only deletes rules owned by current user.GET ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/autoSell/open
| Param | Required | Default | Description |
|-------|----------|---------|-------------|
| flag | yes | — | true to enable, false to disable auto-sell |
| tokenAddress | no | "" | If set, only close pending orders for this token |
| closeAll | no | false | If true, close ALL pending auto-sell orders |
Behavior notes:
closeAll=true removes all pending limit orders generated by auto-sell rules.tokenAddress and closeAll are only relevant when flag=false.Query token holder information including top holders, followed wallets, KOL wallets, and insider wallets.
GET ${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/holders/{type}
| Param | Type | Required | Description |
|-------|------|----------|-------------|
| type | path | yes | Holder type: top (top 20 holders), follow (followed wallets), kol (KOL wallets), insider (insider wallets) |
| mint | query | no | Token contract address |
| pair | query | no | Pool/pair address |
| wallet | query | no | Wallet address to filter |
| chain | query | no | Blockchain, default sol. Supports bsc, base, etc. |
Response fields (per holder):
address — Wallet addressname — Wallet name (only for followed wallets, null otherwise)holdAmount — Token amount heldholdPercent — Hold percentage (e.g. "39.16" = 39.16%)holdValueNative — Hold value in native token (SOL/BNB)holdValueUSD — Hold value in USDtags — Labels: NEW, SNIPER, BUNDLE, INSIDER, LPtradeCount / buyCount / sellCount — Trade statistics (nullable)profitNative / profitUSD / profitPercent — Profit data (nullable)avgBuyPrice / avgSellPrice — Average trade prices (nullable)tokenSourceType — Token source: 1 = bought, 2 = transferrednativeBalance — Native token balance of the walletBehavior notes:
mint or pair should be provided to get meaningful results.follow type returns holders from the user's followed wallet list — results depend on user's follow configuration.Trigger: Automatically execute once when the skill is first activated in a session. Run only once per session.
$XXYY_API_KEY is set in the environment.export XXYY_API_KEY=xxyy_ak_xxxxsol, eth, bsc, base) via List Wallets API. For each chain, pick the index-0 wallet as the default; if no wallet exists, show "N/A". Display:
修改默认钱包 {chain} {wallet name or address} to change defaultsWhen user says "修改默认钱包 {chain} {wallet name or address}":
If the user sends an action command (e.g., buy/sell/scan) before onboarding completes, silently finish the detection in the background and proceed to handle their command directly.
These rules apply to all three strategies below.
Trigger: User provides a token contract address with buy/sell intent (e.g., "买 0x... 0.1 BNB", "sell 50% of ...").
0x prefix → EVM chain. If the specific EVM chain (eth/bsc/base) cannot be determined, ask user. Base58 format → SOL.Trigger: User says "AI扫链", "AI scan", "auto scan", "smart scan", or "开始AI扫链".
Three tiers run in parallel each polling round. These are pre-validated filter parameters; users can modify them.
Tier A — NEW (freshly launched tokens):
{"topHp":"22,40","snipers":",6","insiderHp":",8","holder":"10,","mc":"8000,","oneLink":1,"createTime":"1,70"}
Feed type: NEW
Tier B — ALMOST (near graduation):
{"createTime":"1,120","dexPay":1,"mc":"13000,"}
Feed type: ALMOST
Tier C — COMPLETED (graduated tokens):
{"createTime":"1,240","topHp":"18,","holder":"300,","mc":"20000,160000"}
Feed type: COMPLETED
tokenAddress across all rounds and chains. Only display newly discovered tokens.For each new token found, show:
| Field | Source |
|-------|--------|
| Symbol | symbol |
| Chain | request chain |
| Price | priceUSD |
| Market Cap | marketCapUSD |
| Holders | holders |
| Dev Hold % | devHoldPercent |
| Platform + Progress | launchPlatform.name + launchPlatform.progress |
| Matched Tier | A / B / C |
After displaying new tokens, user can:
Trigger: User says "推文扫链", "tweet scan", "twitter scan", or "开始推文扫链".
@heyibinance, @cz_binance — recommended defaults. User can modify before or during scanning.
Every 5 seconds:
POST /feed/NEW?chain=bsc with body {"oneLink":1} to get new BSC tokens with social links.tokenAddress using seen_token_addresses set.hasLink == true:
a. Call GET /query?ca={tokenAddress}&chain=bsc to fetch full token details including linkInfo.
b. Check if linkInfo.x contains any monitored account handle (case-insensitive substring match).
c. Also deduplicate by linkInfo.x URL using seen_twitter_urls set.Display a status line during scanning:
[HH:MM:SS] Scanning BSC... (watching: @heyibinance, @cz_binance) #N
Where #N is the count of tokens scanned so far.
| Chain | Format | Example pattern |
|-------|--------|-----------------|
| SOL | Base58, 32-44 characters | 7xKX... |
| ETH / BSC / Base | 0x + 40 hex characters | 0x1a2B... |
https://solscan.io/tx/{txId}https://etherscan.io/tx/{txId}https://bscscan.com/tx/{txId}https://basescan.org/tx/{txId}| Code | Meaning | Scope |
|------|---------|-------|
| 200 | Success | Data query APIs (Feed, Token Query) |
| 300 | Server error — inform user to retry later | Data query APIs (Feed, Token Query) |
| 8060 | API Key invalid | All APIs |
| 8061 | API Key disabled | All APIs |
| 8062 | Rate limited | All APIs — data query: retry after 2s; trade: retry after 1s (except swap, see Execution Rules #5) |
| 8063 | IP not in whitelist — use get_ip to check current IP, update whitelist at https://www.xxyy.io/apikey | All APIs |
# Buy
curl -s -X POST "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/swap" \
-H "Authorization: Bearer $XXYY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"chain":"sol","walletAddress":"...","tokenAddress":"...","isBuy":true,"amount":0.1,"tip":0.0001}'
# Query Trade
curl -s "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/trade?txId=..." \
-H "Authorization: Bearer $XXYY_API_KEY"
# Feed - Scan newly launched tokens on SOL (with filters)
curl -s -X POST "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/feed/NEW?chain=sol" \
-H "Authorization: Bearer $XXYY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"mc":"10000,500000","holder":"50,","insiderHp":",50"}'
# Token Query
curl -s "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/query?ca=TOKEN_ADDRESS&chain=sol" \
-H "Authorization: Bearer $XXYY_API_KEY"
# List Wallets
curl -s "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/wallets?chain=sol" \
-H "Authorization: Bearer $XXYY_API_KEY"
# Wallet Info
curl -s "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/wallet/info?walletAddress=YOUR_WALLET&chain=sol" \
-H "Authorization: Bearer $XXYY_API_KEY"
# PNL Query
curl -s "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/pnl?walletAddress=YOUR_WALLET&tokenAddress=TOKEN_ADDRESS&chain=sol" \
-H "Authorization: Bearer $XXYY_API_KEY"
# Trade History
curl -s "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/trades?walletAddress=YOUR_WALLET&chain=sol&pageNum=1&pageSize=10" \
-H "Authorization: Bearer $XXYY_API_KEY"
# Get IP (exempt from IP whitelist)
curl -s "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/ip" \
-H "Authorization: Bearer $XXYY_API_KEY"
# KOL Buy List
curl -s "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/kol-buy-list?chain=sol" \
-H "Authorization: Bearer $XXYY_API_KEY"
# Tag Holder Buy List
curl -s "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/tag-holder-buy-list?chain=bsc" \
-H "Authorization: Bearer $XXYY_API_KEY"
# Label List (SOL only)
curl -s "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/label-list?chain=sol&labelType=AGENT_KOL" \
-H "Authorization: Bearer $XXYY_API_KEY"
# Signal List (SOL/BSC)
curl -s -X POST "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/signal-list?type=open-ai-trending&chain=sol" \
-H "Authorization: Bearer $XXYY_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
# Trending List (SOL/BSC)
curl -s -X POST "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/trending-list?chain=sol" \
-H "Authorization: Bearer $XXYY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"period": "5M"}'
# Launch Token - SOL (create only)
curl -s -X POST "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/sol/launch" \
-H "Authorization: Bearer $XXYY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"walletAddress":"<SOL_WALLET>","name":"My Token","symbol":"MTK","buyAmount":"0","solOptions":{"uri":"https://arweave.net/<metadata_id>","slippage":10000,"priorityFee":100000,"tipFee":100000,"model":1}}'
# Launch Token - SOL (create + buy 0.5 SOL)
curl -s -X POST "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/sol/launch" \
-H "Authorization: Bearer $XXYY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"walletAddress":"<SOL_WALLET>","name":"My Token","symbol":"MTK","buyAmount":"0.5","solOptions":{"uri":"https://arweave.net/<metadata_id>","slippage":10000,"priorityFee":100000,"tipFee":100000,"model":1,"cashback":true}}'
# Launch Token - BSC (create + buy 0.001 BNB)
curl -s -X POST "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/bsc/launch" \
-H "Authorization: Bearer $XXYY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"walletAddress":"<BSC_WALLET>","name":"Exchange the world","symbol":"ETW","buyAmount":"0.001","bscOptions":{"desc":"Exchange the world","image":"https://example.com/image.png","label":"Meme","gasPrice":"3000000000","model":1,"feePlan":false}}'
# Launch Token - BSC (with token tax)
curl -s -X POST "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/bsc/launch" \
-H "Authorization: Bearer $XXYY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"walletAddress":"<BSC_WALLET>","name":"Tax Token","symbol":"TAXT","buyAmount":"0.1","bscOptions":{"desc":"A token with tax","image":"https://example.com/image.png","label":"Defi","model":1,"tokenTaxInfo":{"feeRate":5,"burnRate":20,"divideRate":30,"liquidityRate":0,"recipientRate":50,"minSharing":100000,"recipientAddress":"0x..."}}}'
# Auto-Sell: List rules
curl -s "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/autoSell/list" \
-H "Authorization: Bearer $XXYY_API_KEY"
# Auto-Sell: Create rules (full replacement - include ALL desired rules)
curl -s -X POST "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/autoSell/createOrUpdate" \
-H "Authorization: Bearer $XXYY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"infos":[{"taskFlag":1,"pricePercent":100,"sellPercent":50,"isTrailing":0},{"taskFlag":0,"pricePercent":30,"sellPercent":100,"isTrailing":1}]}'
# Auto-Sell: Delete rules by ID
curl -s "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/autoSell/delete?ids=123,456" \
-H "Authorization: Bearer $XXYY_API_KEY"
# Auto-Sell: Enable
curl -s "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/autoSell/open?flag=true" \
-H "Authorization: Bearer $XXYY_API_KEY"
# Auto-Sell: Disable and close all pending orders
curl -s "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/autoSell/open?flag=false&closeAll=true" \
-H "Authorization: Bearer $XXYY_API_KEY"
# Holders: Top holders (SOL)
curl -s "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/holders/top?mint=<TOKEN_ADDRESS>&chain=sol" \
-H "Authorization: Bearer $XXYY_API_KEY"
# Holders: KOL holders (BSC, with pair)
curl -s "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/holders/kol?mint=<TOKEN_ADDRESS>&pair=<PAIR_ADDRESS>&chain=bsc" \
-H "Authorization: Bearer $XXYY_API_KEY"
# Holders: Followed wallets
curl -s "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/holders/follow?mint=<TOKEN_ADDRESS>&chain=sol" \
-H "Authorization: Bearer $XXYY_API_KEY"
# Holders: Insider wallets
curl -s "${XXYY_API_BASE_URL:-https://www.xxyy.io}/api/trade/open/api/holders/insider?mint=<TOKEN_ADDRESS>&chain=sol" \
-H "Authorization: Bearer $XXYY_API_KEY"
development
This skill should be used when the user asks to "buy token", "sell token", "swap token", "trade crypto", "check trade status", "query transaction", "scan tokens", "feed", "monitor chain", "query token", "token details", "check token safety", "list wallets", "show wallets", "my wallets", "AI scan", "AI扫链", "auto scan", "smart scan", "tweet scan", "推文扫链", "twitter scan", "onboarding", "get started", "check IP", "get IP", "IP whitelist", "查IP", "IP白名单", "launch token", "create token", "发币", "创建代币", "auto sell", "stop loss", "take profit", "trailing stop", "止盈止损", "移动止损", "holders", "top holders", "kol holders", "insider", "持仓", "持仓列表", or mentions trading on Solana/ETH/BSC/Base chains via XXYY. Enables on-chain token trading and data queries through the XXYY Open API.
development
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.
development
Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.
development
Run, watch, debug, and extend OpenClaw QA testing with qa-lab and qa-channel. Use when Codex needs to execute the repo-backed QA suite, inspect live QA artifacts, debug failing scenarios, add new QA scenarios, or explain the OpenClaw QA workflow. Prefer the live OpenAI lane with regular openai/gpt-5.4 in fast mode; do not use gpt-5.4-pro or gpt-5.4-mini unless the user explicitly overrides that policy.