{
  "schemaVersion": "1.0",
  "item": {
    "slug": "weex-trading-skills",
    "name": "Weex",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/bowen31337/weex-trading-skills",
    "canonicalUrl": "https://clawhub.ai/bowen31337/weex-trading-skills",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/weex-trading-skills",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=weex-trading-skills",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "scripts/weex_client.py",
      "references/api_reference.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/weex-trading-skills"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/weex-trading-skills",
    "agentPageUrl": "https://openagent3.xyz/skills/weex-trading-skills/agent",
    "manifestUrl": "https://openagent3.xyz/skills/weex-trading-skills/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/weex-trading-skills/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "WEEX Futures Trading 🔵",
        "body": "Open AI Agent Skill for USDT-margined perpetual futures trading on WEEX exchange. Up to 125x leverage.\n\nOpen Agent Skill: This skill is designed to work with any AI agent that supports bash/curl commands, including Claude, GPT, Gemini, LLaMA, Mistral, and other LLM-based agents."
      },
      {
        "title": "Features",
        "body": "📊 Futures Trading - USDT-M perpetual contracts up to 125x leverage\n💰 Account Management - Balance, positions, margin settings\n📈 Market Data - Tickers, order book, candlesticks, funding rates\n🎯 Advanced Orders - Trigger orders, TP/SL, conditional orders\n🤖 AI Integration - Log AI trading decisions\n🔌 Universal Compatibility - Works with any AI agent supporting shell commands"
      },
      {
        "title": "Environment Variables",
        "body": "VariableDescriptionRequiredWEEX_API_KEYAPI Key from WEEXYesWEEX_API_SECRETAPI SecretYesWEEX_PASSPHRASEAPI PassphraseYesWEEX_BASE_URLAPI base URLNo (default: https://api-contract.weex.com)"
      },
      {
        "title": "Authentication",
        "body": "API_KEY=\"${WEEX_API_KEY}\"\nSECRET=\"${WEEX_API_SECRET}\"\nPASSPHRASE=\"${WEEX_PASSPHRASE}\"\nBASE_URL=\"${WEEX_BASE_URL:-https://api-contract.weex.com}\"\n\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\n\n# Generate signature\ngenerate_signature() {\n  local method=\"$1\"\n  local path=\"$2\"\n  local body=\"$3\"\n  local message=\"${TIMESTAMP}${method}${path}${body}\"\n  echo -n \"$message\" | openssl dgst -sha256 -hmac \"$SECRET\" -binary | base64\n}"
      },
      {
        "title": "Get Server Time",
        "body": "curl -s \"${BASE_URL}/capi/v2/market/time\" | jq '.'"
      },
      {
        "title": "Get All Contracts Info",
        "body": "curl -s \"${BASE_URL}/capi/v2/market/contracts\" | jq '.data[] | {symbol: .symbol, baseCoin: .underlying_index, quoteCoin: .quote_currency, contractVal: .contract_val, minLeverage: .minLeverage, maxLeverage: .maxLeverage, tickSize: .tick_size, sizeIncrement: .size_increment}'"
      },
      {
        "title": "Get Single Contract Info",
        "body": "SYMBOL=\"cmt_btcusdt\"\n\ncurl -s \"${BASE_URL}/capi/v2/market/contracts?symbol=${SYMBOL}\" | jq '.data'"
      },
      {
        "title": "Get Ticker Price",
        "body": "SYMBOL=\"cmt_btcusdt\"\n\ncurl -s \"${BASE_URL}/capi/v2/market/ticker?symbol=${SYMBOL}\" | jq '.data | {symbol: .symbol, last: .last, high: .high_24h, low: .low_24h, volume: .volume_24h, markPrice: .markPrice}'"
      },
      {
        "title": "Get All Tickers",
        "body": "curl -s \"${BASE_URL}/capi/v2/market/tickers\" | jq '.data[] | {symbol: .symbol, last: .last, change: .priceChangePercent, volume: .volume_24h}'"
      },
      {
        "title": "Get Order Book",
        "body": "SYMBOL=\"cmt_btcusdt\"\n\ncurl -s \"${BASE_URL}/capi/v2/market/depth?symbol=${SYMBOL}&limit=15\" | jq '.data | {asks: .asks[:5], bids: .bids[:5]}'"
      },
      {
        "title": "Get Recent Trades",
        "body": "SYMBOL=\"cmt_btcusdt\"\nLIMIT=\"50\"\n\ncurl -s \"${BASE_URL}/capi/v2/market/trades?symbol=${SYMBOL}&limit=${LIMIT}\" | jq '.data[] | {time: .time, price: .price, size: .size, side: (if .isBuyerMaker then \"sell\" else \"buy\" end)}'"
      },
      {
        "title": "Get Candlestick Data",
        "body": "SYMBOL=\"cmt_btcusdt\"\nGRANULARITY=\"1h\"    # 1m, 5m, 15m, 30m, 1h, 4h, 12h, 1d, 1w\nLIMIT=\"100\"\n\ncurl -s \"${BASE_URL}/capi/v2/market/candles?symbol=${SYMBOL}&granularity=${GRANULARITY}&limit=${LIMIT}\" | jq '.data[] | {timestamp: .[0], open: .[1], high: .[2], low: .[3], close: .[4], volume: .[5]}'"
      },
      {
        "title": "Get Index Price",
        "body": "SYMBOL=\"cmt_btcusdt\"\n\ncurl -s \"${BASE_URL}/capi/v2/market/index?symbol=${SYMBOL}\" | jq '.data | {symbol: .symbol, index: .index, timestamp: .timestamp}'"
      },
      {
        "title": "Get Open Interest",
        "body": "SYMBOL=\"cmt_btcusdt\"\n\ncurl -s \"${BASE_URL}/capi/v2/market/open_interest?symbol=${SYMBOL}\" | jq '.data[] | {symbol: .symbol, openInterest: .base_volume, value: .target_volume}'"
      },
      {
        "title": "Get Current Funding Rate",
        "body": "SYMBOL=\"cmt_btcusdt\"\n\ncurl -s \"${BASE_URL}/capi/v2/market/currentFundRate?symbol=${SYMBOL}\" | jq '.data[] | {symbol: .symbol, rate: .fundingRate, nextSettlement: .timestamp}'"
      },
      {
        "title": "Get Historical Funding Rates",
        "body": "SYMBOL=\"cmt_btcusdt\"\nLIMIT=\"20\"\n\ncurl -s \"${BASE_URL}/capi/v2/market/getHistoryFundRate?symbol=${SYMBOL}&limit=${LIMIT}\" | jq '.data[] | {symbol: .symbol, rate: .fundingRate, settleTime: .fundingTime}'"
      },
      {
        "title": "Get Next Funding Time",
        "body": "SYMBOL=\"cmt_btcusdt\"\n\ncurl -s \"${BASE_URL}/capi/v2/market/funding_time?symbol=${SYMBOL}\" | jq '.data | {symbol: .symbol, nextFundingTime: .fundingTime}'"
      },
      {
        "title": "Get Account Assets",
        "body": "PATH_URL=\"/capi/v2/account/assets\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"GET\" \"$PATH_URL\" \"\")\n\ncurl -s \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" | jq '.data[] | {coin: .coinName, available: .available, frozen: .frozen, equity: .equity, unrealizedPnl: .unrealizePnl}'"
      },
      {
        "title": "Get Account List with Settings",
        "body": "PATH_URL=\"/capi/v2/account/getAccounts\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"GET\" \"$PATH_URL\" \"\")\n\ncurl -s \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" | jq '.data'"
      },
      {
        "title": "Get Single Account by Coin",
        "body": "COIN=\"USDT\"\n\nPATH_URL=\"/capi/v2/account/getAccount?coin=${COIN}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"GET\" \"$PATH_URL\" \"\")\n\ncurl -s \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" | jq '.data'"
      },
      {
        "title": "Get User Settings",
        "body": "SYMBOL=\"cmt_btcusdt\"\n\nPATH_URL=\"/capi/v2/account/settings?symbol=${SYMBOL}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"GET\" \"$PATH_URL\" \"\")\n\ncurl -s \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" | jq '.data'"
      },
      {
        "title": "Change Leverage",
        "body": "SYMBOL=\"cmt_btcusdt\"\nLEVERAGE=\"20\"\nMARGIN_MODE=\"1\"        # 1=Cross, 3=Isolated\n\nPATH_URL=\"/capi/v2/account/leverage\"\nBODY=\"{\\\"symbol\\\":\\\"${SYMBOL}\\\",\\\"marginMode\\\":${MARGIN_MODE},\\\"longLeverage\\\":\\\"${LEVERAGE}\\\",\\\"shortLeverage\\\":\\\"${LEVERAGE}\\\"}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"POST\" \"$PATH_URL\" \"$BODY\")\n\ncurl -s -X POST \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"$BODY\" | jq '.'"
      },
      {
        "title": "Adjust Position Margin (Isolated Only)",
        "body": "POSITION_ID=\"123456789\"      # Isolated position ID\nAMOUNT=\"100\"                 # Positive to add, negative to reduce\n\nPATH_URL=\"/capi/v2/account/adjustMargin\"\nBODY=\"{\\\"coinId\\\":2,\\\"isolatedPositionId\\\":${POSITION_ID},\\\"collateralAmount\\\":\\\"${AMOUNT}\\\"}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"POST\" \"$PATH_URL\" \"$BODY\")\n\ncurl -s -X POST \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"$BODY\" | jq '.'"
      },
      {
        "title": "Auto Margin Top-Up (Isolated Only)",
        "body": "POSITION_ID=\"123456789\"      # Isolated position ID\nAUTO_APPEND=\"true\"           # true to enable, false to disable\n\nPATH_URL=\"/capi/v2/account/modifyAutoAppendMargin\"\nBODY=\"{\\\"positionId\\\":${POSITION_ID},\\\"autoAppendMargin\\\":${AUTO_APPEND}}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"POST\" \"$PATH_URL\" \"$BODY\")\n\ncurl -s -X POST \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"$BODY\" | jq '.'"
      },
      {
        "title": "Get Account Bill History",
        "body": "COIN=\"USDT\"\nLIMIT=\"20\"\n\nPATH_URL=\"/capi/v2/account/bills\"\nBODY=\"{\\\"coin\\\":\\\"${COIN}\\\",\\\"limit\\\":${LIMIT}}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"POST\" \"$PATH_URL\" \"$BODY\")\n\ncurl -s -X POST \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"$BODY\" | jq '.data'"
      },
      {
        "title": "Get All Positions",
        "body": "PATH_URL=\"/capi/v2/account/position/allPosition\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"GET\" \"$PATH_URL\" \"\")\n\ncurl -s \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" | jq '.data[] | select(.size != \"0\") | {symbol: .symbol, side: .side, size: .size, leverage: .leverage, unrealizedPnl: .unrealizePnl, entryPrice: .avg_cost}'"
      },
      {
        "title": "Get Single Position",
        "body": "SYMBOL=\"cmt_btcusdt\"\n\nPATH_URL=\"/capi/v2/account/position/singlePosition?symbol=${SYMBOL}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"GET\" \"$PATH_URL\" \"\")\n\ncurl -s \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" | jq '.data[] | {symbol: .symbol, side: .side, size: .size, leverage: .leverage, unrealizedPnl: .unrealizePnl, entryPrice: .avg_cost, liquidationPrice: .liq_price}'"
      },
      {
        "title": "Change Margin Mode",
        "body": "SYMBOL=\"cmt_btcusdt\"\nMARGIN_MODE=\"1\"        # 1=Cross, 3=Isolated\n\nPATH_URL=\"/capi/v2/account/position/changeHoldModel\"\nBODY=\"{\\\"symbol\\\":\\\"${SYMBOL}\\\",\\\"marginMode\\\":${MARGIN_MODE},\\\"separatedMode\\\":1}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"POST\" \"$PATH_URL\" \"$BODY\")\n\ncurl -s -X POST \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"$BODY\" | jq '.'"
      },
      {
        "title": "Place Market Order",
        "body": "SYMBOL=\"cmt_btcusdt\"\nSIZE=\"10\"              # Quantity in contracts\nTYPE=\"1\"               # 1=Open Long, 2=Open Short, 3=Close Long, 4=Close Short\nCLIENT_OID=\"order_$(date +%s)\"\n\nPATH_URL=\"/capi/v2/order/placeOrder\"\nBODY=\"{\\\"symbol\\\":\\\"${SYMBOL}\\\",\\\"client_oid\\\":\\\"${CLIENT_OID}\\\",\\\"size\\\":\\\"${SIZE}\\\",\\\"type\\\":\\\"${TYPE}\\\",\\\"order_type\\\":\\\"0\\\",\\\"match_price\\\":\\\"1\\\",\\\"price\\\":\\\"0\\\"}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"POST\" \"$PATH_URL\" \"$BODY\")\n\ncurl -s -X POST \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"$BODY\" | jq '.'"
      },
      {
        "title": "Place Limit Order",
        "body": "SYMBOL=\"cmt_btcusdt\"\nSIZE=\"10\"\nTYPE=\"1\"               # 1=Open Long\nPRICE=\"90000\"          # Limit price\nORDER_TYPE=\"0\"         # 0=Normal, 1=Post-only, 2=FOK, 3=IOC\nCLIENT_OID=\"limit_$(date +%s)\"\n\nPATH_URL=\"/capi/v2/order/placeOrder\"\nBODY=\"{\\\"symbol\\\":\\\"${SYMBOL}\\\",\\\"client_oid\\\":\\\"${CLIENT_OID}\\\",\\\"size\\\":\\\"${SIZE}\\\",\\\"type\\\":\\\"${TYPE}\\\",\\\"order_type\\\":\\\"${ORDER_TYPE}\\\",\\\"match_price\\\":\\\"0\\\",\\\"price\\\":\\\"${PRICE}\\\"}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"POST\" \"$PATH_URL\" \"$BODY\")\n\ncurl -s -X POST \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"$BODY\" | jq '.'"
      },
      {
        "title": "Get Open Orders",
        "body": "PATH_URL=\"/capi/v2/order/current\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"GET\" \"$PATH_URL\" \"\")\n\ncurl -s \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" | jq '.data[] | {orderId: .order_id, symbol: .symbol, side: .type, price: .price, size: .size, status: .status}'"
      },
      {
        "title": "Get Order Details",
        "body": "ORDER_ID=\"1234567890\"\n\nPATH_URL=\"/capi/v2/order/detail?orderId=${ORDER_ID}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"GET\" \"$PATH_URL\" \"\")\n\ncurl -s \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" | jq '.data'"
      },
      {
        "title": "Get Order History",
        "body": "SYMBOL=\"cmt_btcusdt\"\nLIMIT=\"50\"\n\nPATH_URL=\"/capi/v2/order/history?symbol=${SYMBOL}&limit=${LIMIT}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"GET\" \"$PATH_URL\" \"\")\n\ncurl -s \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" | jq '.data[] | {orderId: .order_id, symbol: .symbol, side: .type, price: .price, size: .size, filledSize: .filled_qty, status: .status}'"
      },
      {
        "title": "Get Trade Fills",
        "body": "SYMBOL=\"cmt_btcusdt\"\nLIMIT=\"50\"\n\nPATH_URL=\"/capi/v2/order/fills?symbol=${SYMBOL}&limit=${LIMIT}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"GET\" \"$PATH_URL\" \"\")\n\ncurl -s \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" | jq '.data[] | {tradeId: .trade_id, orderId: .order_id, symbol: .symbol, price: .price, size: .size, fee: .fee, time: .created_at}'"
      },
      {
        "title": "Cancel Order",
        "body": "ORDER_ID=\"1234567890\"\n\nPATH_URL=\"/capi/v2/order/cancel_order\"\nBODY=\"{\\\"orderId\\\":\\\"${ORDER_ID}\\\"}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"POST\" \"$PATH_URL\" \"$BODY\")\n\ncurl -s -X POST \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"$BODY\" | jq '.'"
      },
      {
        "title": "Cancel All Orders",
        "body": "SYMBOL=\"cmt_btcusdt\"    # Optional: omit to cancel all\n\nPATH_URL=\"/capi/v2/order/cancelAllOrders\"\nBODY=\"{\\\"symbol\\\":\\\"${SYMBOL}\\\"}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"POST\" \"$PATH_URL\" \"$BODY\")\n\ncurl -s -X POST \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"$BODY\" | jq '.'"
      },
      {
        "title": "Close All Positions",
        "body": "PATH_URL=\"/capi/v2/order/closePositions\"\nBODY=\"{}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"POST\" \"$PATH_URL\" \"$BODY\")\n\ncurl -s -X POST \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"$BODY\" | jq '.'"
      },
      {
        "title": "Place Trigger Order (Stop-Loss / Take-Profit)",
        "body": "SYMBOL=\"cmt_btcusdt\"\nSIZE=\"10\"\nTYPE=\"1\"               # 1=Open Long, 2=Open Short, 3=Close Long, 4=Close Short\nTRIGGER_PRICE=\"95000\"  # Price that triggers the order\nEXECUTE_PRICE=\"0\"      # 0 for market, or limit price\nTRIGGER_TYPE=\"1\"       # 1=Fill price, 2=Mark price, 3=Index price\nCLIENT_OID=\"trigger_$(date +%s)\"\n\nPATH_URL=\"/capi/v2/order/plan_order\"\nBODY=\"{\\\"symbol\\\":\\\"${SYMBOL}\\\",\\\"client_oid\\\":\\\"${CLIENT_OID}\\\",\\\"size\\\":\\\"${SIZE}\\\",\\\"type\\\":\\\"${TYPE}\\\",\\\"trigger_price\\\":\\\"${TRIGGER_PRICE}\\\",\\\"execute_price\\\":\\\"${EXECUTE_PRICE}\\\",\\\"trend_side\\\":\\\"1\\\",\\\"trigger_type\\\":\\\"${TRIGGER_TYPE}\\\"}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"POST\" \"$PATH_URL\" \"$BODY\")\n\ncurl -s -X POST \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"$BODY\" | jq '.'"
      },
      {
        "title": "Get Current Trigger Orders",
        "body": "SYMBOL=\"cmt_btcusdt\"\n\nPATH_URL=\"/capi/v2/order/currentPlan?symbol=${SYMBOL}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"GET\" \"$PATH_URL\" \"\")\n\ncurl -s \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" | jq '.data[] | {orderId: .order_id, symbol: .symbol, triggerPrice: .trigger_price, size: .size, type: .type}'"
      },
      {
        "title": "Get Trigger Order History",
        "body": "SYMBOL=\"cmt_btcusdt\"\nLIMIT=\"50\"\n\nPATH_URL=\"/capi/v2/order/historyPlan?symbol=${SYMBOL}&limit=${LIMIT}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"GET\" \"$PATH_URL\" \"\")\n\ncurl -s \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" | jq '.data[] | {orderId: .order_id, symbol: .symbol, triggerPrice: .trigger_price, status: .status}'"
      },
      {
        "title": "Cancel Trigger Order",
        "body": "ORDER_ID=\"1234567890\"\n\nPATH_URL=\"/capi/v2/order/cancel_plan\"\nBODY=\"{\\\"orderId\\\":\\\"${ORDER_ID}\\\"}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"POST\" \"$PATH_URL\" \"$BODY\")\n\ncurl -s -X POST \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"$BODY\" | jq '.'"
      },
      {
        "title": "Place TP/SL Order",
        "body": "SYMBOL=\"cmt_btcusdt\"\nSIDE=\"1\"               # 1=Long position, 2=Short position\nTP_PRICE=\"100000\"      # Take profit trigger price\nSL_PRICE=\"85000\"       # Stop loss trigger price\nTP_SIZE=\"10\"           # Take profit size (0 for entire position)\nSL_SIZE=\"10\"           # Stop loss size (0 for entire position)\n\nPATH_URL=\"/capi/v2/order/placeTpSlOrder\"\nBODY=\"{\\\"symbol\\\":\\\"${SYMBOL}\\\",\\\"side\\\":\\\"${SIDE}\\\",\\\"tp_trigger_price\\\":\\\"${TP_PRICE}\\\",\\\"sl_trigger_price\\\":\\\"${SL_PRICE}\\\",\\\"tp_size\\\":\\\"${TP_SIZE}\\\",\\\"sl_size\\\":\\\"${SL_SIZE}\\\"}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"POST\" \"$PATH_URL\" \"$BODY\")\n\ncurl -s -X POST \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"$BODY\" | jq '.'"
      },
      {
        "title": "Modify TP/SL Order",
        "body": "SYMBOL=\"cmt_btcusdt\"\nSIDE=\"1\"               # 1=Long position, 2=Short position\nTP_PRICE=\"105000\"      # New take profit price\nSL_PRICE=\"82000\"       # New stop loss price\n\nPATH_URL=\"/capi/v2/order/modifyTpSlOrder\"\nBODY=\"{\\\"symbol\\\":\\\"${SYMBOL}\\\",\\\"side\\\":\\\"${SIDE}\\\",\\\"tp_trigger_price\\\":\\\"${TP_PRICE}\\\",\\\"sl_trigger_price\\\":\\\"${SL_PRICE}\\\"}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"POST\" \"$PATH_URL\" \"$BODY\")\n\ncurl -s -X POST \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"$BODY\" | jq '.'"
      },
      {
        "title": "Upload AI Trading Log",
        "body": "AI_LOG=\"Trading decision: Buy BTC based on momentum indicators\"\nORDER_ID=\"1234567890\"\n\nPATH_URL=\"/capi/v2/order/uploadAiLog\"\nBODY=\"{\\\"orderId\\\":\\\"${ORDER_ID}\\\",\\\"aiLog\\\":\\\"${AI_LOG}\\\"}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"POST\" \"$PATH_URL\" \"$BODY\")\n\ncurl -s -X POST \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"$BODY\" | jq '.'"
      },
      {
        "title": "Order Types",
        "body": "typeDescription1Open Long (buy to open)2Open Short (sell to open)3Close Long (sell to close)4Close Short (buy to close)"
      },
      {
        "title": "Execution Types",
        "body": "order_typeDescription0Normal order1Post-only (maker only)2FOK (fill or kill)3IOC (immediate or cancel)"
      },
      {
        "title": "Price Types",
        "body": "match_priceDescription0Limit order1Market order"
      },
      {
        "title": "Margin Modes",
        "body": "marginModeDescription1Cross margin3Isolated margin"
      },
      {
        "title": "Trigger Types",
        "body": "trigger_typeDescription1Fill price (last trade price)2Mark price3Index price"
      },
      {
        "title": "Popular Trading Pairs",
        "body": "PairDescriptioncmt_btcusdtBitcoin / USDTcmt_ethusdtEthereum / USDTcmt_solusdtSolana / USDTcmt_xrpusdtXRP / USDTcmt_dogeusdtDogecoin / USDTcmt_bnbusdtBNB / USDT"
      },
      {
        "title": "Safety Rules",
        "body": "ALWAYS display order details before execution\nVERIFY trading pair and quantity\nCHECK account balance before trading\nWARN about leverage risks (up to 125x)\nNEVER execute without user confirmation\nCONFIRM position closure before executing"
      },
      {
        "title": "Error Codes",
        "body": "CodeDescriptionSolution00000Success-40001Invalid parameterCheck parameter format40101Invalid API key/signatureVerify credentials and timestamp40301IP not whitelistedAdd IP to whitelist42901Rate limit exceededReduce request frequency50001Internal errorRetry after delay"
      },
      {
        "title": "Rate Limits",
        "body": "CategoryIP LimitUID LimitMarket Data20 req/secN/AAccount Info10 req/sec10 req/secOrder Placement10 req/sec10 req/sec"
      },
      {
        "title": "Additional Resources",
        "body": "WEEX\nBase URL: https://api-contract.weex.com\nAPI Reference"
      }
    ],
    "body": "WEEX Futures Trading 🔵\n\nOpen AI Agent Skill for USDT-margined perpetual futures trading on WEEX exchange. Up to 125x leverage.\n\nOpen Agent Skill: This skill is designed to work with any AI agent that supports bash/curl commands, including Claude, GPT, Gemini, LLaMA, Mistral, and other LLM-based agents.\n\nFeatures\n📊 Futures Trading - USDT-M perpetual contracts up to 125x leverage\n💰 Account Management - Balance, positions, margin settings\n📈 Market Data - Tickers, order book, candlesticks, funding rates\n🎯 Advanced Orders - Trigger orders, TP/SL, conditional orders\n🤖 AI Integration - Log AI trading decisions\n🔌 Universal Compatibility - Works with any AI agent supporting shell commands\nEnvironment Variables\nVariable\tDescription\tRequired\nWEEX_API_KEY\tAPI Key from WEEX\tYes\nWEEX_API_SECRET\tAPI Secret\tYes\nWEEX_PASSPHRASE\tAPI Passphrase\tYes\nWEEX_BASE_URL\tAPI base URL\tNo (default: https://api-contract.weex.com)\nAuthentication\nAPI_KEY=\"${WEEX_API_KEY}\"\nSECRET=\"${WEEX_API_SECRET}\"\nPASSPHRASE=\"${WEEX_PASSPHRASE}\"\nBASE_URL=\"${WEEX_BASE_URL:-https://api-contract.weex.com}\"\n\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\n\n# Generate signature\ngenerate_signature() {\n  local method=\"$1\"\n  local path=\"$2\"\n  local body=\"$3\"\n  local message=\"${TIMESTAMP}${method}${path}${body}\"\n  echo -n \"$message\" | openssl dgst -sha256 -hmac \"$SECRET\" -binary | base64\n}\n\nMarket Data Endpoints (No Auth)\nGet Server Time\ncurl -s \"${BASE_URL}/capi/v2/market/time\" | jq '.'\n\nGet All Contracts Info\ncurl -s \"${BASE_URL}/capi/v2/market/contracts\" | jq '.data[] | {symbol: .symbol, baseCoin: .underlying_index, quoteCoin: .quote_currency, contractVal: .contract_val, minLeverage: .minLeverage, maxLeverage: .maxLeverage, tickSize: .tick_size, sizeIncrement: .size_increment}'\n\nGet Single Contract Info\nSYMBOL=\"cmt_btcusdt\"\n\ncurl -s \"${BASE_URL}/capi/v2/market/contracts?symbol=${SYMBOL}\" | jq '.data'\n\nGet Ticker Price\nSYMBOL=\"cmt_btcusdt\"\n\ncurl -s \"${BASE_URL}/capi/v2/market/ticker?symbol=${SYMBOL}\" | jq '.data | {symbol: .symbol, last: .last, high: .high_24h, low: .low_24h, volume: .volume_24h, markPrice: .markPrice}'\n\nGet All Tickers\ncurl -s \"${BASE_URL}/capi/v2/market/tickers\" | jq '.data[] | {symbol: .symbol, last: .last, change: .priceChangePercent, volume: .volume_24h}'\n\nGet Order Book\nSYMBOL=\"cmt_btcusdt\"\n\ncurl -s \"${BASE_URL}/capi/v2/market/depth?symbol=${SYMBOL}&limit=15\" | jq '.data | {asks: .asks[:5], bids: .bids[:5]}'\n\nGet Recent Trades\nSYMBOL=\"cmt_btcusdt\"\nLIMIT=\"50\"\n\ncurl -s \"${BASE_URL}/capi/v2/market/trades?symbol=${SYMBOL}&limit=${LIMIT}\" | jq '.data[] | {time: .time, price: .price, size: .size, side: (if .isBuyerMaker then \"sell\" else \"buy\" end)}'\n\nGet Candlestick Data\nSYMBOL=\"cmt_btcusdt\"\nGRANULARITY=\"1h\"    # 1m, 5m, 15m, 30m, 1h, 4h, 12h, 1d, 1w\nLIMIT=\"100\"\n\ncurl -s \"${BASE_URL}/capi/v2/market/candles?symbol=${SYMBOL}&granularity=${GRANULARITY}&limit=${LIMIT}\" | jq '.data[] | {timestamp: .[0], open: .[1], high: .[2], low: .[3], close: .[4], volume: .[5]}'\n\nGet Index Price\nSYMBOL=\"cmt_btcusdt\"\n\ncurl -s \"${BASE_URL}/capi/v2/market/index?symbol=${SYMBOL}\" | jq '.data | {symbol: .symbol, index: .index, timestamp: .timestamp}'\n\nGet Open Interest\nSYMBOL=\"cmt_btcusdt\"\n\ncurl -s \"${BASE_URL}/capi/v2/market/open_interest?symbol=${SYMBOL}\" | jq '.data[] | {symbol: .symbol, openInterest: .base_volume, value: .target_volume}'\n\nGet Current Funding Rate\nSYMBOL=\"cmt_btcusdt\"\n\ncurl -s \"${BASE_URL}/capi/v2/market/currentFundRate?symbol=${SYMBOL}\" | jq '.data[] | {symbol: .symbol, rate: .fundingRate, nextSettlement: .timestamp}'\n\nGet Historical Funding Rates\nSYMBOL=\"cmt_btcusdt\"\nLIMIT=\"20\"\n\ncurl -s \"${BASE_URL}/capi/v2/market/getHistoryFundRate?symbol=${SYMBOL}&limit=${LIMIT}\" | jq '.data[] | {symbol: .symbol, rate: .fundingRate, settleTime: .fundingTime}'\n\nGet Next Funding Time\nSYMBOL=\"cmt_btcusdt\"\n\ncurl -s \"${BASE_URL}/capi/v2/market/funding_time?symbol=${SYMBOL}\" | jq '.data | {symbol: .symbol, nextFundingTime: .fundingTime}'\n\nAccount Endpoints (Auth Required)\nGet Account Assets\nPATH_URL=\"/capi/v2/account/assets\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"GET\" \"$PATH_URL\" \"\")\n\ncurl -s \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" | jq '.data[] | {coin: .coinName, available: .available, frozen: .frozen, equity: .equity, unrealizedPnl: .unrealizePnl}'\n\nGet Account List with Settings\nPATH_URL=\"/capi/v2/account/getAccounts\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"GET\" \"$PATH_URL\" \"\")\n\ncurl -s \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" | jq '.data'\n\nGet Single Account by Coin\nCOIN=\"USDT\"\n\nPATH_URL=\"/capi/v2/account/getAccount?coin=${COIN}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"GET\" \"$PATH_URL\" \"\")\n\ncurl -s \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" | jq '.data'\n\nGet User Settings\nSYMBOL=\"cmt_btcusdt\"\n\nPATH_URL=\"/capi/v2/account/settings?symbol=${SYMBOL}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"GET\" \"$PATH_URL\" \"\")\n\ncurl -s \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" | jq '.data'\n\nChange Leverage\nSYMBOL=\"cmt_btcusdt\"\nLEVERAGE=\"20\"\nMARGIN_MODE=\"1\"        # 1=Cross, 3=Isolated\n\nPATH_URL=\"/capi/v2/account/leverage\"\nBODY=\"{\\\"symbol\\\":\\\"${SYMBOL}\\\",\\\"marginMode\\\":${MARGIN_MODE},\\\"longLeverage\\\":\\\"${LEVERAGE}\\\",\\\"shortLeverage\\\":\\\"${LEVERAGE}\\\"}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"POST\" \"$PATH_URL\" \"$BODY\")\n\ncurl -s -X POST \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"$BODY\" | jq '.'\n\nAdjust Position Margin (Isolated Only)\nPOSITION_ID=\"123456789\"      # Isolated position ID\nAMOUNT=\"100\"                 # Positive to add, negative to reduce\n\nPATH_URL=\"/capi/v2/account/adjustMargin\"\nBODY=\"{\\\"coinId\\\":2,\\\"isolatedPositionId\\\":${POSITION_ID},\\\"collateralAmount\\\":\\\"${AMOUNT}\\\"}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"POST\" \"$PATH_URL\" \"$BODY\")\n\ncurl -s -X POST \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"$BODY\" | jq '.'\n\nAuto Margin Top-Up (Isolated Only)\nPOSITION_ID=\"123456789\"      # Isolated position ID\nAUTO_APPEND=\"true\"           # true to enable, false to disable\n\nPATH_URL=\"/capi/v2/account/modifyAutoAppendMargin\"\nBODY=\"{\\\"positionId\\\":${POSITION_ID},\\\"autoAppendMargin\\\":${AUTO_APPEND}}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"POST\" \"$PATH_URL\" \"$BODY\")\n\ncurl -s -X POST \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"$BODY\" | jq '.'\n\nGet Account Bill History\nCOIN=\"USDT\"\nLIMIT=\"20\"\n\nPATH_URL=\"/capi/v2/account/bills\"\nBODY=\"{\\\"coin\\\":\\\"${COIN}\\\",\\\"limit\\\":${LIMIT}}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"POST\" \"$PATH_URL\" \"$BODY\")\n\ncurl -s -X POST \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"$BODY\" | jq '.data'\n\nPosition Endpoints (Auth Required)\nGet All Positions\nPATH_URL=\"/capi/v2/account/position/allPosition\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"GET\" \"$PATH_URL\" \"\")\n\ncurl -s \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" | jq '.data[] | select(.size != \"0\") | {symbol: .symbol, side: .side, size: .size, leverage: .leverage, unrealizedPnl: .unrealizePnl, entryPrice: .avg_cost}'\n\nGet Single Position\nSYMBOL=\"cmt_btcusdt\"\n\nPATH_URL=\"/capi/v2/account/position/singlePosition?symbol=${SYMBOL}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"GET\" \"$PATH_URL\" \"\")\n\ncurl -s \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" | jq '.data[] | {symbol: .symbol, side: .side, size: .size, leverage: .leverage, unrealizedPnl: .unrealizePnl, entryPrice: .avg_cost, liquidationPrice: .liq_price}'\n\nChange Margin Mode\nSYMBOL=\"cmt_btcusdt\"\nMARGIN_MODE=\"1\"        # 1=Cross, 3=Isolated\n\nPATH_URL=\"/capi/v2/account/position/changeHoldModel\"\nBODY=\"{\\\"symbol\\\":\\\"${SYMBOL}\\\",\\\"marginMode\\\":${MARGIN_MODE},\\\"separatedMode\\\":1}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"POST\" \"$PATH_URL\" \"$BODY\")\n\ncurl -s -X POST \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"$BODY\" | jq '.'\n\nOrder Endpoints (Auth Required)\nPlace Market Order\nSYMBOL=\"cmt_btcusdt\"\nSIZE=\"10\"              # Quantity in contracts\nTYPE=\"1\"               # 1=Open Long, 2=Open Short, 3=Close Long, 4=Close Short\nCLIENT_OID=\"order_$(date +%s)\"\n\nPATH_URL=\"/capi/v2/order/placeOrder\"\nBODY=\"{\\\"symbol\\\":\\\"${SYMBOL}\\\",\\\"client_oid\\\":\\\"${CLIENT_OID}\\\",\\\"size\\\":\\\"${SIZE}\\\",\\\"type\\\":\\\"${TYPE}\\\",\\\"order_type\\\":\\\"0\\\",\\\"match_price\\\":\\\"1\\\",\\\"price\\\":\\\"0\\\"}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"POST\" \"$PATH_URL\" \"$BODY\")\n\ncurl -s -X POST \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"$BODY\" | jq '.'\n\nPlace Limit Order\nSYMBOL=\"cmt_btcusdt\"\nSIZE=\"10\"\nTYPE=\"1\"               # 1=Open Long\nPRICE=\"90000\"          # Limit price\nORDER_TYPE=\"0\"         # 0=Normal, 1=Post-only, 2=FOK, 3=IOC\nCLIENT_OID=\"limit_$(date +%s)\"\n\nPATH_URL=\"/capi/v2/order/placeOrder\"\nBODY=\"{\\\"symbol\\\":\\\"${SYMBOL}\\\",\\\"client_oid\\\":\\\"${CLIENT_OID}\\\",\\\"size\\\":\\\"${SIZE}\\\",\\\"type\\\":\\\"${TYPE}\\\",\\\"order_type\\\":\\\"${ORDER_TYPE}\\\",\\\"match_price\\\":\\\"0\\\",\\\"price\\\":\\\"${PRICE}\\\"}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"POST\" \"$PATH_URL\" \"$BODY\")\n\ncurl -s -X POST \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"$BODY\" | jq '.'\n\nGet Open Orders\nPATH_URL=\"/capi/v2/order/current\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"GET\" \"$PATH_URL\" \"\")\n\ncurl -s \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" | jq '.data[] | {orderId: .order_id, symbol: .symbol, side: .type, price: .price, size: .size, status: .status}'\n\nGet Order Details\nORDER_ID=\"1234567890\"\n\nPATH_URL=\"/capi/v2/order/detail?orderId=${ORDER_ID}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"GET\" \"$PATH_URL\" \"\")\n\ncurl -s \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" | jq '.data'\n\nGet Order History\nSYMBOL=\"cmt_btcusdt\"\nLIMIT=\"50\"\n\nPATH_URL=\"/capi/v2/order/history?symbol=${SYMBOL}&limit=${LIMIT}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"GET\" \"$PATH_URL\" \"\")\n\ncurl -s \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" | jq '.data[] | {orderId: .order_id, symbol: .symbol, side: .type, price: .price, size: .size, filledSize: .filled_qty, status: .status}'\n\nGet Trade Fills\nSYMBOL=\"cmt_btcusdt\"\nLIMIT=\"50\"\n\nPATH_URL=\"/capi/v2/order/fills?symbol=${SYMBOL}&limit=${LIMIT}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"GET\" \"$PATH_URL\" \"\")\n\ncurl -s \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" | jq '.data[] | {tradeId: .trade_id, orderId: .order_id, symbol: .symbol, price: .price, size: .size, fee: .fee, time: .created_at}'\n\nCancel Order\nORDER_ID=\"1234567890\"\n\nPATH_URL=\"/capi/v2/order/cancel_order\"\nBODY=\"{\\\"orderId\\\":\\\"${ORDER_ID}\\\"}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"POST\" \"$PATH_URL\" \"$BODY\")\n\ncurl -s -X POST \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"$BODY\" | jq '.'\n\nCancel All Orders\nSYMBOL=\"cmt_btcusdt\"    # Optional: omit to cancel all\n\nPATH_URL=\"/capi/v2/order/cancelAllOrders\"\nBODY=\"{\\\"symbol\\\":\\\"${SYMBOL}\\\"}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"POST\" \"$PATH_URL\" \"$BODY\")\n\ncurl -s -X POST \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"$BODY\" | jq '.'\n\nClose All Positions\nPATH_URL=\"/capi/v2/order/closePositions\"\nBODY=\"{}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"POST\" \"$PATH_URL\" \"$BODY\")\n\ncurl -s -X POST \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"$BODY\" | jq '.'\n\nTrigger Order Endpoints (Auth Required)\nPlace Trigger Order (Stop-Loss / Take-Profit)\nSYMBOL=\"cmt_btcusdt\"\nSIZE=\"10\"\nTYPE=\"1\"               # 1=Open Long, 2=Open Short, 3=Close Long, 4=Close Short\nTRIGGER_PRICE=\"95000\"  # Price that triggers the order\nEXECUTE_PRICE=\"0\"      # 0 for market, or limit price\nTRIGGER_TYPE=\"1\"       # 1=Fill price, 2=Mark price, 3=Index price\nCLIENT_OID=\"trigger_$(date +%s)\"\n\nPATH_URL=\"/capi/v2/order/plan_order\"\nBODY=\"{\\\"symbol\\\":\\\"${SYMBOL}\\\",\\\"client_oid\\\":\\\"${CLIENT_OID}\\\",\\\"size\\\":\\\"${SIZE}\\\",\\\"type\\\":\\\"${TYPE}\\\",\\\"trigger_price\\\":\\\"${TRIGGER_PRICE}\\\",\\\"execute_price\\\":\\\"${EXECUTE_PRICE}\\\",\\\"trend_side\\\":\\\"1\\\",\\\"trigger_type\\\":\\\"${TRIGGER_TYPE}\\\"}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"POST\" \"$PATH_URL\" \"$BODY\")\n\ncurl -s -X POST \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"$BODY\" | jq '.'\n\nGet Current Trigger Orders\nSYMBOL=\"cmt_btcusdt\"\n\nPATH_URL=\"/capi/v2/order/currentPlan?symbol=${SYMBOL}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"GET\" \"$PATH_URL\" \"\")\n\ncurl -s \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" | jq '.data[] | {orderId: .order_id, symbol: .symbol, triggerPrice: .trigger_price, size: .size, type: .type}'\n\nGet Trigger Order History\nSYMBOL=\"cmt_btcusdt\"\nLIMIT=\"50\"\n\nPATH_URL=\"/capi/v2/order/historyPlan?symbol=${SYMBOL}&limit=${LIMIT}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"GET\" \"$PATH_URL\" \"\")\n\ncurl -s \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" | jq '.data[] | {orderId: .order_id, symbol: .symbol, triggerPrice: .trigger_price, status: .status}'\n\nCancel Trigger Order\nORDER_ID=\"1234567890\"\n\nPATH_URL=\"/capi/v2/order/cancel_plan\"\nBODY=\"{\\\"orderId\\\":\\\"${ORDER_ID}\\\"}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"POST\" \"$PATH_URL\" \"$BODY\")\n\ncurl -s -X POST \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"$BODY\" | jq '.'\n\nTP/SL Order Endpoints (Auth Required)\nPlace TP/SL Order\nSYMBOL=\"cmt_btcusdt\"\nSIDE=\"1\"               # 1=Long position, 2=Short position\nTP_PRICE=\"100000\"      # Take profit trigger price\nSL_PRICE=\"85000\"       # Stop loss trigger price\nTP_SIZE=\"10\"           # Take profit size (0 for entire position)\nSL_SIZE=\"10\"           # Stop loss size (0 for entire position)\n\nPATH_URL=\"/capi/v2/order/placeTpSlOrder\"\nBODY=\"{\\\"symbol\\\":\\\"${SYMBOL}\\\",\\\"side\\\":\\\"${SIDE}\\\",\\\"tp_trigger_price\\\":\\\"${TP_PRICE}\\\",\\\"sl_trigger_price\\\":\\\"${SL_PRICE}\\\",\\\"tp_size\\\":\\\"${TP_SIZE}\\\",\\\"sl_size\\\":\\\"${SL_SIZE}\\\"}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"POST\" \"$PATH_URL\" \"$BODY\")\n\ncurl -s -X POST \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"$BODY\" | jq '.'\n\nModify TP/SL Order\nSYMBOL=\"cmt_btcusdt\"\nSIDE=\"1\"               # 1=Long position, 2=Short position\nTP_PRICE=\"105000\"      # New take profit price\nSL_PRICE=\"82000\"       # New stop loss price\n\nPATH_URL=\"/capi/v2/order/modifyTpSlOrder\"\nBODY=\"{\\\"symbol\\\":\\\"${SYMBOL}\\\",\\\"side\\\":\\\"${SIDE}\\\",\\\"tp_trigger_price\\\":\\\"${TP_PRICE}\\\",\\\"sl_trigger_price\\\":\\\"${SL_PRICE}\\\"}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"POST\" \"$PATH_URL\" \"$BODY\")\n\ncurl -s -X POST \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"$BODY\" | jq '.'\n\nAI Integration (Auth Required)\nUpload AI Trading Log\nAI_LOG=\"Trading decision: Buy BTC based on momentum indicators\"\nORDER_ID=\"1234567890\"\n\nPATH_URL=\"/capi/v2/order/uploadAiLog\"\nBODY=\"{\\\"orderId\\\":\\\"${ORDER_ID}\\\",\\\"aiLog\\\":\\\"${AI_LOG}\\\"}\"\nTIMESTAMP=$(python3 -c \"import time; print(int(time.time() * 1000))\")\nSIGNATURE=$(generate_signature \"POST\" \"$PATH_URL\" \"$BODY\")\n\ncurl -s -X POST \"${BASE_URL}${PATH_URL}\" \\\n  -H \"ACCESS-KEY: ${API_KEY}\" \\\n  -H \"ACCESS-SIGN: ${SIGNATURE}\" \\\n  -H \"ACCESS-PASSPHRASE: ${PASSPHRASE}\" \\\n  -H \"ACCESS-TIMESTAMP: ${TIMESTAMP}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"$BODY\" | jq '.'\n\nReference Tables\nOrder Types\ntype\tDescription\n1\tOpen Long (buy to open)\n2\tOpen Short (sell to open)\n3\tClose Long (sell to close)\n4\tClose Short (buy to close)\nExecution Types\norder_type\tDescription\n0\tNormal order\n1\tPost-only (maker only)\n2\tFOK (fill or kill)\n3\tIOC (immediate or cancel)\nPrice Types\nmatch_price\tDescription\n0\tLimit order\n1\tMarket order\nMargin Modes\nmarginMode\tDescription\n1\tCross margin\n3\tIsolated margin\nTrigger Types\ntrigger_type\tDescription\n1\tFill price (last trade price)\n2\tMark price\n3\tIndex price\nPopular Trading Pairs\nPair\tDescription\ncmt_btcusdt\tBitcoin / USDT\ncmt_ethusdt\tEthereum / USDT\ncmt_solusdt\tSolana / USDT\ncmt_xrpusdt\tXRP / USDT\ncmt_dogeusdt\tDogecoin / USDT\ncmt_bnbusdt\tBNB / USDT\nSafety Rules\nALWAYS display order details before execution\nVERIFY trading pair and quantity\nCHECK account balance before trading\nWARN about leverage risks (up to 125x)\nNEVER execute without user confirmation\nCONFIRM position closure before executing\nError Codes\nCode\tDescription\tSolution\n00000\tSuccess\t-\n40001\tInvalid parameter\tCheck parameter format\n40101\tInvalid API key/signature\tVerify credentials and timestamp\n40301\tIP not whitelisted\tAdd IP to whitelist\n42901\tRate limit exceeded\tReduce request frequency\n50001\tInternal error\tRetry after delay\nRate Limits\nCategory\tIP Limit\tUID Limit\nMarket Data\t20 req/sec\tN/A\nAccount Info\t10 req/sec\t10 req/sec\nOrder Placement\t10 req/sec\t10 req/sec\nAdditional Resources\nWEEX\nBase URL: https://api-contract.weex.com\nAPI Reference"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/bowen31337/weex-trading-skills",
    "publisherUrl": "https://clawhub.ai/bowen31337/weex-trading-skills",
    "owner": "bowen31337",
    "version": "1.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/weex-trading-skills",
    "downloadUrl": "https://openagent3.xyz/downloads/weex-trading-skills",
    "agentUrl": "https://openagent3.xyz/skills/weex-trading-skills/agent",
    "manifestUrl": "https://openagent3.xyz/skills/weex-trading-skills/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/weex-trading-skills/agent.md"
  }
}