Security audit workflow - vulnerability scan → verification
npx skills add Donald-Ada/BinaClaw --skill "margin-trading"
Install specific skill from multi-skill repository
# Description
Binance Margin-trading request using the Binance API. Authentication requires API key and secret key.
# SKILL.md
name: margin-trading
description: Binance Margin-trading request using the Binance API. Authentication requires API key and secret key.
metadata:
version: 1.0.0
author: Binance
license: MIT
Binance Margin-trading Skill
Margin-trading request on Binance using authenticated API endpoints. Requires API key and secret key for certain endpoints. Return the result in JSON format.
Quick Reference
| Endpoint | Description | Required | Optional | Authentication |
|---|---|---|---|---|
/sapi/v1/margin/max-leverage (POST) |
Adjust cross margin max leverage (USER_DATA) | maxLeverage | None | Yes |
/sapi/v1/margin/isolated/account (DELETE) |
Disable Isolated Margin Account (TRADE) | symbol | recvWindow | Yes |
/sapi/v1/margin/isolated/account (POST) |
Enable Isolated Margin Account (TRADE) | symbol | recvWindow | Yes |
/sapi/v1/margin/isolated/account (GET) |
Query Isolated Margin Account Info (USER_DATA) | None | symbols, recvWindow | Yes |
/sapi/v1/bnbBurn (GET) |
Get BNB Burn Status (USER_DATA) | None | recvWindow | Yes |
/sapi/v1/margin/tradeCoeff (GET) |
Get Summary of Margin account (USER_DATA) | None | recvWindow | Yes |
/sapi/v1/margin/capital-flow (GET) |
Query Cross Isolated Margin Capital Flow (USER_DATA) | None | asset, symbol, type, startTime, endTime, fromId, limit, recvWindow | Yes |
/sapi/v1/margin/account (GET) |
Query Cross Margin Account Details (USER_DATA) | None | recvWindow | Yes |
/sapi/v1/margin/crossMarginData (GET) |
Query Cross Margin Fee Data (USER_DATA) | None | vipLevel, coin, recvWindow | Yes |
/sapi/v1/margin/isolated/accountLimit (GET) |
Query Enabled Isolated Margin Account Limit (USER_DATA) | None | recvWindow | Yes |
/sapi/v1/margin/isolatedMarginData (GET) |
Query Isolated Margin Fee Data (USER_DATA) | None | vipLevel, symbol, recvWindow | Yes |
/sapi/v1/margin/interestHistory (GET) |
Get Interest History (USER_DATA) | None | asset, isolatedSymbol, startTime, endTime, current, size, recvWindow | Yes |
/sapi/v1/margin/next-hourly-interest-rate (GET) |
Get future hourly interest rate (USER_DATA) | assets, isIsolated | None | Yes |
/sapi/v1/margin/borrow-repay (POST) |
Margin account borrow/repay(MARGIN) | asset, isIsolated, symbol, amount, type | recvWindow | Yes |
/sapi/v1/margin/borrow-repay (GET) |
Query borrow/repay records in Margin account(USER_DATA) | type | asset, isolatedSymbol, txId, startTime, endTime, current, size, recvWindow | Yes |
/sapi/v1/margin/interestRateHistory (GET) |
Query Margin Interest Rate History (USER_DATA) | asset | vipLevel, startTime, endTime, recvWindow | Yes |
/sapi/v1/margin/maxBorrowable (GET) |
Query Max Borrow (USER_DATA) | asset | isolatedSymbol, recvWindow | Yes |
/sapi/v1/margin/crossMarginCollateralRatio (GET) |
Cross margin collateral ratio (MARKET_DATA) | None | None | No |
/sapi/v1/margin/allPairs (GET) |
Get All Cross Margin Pairs (MARKET_DATA) | None | symbol | No |
/sapi/v1/margin/isolated/allPairs (GET) |
Get All Isolated Margin Symbol(MARKET_DATA) | None | symbol, recvWindow | No |
/sapi/v1/margin/allAssets (GET) |
Get All Margin Assets (MARKET_DATA) | None | asset | No |
/sapi/v1/margin/delist-schedule (GET) |
Get Delist Schedule (MARKET_DATA) | None | recvWindow | No |
/sapi/v1/margin/limit-price-pairs (GET) |
Get Limit Price Pairs(MARKET_DATA) | None | None | No |
/sapi/v1/margin/list-schedule (GET) |
Get list Schedule (MARKET_DATA) | None | recvWindow | No |
/sapi/v1/margin/risk-based-liquidation-ratio (GET) |
Get Margin Asset Risk-Based Liquidation Ratio (MARKET_DATA) | None | None | No |
/sapi/v1/margin/restricted-asset (GET) |
Get Margin Restricted Assets (MARKET_DATA) | None | None | No |
/sapi/v1/margin/isolatedMarginTier (GET) |
Query Isolated Margin Tier Data (USER_DATA) | symbol | tier, recvWindow | Yes |
/sapi/v1/margin/leverageBracket (GET) |
Query Liability Coin Leverage Bracket in Cross Margin Pro Mode(MARKET_DATA) | None | None | No |
/sapi/v1/margin/priceIndex (GET) |
Query Margin PriceIndex (MARKET_DATA) | symbol | None | No |
/sapi/v1/margin/available-inventory (GET) |
Query Margin Available Inventory(USER_DATA) | type | None | Yes |
/sapi/v1/margin/listen-key (DELETE) |
Close User Data Stream (USER_STREAM) | None | None | No |
/sapi/v1/margin/listen-key (PUT) |
Keepalive User Data Stream (USER_STREAM) | listenKey | None | No |
/sapi/v1/margin/listen-key (POST) |
Start User Data Stream (USER_STREAM) | None | None | No |
/sapi/v1/margin/apiKey (POST) |
Create Special Key(Low-Latency Trading)(TRADE) | apiName | symbol, ip, publicKey, permissionMode, recvWindow | Yes |
/sapi/v1/margin/apiKey (DELETE) |
Delete Special Key(Low-Latency Trading)(TRADE) | None | apiName, symbol, recvWindow | Yes |
/sapi/v1/margin/apiKey (GET) |
Query Special key(Low Latency Trading)(TRADE) | None | symbol, recvWindow | Yes |
/sapi/v1/margin/apiKey/ip (PUT) |
Edit ip for Special Key(Low-Latency Trading)(TRADE) | ip | symbol, recvWindow | Yes |
/sapi/v1/margin/forceLiquidationRec (GET) |
Get Force Liquidation Record (USER_DATA) | None | startTime, endTime, isolatedSymbol, current, size, recvWindow | Yes |
/sapi/v1/margin/exchange-small-liability (GET) |
Get Small Liability Exchange Coin List (USER_DATA) | None | recvWindow | Yes |
/sapi/v1/margin/exchange-small-liability (POST) |
Small Liability Exchange (MARGIN) | assetNames | recvWindow | Yes |
/sapi/v1/margin/exchange-small-liability-history (GET) |
Get Small Liability Exchange History (USER_DATA) | current, size | startTime, endTime, recvWindow | Yes |
/sapi/v1/margin/openOrders (DELETE) |
Margin Account Cancel all Open Orders on a Symbol (TRADE) | symbol | isIsolated, recvWindow | Yes |
/sapi/v1/margin/openOrders (GET) |
Query Margin Account's Open Orders (USER_DATA) | None | symbol, isIsolated, recvWindow | Yes |
/sapi/v1/margin/orderList (DELETE) |
Margin Account Cancel OCO (TRADE) | symbol | isIsolated, orderListId, listClientOrderId, newClientOrderId, recvWindow | Yes |
/sapi/v1/margin/orderList (GET) |
Query Margin Account's OCO (USER_DATA) | None | isIsolated, symbol, orderListId, origClientOrderId, recvWindow | Yes |
/sapi/v1/margin/order (DELETE) |
Margin Account Cancel Order (TRADE) | symbol | isIsolated, orderId, origClientOrderId, newClientOrderId, recvWindow | Yes |
/sapi/v1/margin/order (POST) |
Margin Account New Order (TRADE) | symbol, side, type | isIsolated, quantity, quoteOrderQty, price, stopPrice, newClientOrderId, icebergQty, newOrderRespType, sideEffectType, timeInForce, selfTradePreventionMode, autoRepayAtCancel, recvWindow | Yes |
/sapi/v1/margin/order (GET) |
Query Margin Account's Order (USER_DATA) | symbol | isIsolated, orderId, origClientOrderId, recvWindow | Yes |
/sapi/v1/margin/order/oco (POST) |
Margin Account New OCO (TRADE) | symbol, side, quantity, price, stopPrice | isIsolated, listClientOrderId, limitClientOrderId, limitIcebergQty, stopClientOrderId, stopLimitPrice, stopIcebergQty, stopLimitTimeInForce, newOrderRespType, sideEffectType, selfTradePreventionMode, autoRepayAtCancel, recvWindow | Yes |
/sapi/v1/margin/order/oto (POST) |
Margin Account New OTO (TRADE) | symbol, workingType, workingSide, workingPrice, workingQuantity, workingIcebergQty, pendingType, pendingSide, pendingQuantity | isIsolated, listClientOrderId, newOrderRespType, sideEffectType, selfTradePreventionMode, autoRepayAtCancel, workingClientOrderId, workingTimeInForce, pendingClientOrderId, pendingPrice, pendingStopPrice, pendingTrailingDelta, pendingIcebergQty, pendingTimeInForce | Yes |
/sapi/v1/margin/order/otoco (POST) |
Margin Account New OTOCO (TRADE) | symbol, workingType, workingSide, workingPrice, workingQuantity, pendingSide, pendingQuantity, pendingAboveType | isIsolated, sideEffectType, autoRepayAtCancel, listClientOrderId, newOrderRespType, selfTradePreventionMode, workingClientOrderId, workingIcebergQty, workingTimeInForce, pendingAboveClientOrderId, pendingAbovePrice, pendingAboveStopPrice, pendingAboveTrailingDelta, pendingAboveIcebergQty, pendingAboveTimeInForce, pendingBelowType, pendingBelowClientOrderId, pendingBelowPrice, pendingBelowStopPrice, pendingBelowTrailingDelta, pendingBelowIcebergQty, pendingBelowTimeInForce | Yes |
/sapi/v1/margin/manual-liquidation (POST) |
Margin Manual Liquidation(MARGIN) | type | symbol, recvWindow | Yes |
/sapi/v1/margin/rateLimit/order (GET) |
Query Current Margin Order Count Usage (TRADE) | None | isIsolated, symbol, recvWindow | Yes |
/sapi/v1/margin/allOrderList (GET) |
Query Margin Account's all OCO (USER_DATA) | None | isIsolated, symbol, fromId, startTime, endTime, limit, recvWindow | Yes |
/sapi/v1/margin/allOrders (GET) |
Query Margin Account's All Orders (USER_DATA) | symbol | isIsolated, orderId, startTime, endTime, limit, recvWindow | Yes |
/sapi/v1/margin/openOrderList (GET) |
Query Margin Account's Open OCO (USER_DATA) | None | isIsolated, symbol, recvWindow | Yes |
/sapi/v1/margin/myTrades (GET) |
Query Margin Account's Trade List (USER_DATA) | symbol | isIsolated, orderId, startTime, endTime, fromId, limit, recvWindow | Yes |
/sapi/v1/margin/myPreventedMatches (GET) |
Query Prevented Matches(USER_DATA) | symbol | preventedMatchId, orderId, fromPreventedMatchId, recvWindow, isIsolated | Yes |
/sapi/v1/margin/api-key-list (GET) |
Query Special key List(Low Latency Trading)(TRADE) | None | symbol, recvWindow | Yes |
/sapi/v1/margin/transfer (GET) |
Get Cross Margin Transfer History (USER_DATA) | None | asset, type, startTime, endTime, current, size, isolatedSymbol, recvWindow | Yes |
/sapi/v1/margin/maxTransferable (GET) |
Query Max Transfer-Out Amount (USER_DATA) | asset | isolatedSymbol, recvWindow | Yes |
Parameters
Common Parameters
- maxLeverage: Can only adjust 3 , 5 or 10,Example: maxLeverage = 5 or 3 for Cross Margin Classic; maxLeverage=10 for Cross Margin Pro 10x leverage or 20x if compliance allows.
- symbol:
- recvWindow: No more than 60000 (e.g., 5000)
- asset:
- symbol: isolated margin pair
- type: Transfer Type: ROLL_IN, ROLL_OUT
- startTime: Only supports querying data from the past 90 days. (e.g., 1623319461670)
- endTime: (e.g., 1641782889000)
- fromId: If
fromIdis set, data withidgreater thanfromIdwill be returned. Otherwise, the latest data will be returned. (e.g., 1) - limit: Limit on the number of data records returned per request. Default: 500; Maximum: 1000. (e.g., 500)
- vipLevel: User's current specific margin data will be returned if vipLevel is omitted (e.g., 1)
- coin:
- symbols: Max 5 symbols can be sent; separated by ",". e.g. "BTCUSDT,BNBUSDT,ADAUSDT"
- isolatedSymbol: isolated symbol
- current: Currently querying page. Start from 1. Default:1 (e.g., 1)
- size: Default:10 Max:100 (e.g., 10)
- assets: List of assets, separated by commas, up to 20
- isIsolated: for isolated margin or not, "TRUE", "FALSE"
- asset:
- isIsolated:
TRUEfor Isolated Margin,FALSEfor Cross Margin, DefaultFALSE(e.g., FALSE) - amount:
- type:
MARGIN,ISOLATED - txId:
tranIdinPOST /sapi/v1/margin/loan(e.g., 1) - tier: All margin tier data will be returned if tier is omitted
- listenKey:
- apiName:
- ip: Can be added in batches, separated by commas. Max 30 for an API key
- publicKey: 1. If publicKey is inputted it will create an RSA or Ed25519 key. 2. Need to be encoded to URL-encoded format
- permissionMode: This parameter is only for the Ed25519 API key, and does not effact for other encryption methods. The value can be TRADE (TRADE for all permissions) or READ (READ for USER_DATA, FIX_API_READ_ONLY). The default value is TRADE. (e.g., value)
- apiName:
- ip: Can be added in batches, separated by commas. Max 30 for an API key
- current: Currently querying page. Start from 1. Default:1 (e.g., 1)
- size: Default:10, Max:100 (e.g., 10)
- isIsolated: For isolated margin or not, "TRUE", "FALSE", default "FALSE"
- orderListId: Either
orderListIdorlistClientOrderIdmust be provided (e.g., 1) - listClientOrderId: Either
orderListIdorlistClientOrderIdmust be provided (e.g., 1) - newClientOrderId: Used to uniquely identify this cancel. Automatically generated by default (e.g., 1)
- orderId: (e.g., 1)
- origClientOrderId: (e.g., 1)
- quantity: (e.g., 1.0)
- limitClientOrderId: A unique Id for the limit order (e.g., 1)
- price: (e.g., 1.0)
- limitIcebergQty: (e.g., 1.0)
- stopClientOrderId: A unique Id for the stop loss/stop loss limit leg (e.g., 1)
- stopPrice: (e.g., 1.0)
- stopLimitPrice: If provided,
stopLimitTimeInForceis required. (e.g., 1.0) - stopIcebergQty: (e.g., 1.0)
- stopLimitTimeInForce: Valid values are
GTC/FOK/IOC - sideEffectType: NO_SIDE_EFFECT, MARGIN_BUY, AUTO_REPAY,AUTO_BORROW_REPAY; default NO_SIDE_EFFECT. More info in FAQ (e.g., NO_SIDE_EFFECT)
- selfTradePreventionMode: The allowed enums is dependent on what is configured on the symbol. The possible supported values are EXPIRE_TAKER, EXPIRE_MAKER, EXPIRE_BOTH, NONE (e.g., NONE)
- autoRepayAtCancel: Only when MARGIN_BUY or AUTO_BORROW_REPAY order takes effect, true means that the debt generated by the order needs to be repay after the order is cancelled. The default is true (e.g., true)
- workingType: Supported values:
LIMIT,LIMIT_MAKER - workingSide: BUY, SELL
- workingClientOrderId: Arbitrary unique ID among open orders for the working order. Automatically generated if not sent. (e.g., 1)
- workingPrice: (e.g., 1.0)
- workingQuantity: (e.g., 1.0)
- workingIcebergQty: This can only be used if
workingTimeInForceisGTC. (e.g., 1.0) - workingTimeInForce: GTC,IOC,FOK
- pendingType: Supported values: Order Types Note that
MARKETorders usingquoteOrderQtyare not supported. (e.g., Order Types) - pendingSide: BUY, SELL
- pendingClientOrderId: Arbitrary unique ID among open orders for the pending order. Automatically generated if not sent. (e.g., 1)
- pendingPrice: (e.g., 1.0)
- pendingStopPrice: (e.g., 1.0)
- pendingTrailingDelta: (e.g., 1.0)
- pendingQuantity: (e.g., 1.0)
- pendingIcebergQty: This can only be used if
pendingTimeInForceisGTC. (e.g., 1.0) - pendingTimeInForce: GTC,IOC,FOK
- workingIcebergQty: This can only be used if
workingTimeInForceisGTC. (e.g., 1.0) - pendingAboveType: Supported values:
LIMIT_MAKER,STOP_LOSS, andSTOP_LOSS_LIMIT - pendingAboveClientOrderId: Arbitrary unique ID among open orders for the pending above order. Automatically generated if not sent. (e.g., 1)
- pendingAbovePrice: (e.g., 1.0)
- pendingAboveStopPrice: (e.g., 1.0)
- pendingAboveTrailingDelta: (e.g., 1.0)
- pendingAboveIcebergQty: This can only be used if
pendingAboveTimeInForceisGTC. (e.g., 1.0) - pendingAboveTimeInForce:
- pendingBelowType: Supported values:
LIMIT_MAKER,STOP_LOSS, andSTOP_LOSS_LIMIT - pendingBelowClientOrderId: Arbitrary unique ID among open orders for the pending below order. Automatically generated if not sent. (e.g., 1)
- pendingBelowPrice: (e.g., 1.0)
- pendingBelowStopPrice: (e.g., 1.0)
- pendingBelowTrailingDelta: (e.g., 1.0)
- pendingBelowIcebergQty: This can only be used if
pendingBelowTimeInForceisGTC. (e.g., 1.0) - pendingBelowTimeInForce:
- quantity: (e.g., 1.0)
- quoteOrderQty: (e.g., 1.0)
- price: (e.g., 1.0)
- stopPrice: Used with
STOP_LOSS,STOP_LOSS_LIMIT,TAKE_PROFIT, andTAKE_PROFIT_LIMITorders. (e.g., 1.0) - icebergQty: Used with
LIMIT,STOP_LOSS_LIMIT, andTAKE_PROFIT_LIMITto create an iceberg order. (e.g., 1.0) - preventedMatchId: (e.g., 1)
- fromPreventedMatchId: (e.g., 1)
- assetNames: The assets list of small liability exchange, Example: assetNames = BTC,ETH
Enums
- side: BUY | SELL
- newOrderRespType: ACK | RESULT | FULL
- timeInForce: GTC | IOC | FOK
Authentication
For endpoints that require authentication, you will need to provide Binance API credentials.
Required credentials:
- apiKey: Your Binance API key (for header)
- secretKey: Your Binance API secret (for signing)
Base URLs:
* Mainnet: https://api.binance.com
Security
Share Credentials
Users can provide Binance API credentials by sending a file where the content is in the following format:
abc123...xyz
secret123...key
Never Disclose API Key and Secret
Never disclose the location of the API key and secret file.
Never send the API key and secret to any website other than Mainnet and Testnet.
Never Display Full Secrets
When showing credentials to users:
- API Key: Show first 5 + last 4 characters: su1Qc...8akf
- Secret Key: Always mask, show only last 5: ***...aws1
Example response when asked for credentials:
Account: main
API Key: su1Qc...8akf
Secret: ***...aws1
Listing Accounts
When listing accounts, show names and environment only — never keys:
Binance Accounts:
* main (Mainnet)
* futures-keys (Mainnet)
Transactions in Mainnet
When performing transactions in mainnet, always confirm with the user before proceeding by asking them to write "CONFIRM" to proceed.
Binance Accounts
main
- API Key: your_mainnet_api_key
- Secret: your_mainnet_secret
TOOLS.md Structure
## Binance Accounts
### main
- API Key: abc123...xyz
- Secret: secret123...key
- Description: Primary trading account
### futures-keys
- API Key: futures789...def
- Secret: futuressecret...uvw
- Description: Futures trading account
Agent Behavior
- Credentials requested: Mask secrets (show last 5 chars only)
- Listing accounts: Show names and environment, never keys
- Account selection: Ask if ambiguous, default to main
- When doing a transaction in mainnet, confirm with user before by asking to write "CONFIRM" to proceed
- New credentials: Prompt for name, environment, signing mode
Adding New Accounts
When user provides new credentials:
- Ask for account name
- Store in
TOOLS.mdwith masked display confirmation
Signing Requests
For trading endpoints that require a signature:
- Build query string with all parameters, including the timestamp (Unix ms).
- Percent-encode the parameters using UTF-8 according to RFC 3986.
- Sign query string with secretKey using HMAC SHA256, RSA, or Ed25519 (depending on the account configuration).
- Append signature to query string.
- Include
X-MBX-APIKEYheader.
Otherwise, do not perform steps 3–5.
New Client Order ID
For endpoints that include the newClientOrderId parameter, the value must always start with agent-. If the parameter is not provided, agent- followed by 18 random alphanumeric characters will be generated automatically. If a value is provided, it will be prefixed with agent-
Example: agent-1a2b3c4d5e6f7g8h9i
User Agent Header
Include User-Agent header with the following string: binance-margin-trading/1.0.0 (Skill)
See references/authentication.md for implementation details.
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.