io.github.junct-bot/binance-mcp
Binance MCP server — 340 tools for AI agent integration. Hosted by Junct.
- -Improve uptime (currently 95.1%, target 99%+)
Test Connectivity — Test connectivity to the Rest API. Weight(IP): 1
Check Server Time — Test connectivity to the Rest API and get the current server time. Weight(IP): 1 Returns: { serverTime: number }.
[DISCOVERY] Exchange Information — Current exchange trading rules and symbol information - If any symbol provided in either symbol or symbols do not exist, the endpoint will throw an error. - All parameters are optional. - permissions can support single or multiple values (e.g. SPOT, ["MARGIN","LEVERAGED"]) - If permissions parameter not provided, the default values will be ["SPOT","MARGIN","LEVERAGED"]. - To display all permissions you need to specify them explicitly. (e.g. SPOT, MARGIN,...) Examples of Symbol Permissions Interpretation from the Response: - [["A","B"]] means you may place an order if you
Order Book — | Limit | Weight(IP) | |---------------------|-------------| | 1-100 | 5 | | 101-500 | 25 | | 501-1000 | 50 | | 1001-5000 | 250 | Returns: { lastUpdateId: number, bids: string[][], asks: string[][] }. PREREQUISITE: First call exchange info or symbol listing to discover valid trading pairs, then query market data.
Recent Trades List — Get recent trades. Weight(IP): 10 PREREQUISITE: First call exchange info or symbol listing to discover valid trading pairs, then query market data.
Old Trade Lookup — Get older market trades. Weight(IP): 10 PREREQUISITE: First call exchange info or symbol listing to discover valid trading pairs, then query market data.
Compressed/Aggregate Trades List — Get compressed, aggregate trades. Trades that fill at the time, from the same order, with the same price will have the quantity aggregated. - If `fromId`, `startTime`, and `endTime` are not sent, the most recent aggregate trades will be returned. - Note that if a trade has the following values, this was a duplicate aggregate trade and marked as invalid: p = '0' // price q = '0' // qty f = -1 // first_trade_id l = -1 // last_trade_id Weight(IP): 2 PREREQUISITE: First call exchange info or symbol listing to discover valid trading pairs, then query market data.
Kline/Candlestick Data — Kline/candlestick bars for a symbol. Klines are uniquely identified by their open time. - If `startTime` and `endTime` are not sent, the most recent klines are returned. Weight(IP): 2 PREREQUISITE: First call exchange info or symbol listing to discover valid trading pairs, then query market data.
UIKlines — The request is similar to klines having the same parameters and response. uiKlines return modified kline data, optimized for presentation of candlestick charts. Weight(IP): 2 PREREQUISITE: First call exchange info or symbol listing to discover valid trading pairs, then query market data.
Current Average Price — Current average price for a symbol. Weight(IP): 2 Returns: { mins: number, price: string, closeTime: number }. PREREQUISITE: First call exchange info or symbol listing to discover valid trading pairs, then query market data.
24hr Ticker Price Change Statistics — 24 hour rolling window price change statistics. Careful when accessing this with no symbol. - If the symbol is not sent, tickers for all symbols will be returned in an array. Weight(IP): - `2` for a single symbol; - `80` when the symbol parameter is omitted;
Trading Day Ticker — Price change statistics for a trading day. Notes: - Supported values for timeZone: - Hours and minutes (e.g. -1:00, 05:45) - Only hours (e.g. 0, 8, 4) Weight: - `4` for each requested symbol. - The weight for this request will cap at `200` once the number of symbols in the request is more than `50`.
Symbol Price Ticker — Latest price for a symbol or symbols. - If the symbol is not sent, prices for all symbols will be returned in an array. Weight(IP): - `2` for a single symbol; - `4` when the symbol parameter is omitted;
[DISCOVERY] Symbol Order Book Ticker — Best price/qty on the order book for a symbol or symbols. - If the symbol is not sent, bookTickers for all symbols will be returned in an array. Weight(IP): - `2` for a single symbol; - `4` when the symbol parameter is omitted;
[DISCOVERY] Rolling window price change statistics — The window used to compute statistics is typically slightly wider than requested windowSize. openTime for /api/v3/ticker always starts on a minute, while the closeTime is the current time of the request. As such, the effective window might be up to 1 minute wider than requested. E.g. If the closeTime is 1641287867099 (January 04, 2022 09:17:47:099 UTC) , and the windowSize is 1d. the openTime will be: 1641201420000 (January 3, 2022, 09:17:00 UTC) Weight(IP): 4 for each requested symbol regardless of windowSize. The weight for this request will cap at 20
Test New Order (TRADE) — Test new order creation and signature/recvWindow long. Creates and validates a new order but does not send it into the matching engine. Weight(IP): - Without computeCommissionRates: `1` - With computeCommissionRates: `20` PREREQUISITE: First call exchange info or symbol listing to discover valid trading pairs, then query market data.
Query Order (USER_DATA) — Check an order's status. - Either `orderId` or `origClientOrderId` must be sent. - For some historical orders `cummulativeQuoteQty` will be < 0, meaning the data is not available at this time. Weight(IP): 4 Returns: { symbol: string, orderId: number, orderListId: number, ... }. PREREQUISITE: First call exchange info or symbol listing to discover valid trading pairs, then query market data.
New Order (TRADE) — Send in a new order. - `LIMIT_MAKER` are `LIMIT` orders that will be rejected if they would immediately match and trade as a taker. - `STOP_LOSS` and `TAKE_PROFIT` will execute a `MARKET` order when the `stopPrice` is reached. - Any `LIMIT` or `LIMIT_MAKER` type order can be made an iceberg order by sending an `icebergQty`. - Any order with an `icebergQty` MUST have `timeInForce` set to `GTC`. - `MARKET` orders using `quantity` specifies how much a user wants to buy or sell based on the market price. - `MARKET` orders using `quoteOrderQty` specifies the amount the user want PREREQUISITE: First call exchange info or symbol listing to discover valid trading pairs, then query market data.
Cancel Order (TRADE) — Cancel an active order. Either `orderId` or `origClientOrderId` must be sent. Weight(IP): 1 Returns: { symbol: string, origClientOrderId: string, orderId: number, ... }. PREREQUISITE: First call exchange info or symbol listing to discover valid trading pairs, then query market data.
Cancel an Existing Order and Send a New Order (Trade) — Cancels an existing order and places a new order on the same symbol. Filters and Order Count are evaluated before the processing of the cancellation and order placement occurs. A new order that was not attempted (i.e. when newOrderResult: NOT_ATTEMPTED), will still increase the order count by 1. Weight(IP): 1 Returns: { cancelResult: string, newOrderResult: string, cancelResponse: { symbol: string, origClientOrderId: string, orderId: number, orderListId: number, clientOrderId: string, price: string, ... }, ... }. PREREQUISITE: First call exchange info or symbol listing to discover valid trading pairs, then query market data.
Current Open Orders (USER_DATA) — Get all open orders on a symbol. Careful when accessing this with no symbol. Weight(IP): - `6` for a single symbol; - `80` when the symbol parameter is omitted;
Cancel all Open Orders on a Symbol (TRADE) — Cancels all active orders on a symbol. This includes OCO orders. Weight(IP): 1 PREREQUISITE: First call exchange info or symbol listing to discover valid trading pairs, then query market data.
All Orders (USER_DATA) — Get all account orders; active, canceled, or filled.. - If `orderId` is set, it will get orders >= that `orderId`. Otherwise most recent orders are returned. - For some historical orders `cummulativeQuoteQty` will be < 0, meaning the data is not available at this time. - If `startTime` and/or `endTime` provided, `orderId` is not required Weight(IP): 20 PREREQUISITE: First call exchange info or symbol listing to discover valid trading pairs, then query market data.
New Order list - OCO (TRADE) — Send in an one-cancels-the-other (OCO) pair, where activation of one order immediately cancels the other. - An `OCO` has 2 orders called the above order and below order. - One of the orders must be a `LIMIT_MAKER` order and the other must be `STOP_LOSS` or`STOP_LOSS_LIMIT` order. - Price restrictions: - If the `OCO` is on the `SELL` side: `LIMIT_MAKER` price > Last Traded Price > stopPrice - If the `OCO` is on the `BUY` side: `LIMIT_MAKER` price < Last Traded Price < stopPrice - OCOs add 2 orders to the unfilled order count, `EXCHANGE_MAX_ORDERS` filter, and the PREREQUISITE: First call exchange info or symbol listing to discover valid trading pairs, then query market data.
New Order List - OTO (TRADE) — Places an `OTO`. - An `OTO` (One-Triggers-the-Other) is an order list comprised of 2 orders. - The first order is called the working order and must be `LIMIT` or `LIMIT_MAKER`. Initially, only the working order goes on the order book. - The second order is called the pending order. It can be any order type except for `MARKET` orders using parameter `quoteOrderQty`. The pending order is only placed on the order book when the working order gets fully filled. - If either the working order or the pending order is cancelled individually, the other order in the order l PREREQUISITE: First call exchange info or symbol listing to discover valid trading pairs, then query market data.
New Order List - OTOCO (TRADE) — Place an `OTOCO`. - An `OTOCO` (One-Triggers-One-Cancels-the-Other) is an order list comprised of 3 orders. - The first order is called the working order and must be `LIMIT` or `LIMIT_MAKER`. Initially, only the working order goes on the order book. - The behavior of the working order is the same as the `OTO`. - `OTOCO` has 2 pending orders (pending above and pending below), forming an `OCO` pair. The pending orders are only placed on the order book when the working order gets fully filled. - The rules of the pending above and pending below follow the same rule PREREQUISITE: First call exchange info or symbol listing to discover valid trading pairs, then query market data.
[DISCOVERY] Query OCO (USER_DATA) — Retrieves a specific OCO based on provided optional parameters Weight(IP): 4 Returns: { orderListId: number, contingencyType: string, listStatusType: string, ... }.
[DISCOVERY] Cancel OCO (TRADE) — Cancel an entire Order List Canceling an individual leg will cancel the entire OCO Weight(IP): 1 Returns: { orderListId: number, contingencyType: string, listStatusType: string, ... }.
[DISCOVERY] Query all OCO (USER_DATA) — Retrieves all OCO based on provided optional parameters Weight(IP): 20
[DISCOVERY] Query Open OCO (USER_DATA) — Weight(IP): 6
New order using SOR (TRADE) — Weight(IP): 6 Returns: { symbol: string, orderId: number, orderListId: number, ... }. PREREQUISITE: First call exchange info or symbol listing to discover valid trading pairs, then query market data.
Test new order using SOR (TRADE) — Test new order creation and signature/recvWindow using smart order routing (SOR). Creates and validates a new order but does not send it into the matching engine. Weight(IP): - Without computeCommissionRates: `1` - With computeCommissionRates: `20` PREREQUISITE: First call exchange info or symbol listing to discover valid trading pairs, then query market data.
Account Information (USER_DATA) — Get current account information. Weight(IP): 20 Returns: { makerCommission: number, takerCommission: number, buyerCommission: number, ... }.
Account Trade List (USER_DATA) — Get trades for a specific account and symbol. If `fromId` is set, it will get id >= that `fromId`. Otherwise most recent orders are returned. The time between startTime and endTime can't be longer than 24 hours. These are the supported combinations of all parameters: symbol symbol + orderId symbol + startTime symbol + endTime symbol + fromId symbol + startTime + endTime symbol+ orderId + fromId Weight(IP): 20 PREREQUISITE: First call exchange info or symbol listing to discover valid trading pairs, then query market data.
Query Current Order Count Usage (TRADE) — Displays the user's current order count usage for all intervals. Weight(IP): 40
Query Prevented Matches — Displays the list of orders that were expired because of STP. For additional information on what a Prevented match is, as well as Self Trade Prevention (STP), please refer to our STP FAQ page. These are the combinations supported: * symbol + preventedMatchId * symbol + orderId * symbol + orderId + fromPreventedMatchId (limit will default to 500) * symbol + orderId + fromPreventedMatchId + limit Weight(IP): Case Weight If symbol is invalid: 2 Querying by preventedMatchId: 2 Querying by orderId: 20 PREREQUISITE: First call exchange info or symbol listing to discover valid trading pairs, then query market data.
Query Allocations (USER_DATA) — Retrieves allocations resulting from SOR order placement. Weight: 20 Supported parameter combinations: Parameters Response symbol allocations from oldest to newest symbol + startTime oldest allocations since startTime symbol + endTime newest allocations until endTime symbol + startTime + endTime allocations within the time range symbol + fromAllocationId allocations by allocation ID symbol + orderId allocations related to an order starting with oldest symbol + orderId + fromAllocationId allocations related to an order by allocation ID Note: The time between star PREREQUISITE: First call exchange info or symbol listing to discover valid trading pairs, then query market data.
Query Commission Rates (USER_DATA) — Get current account commission rates. Weight: 20 Returns: { symbol: string, standardCommission: { maker: string, taker: string, buyer: string, seller: string }, taxCommission: { maker: string, taker: string, buyer: string, seller: string }, ... }. PREREQUISITE: First call exchange info or symbol listing to discover valid trading pairs, then query market data.
Query borrow/repay records in Margin account(USER_DATA) — Query borrow/repay records in Margin account - txId or startTime must be sent. txId takes precedence. Response in descending order - If an asset is sent, data within 30 days before endTime; If an asset is not sent, data within 7 days before endTime - If neither startTime nor endTime is sent, the recent 7-day data will be returned. - startTime set as endTime - 7 days by default, endTime set as current time by default Weight(IP): 10 Returns: { rows: { isolatedSymbol: string, amount: string, asset: string, interest: string, principal: stri
Margin account borrow/repay(MARGIN) — Margin account borrow/repay(MARGIN) Weight(UID): 3000 Returns: { tranId: number }. PREREQUISITE: First call exchange info or symbol listing to discover valid trading pairs, then query market data.
Get Cross Margin Transfer History (USER_DATA) — - Response in descending order - Returns data for last 7 days by default - Set `archived` to `true` to query data from 6 months ago Weight(IP): 1 Returns: { rows: { amount: string, asset: string, status: string, timestamp: number, txId: number, type: string }[], total: number }.
[DISCOVERY] Get All Margin Assets (MARKET_DATA) — Weight(IP): 1
[DISCOVERY] Get All Cross Margin Pairs (MARKET_DATA) — Weight(IP): 1
Query Margin PriceIndex (MARKET_DATA) — Weight(IP): 10 Returns: { calcTime: number, price: string, symbol: string }. PREREQUISITE: First call exchange info or symbol listing to discover valid trading pairs, then query market data.
Query Margin Account's Order (USER_DATA) — - Either `orderId` or `origClientOrderId` must be sent. - For some historical orders `cummulativeQuoteQty` will be < 0, meaning the data is not available at this time. Weight(IP): 10 Returns: { clientOrderId: string, cummulativeQuoteQty: string, executedQty: string, ... }. PREREQUISITE: First call exchange info or symbol listing to discover valid trading pairs, then query market data.
Margin Account New Order (TRADE) — Post a new order for margin account. Weight(UID): 6 PREREQUISITE: First call exchange info or symbol listing to discover valid trading pairs, then query market data.
Margin Account Cancel Order (TRADE) — Cancel an active order for margin account. Either `orderId` or `origClientOrderId` must be sent. Weight(IP): 10 Returns: { symbol: string, orderId: number, origClientOrderId: string, ... }. PREREQUISITE: First call exchange info or symbol listing to discover valid trading pairs, then query market data.
Get Interest History (USER_DATA) — - Response in descending order - If `isolatedSymbol` is not sent, crossed margin data will be returned - Set `archived` to `true` to query data from 6 months ago - `type` in response has 4 enums: - `PERIODIC` interest charged per hour - `ON_BORROW` first interest charged on borrow - `PERIODIC_CONVERTED` interest charged per hour converted into BNB - `ON_BORROW_CONVERTED` first interest charged on borrow converted into BNB Weight(IP): 1 Returns: { rows: { isolatedSymbol: string, asset: string, interest: string, interestAccuredTime: number, interestRate: string
Get Force Liquidation Record (USER_DATA) — - Response in descending order Weight(IP): 1 Returns: { rows: { avgPrice: string, executedQty: string, orderId: number, price: string, qty: string, side: string, ... }[], total: number }.
Query Cross Margin Account Details (USER_DATA) — Weight(IP): 10 Returns: { created: boolean, borrowEnabled: boolean, marginLevel: string, ... }.
| Timestamp | Status | Latency | Conformance |
|---|---|---|---|
| Apr 3, 2026 | timeout | 0ms | Fail |
| Apr 3, 2026 | timeout | 0ms | Fail |
| Apr 3, 2026 | timeout | 0ms | Fail |
| Apr 3, 2026 | timeout | 0ms | Fail |
| Apr 3, 2026 | timeout | 0ms | Fail |
| Apr 3, 2026 | timeout | 0ms | Fail |
| Apr 3, 2026 | timeout | 0ms | Fail |
| Apr 3, 2026 | timeout | 0ms | Fail |
| Apr 2, 2026 | timeout | 0ms | Fail |
| Apr 2, 2026 | timeout | 0ms | Fail |