Skip to main content
Glama
Lubodi-Code

Binance MCP Server

by Lubodi-Code

Binance MCP Server

Servidor MCP (Model Context Protocol) para consultar Binance Spot desde un agente de IA: precios, saldos y órdenes. Solo lectura por defecto y testnet por defecto.

English: MCP server for Binance Spot. Read-only and testnet by default; trading must be enabled explicitly with BINANCE_ALLOW_TRADING=true. Withdrawals were removed in 0.2.0.

Python MCP License

Seguridad por defecto

Configuración

Default

Efecto

BINANCE_TESTNET

true

Usa testnet.binance.vision. Con false, Binance real.

BINANCE_ALLOW_TRADING

false

Bloquea toda operación que modifique la cuenta (crear y cancelar órdenes).

Retiros

—

No existen en esta versión.

  • Red y permiso son independientes. Pasar a mainnet (BINANCE_TESTNET=false) no habilita operar. Para operar hay que poner además BINANCE_ALLOW_TRADING=true.

  • El bloqueo está centralizado: además de cada herramienta, el único punto que habla con Binance rechaza cualquier método distinto de GET si el permiso está desactivado.

  • Valores inválidos (BINANCE_TESTNET=quizas) devuelven CONFIG_ERROR: nunca se cae en mainnet por accidente.

  • Las consultas públicas no usan ni envían credenciales. Las respuestas, logs y errores nunca incluyen la API key, el secret ni la firma.

  • Recomendado: API key sin permiso de retiro, con IP whitelist, y solo lectura si no vas a operar.

Related MCP server: binance-mcp-server

Herramientas

Herramienta

Tipo

Descripción

get_price

pública

Precio actual de un símbolo (BTCUSDT)

get_24h_stats

pública

Estadísticas de 24 h

get_klines

pública

Velas; interval oficial (1s…1M), limit 1..1000

get_order_book

pública

Libro de órdenes; limit 1..5000

diagnose_connection

diagnóstico

Red, permiso de operar, credenciales presentes (sí/no), conectividad, diferencia de hora, autenticación de solo lectura

get_account

privada

Saldos distintos de cero y permisos de la cuenta

get_open_orders

privada

Órdenes abiertas (opcionalmente por símbolo)

get_my_trades

privada

Últimos trades de un símbolo (historial parcial)

get_order

privada

Una orden por símbolo y exactamente uno de order_id / client_order_id

place_order

operación

MARKET o LIMIT. Bloqueada salvo BINANCE_ALLOW_TRADING=true

cancel_order

operación

Cancela por order_id. Bloqueada salvo permiso

cancel_all_orders

operación

Cancela todas las de un símbolo. Bloqueada salvo permiso

Formato de respuesta

Todas las herramientas devuelven el mismo sobre:

{ "ok": true, "network": "mainnet", "trading_enabled": false, "data": { "symbol": "BTCUSDT", "price": "82026.83000000" } }
{ "ok": false, "network": "testnet", "trading_enabled": false,
  "warning": "Red de pruebas (testnet): precios, saldos y ordenes NO corresponden al mercado real.",
  "error": { "code": "MISSING_CREDENTIALS", "message": "..." } }

Códigos de error: CONFIG_ERROR, VALIDATION_ERROR, VALIDATION_UNRESOLVED, TRADING_DISABLED, MISSING_CREDENTIALS, NETWORK_ERROR (con sent: false si no se llegó a conectar), TIMEOUT, RATE_LIMITED / IP_BANNED (con retry_after_seconds), INVALID_RESPONSE, BINANCE_SERVER_ERROR, BINANCE_ERROR (con binance_code), OUTCOME_UNKNOWN, INTERNAL_ERROR.

Órdenes: validación y resultados inciertos

Antes de enviar una orden se consultan las reglas del símbolo (/api/v3/exchangeInfo): estado TRADING, tipos admitidos, PRICE_FILTER, LOT_SIZE, MARKET_LOT_SIZE, NOTIONAL (applyMinToMarket / applyMaxToMarket) y MIN_NOTIONAL (applyToMarket).

  • Nunca se redondea: un precio o cantidad fuera de tickSize/stepSize se rechaza.

  • Pasá quantity y price como texto ("0.001"). Se aceptan números por compatibilidad (se convierten vía su representación más corta, nunca Decimal(float)), pero un número JSON pudo haber sido redondeado ya por el cliente.

  • time_in_force solo aplica a LIMIT (default GTC); en MARKET se omite.

  • 0 desactiva una regla solo en PRICE_FILTER (así lo documenta Binance). Si LOT_SIZE/MARKET_LOT_SIZE traen stepSize o maxQty en 0, o NOTIONAL.maxNotional en 0, la orden se bloquea con VALIDATION_UNRESOLVED porque ese caso no está documentado.

  • Para MARKET el notional se compara contra el precio que documenta Binance: referencePrice si existe; si no, avgPrice comprobando que su ventana (mins) sea la del filtro (avgPriceMins); si avgPriceMins es 0, el último precio. Si no se puede comprobar, la respuesta trae validation.status = "incomplete" y el filtro en not_checked. Otros filtros (p. ej. PERCENT_PRICE_BY_SIDE) también se listan ahí.

  • Una validación local aprobada no garantiza que Binance acepte la orden.

  • Cada orden lleva un client_order_id generado antes de enviarla. Si hay timeout, error 5xx, -1007 o respuesta ilegible después de enviar, la respuesta es OUTCOME_UNKNOWN (outcome: "unknown"): no se afirma que falló ni que se ejecutó, y no se reintenta. Consultala con get_order(symbol, client_order_id=...). En cancelaciones se devuelven el symbol y el order_id originales.

Instalación

Requiere uv.

git clone https://github.com/Lubodi-Code/binance-mcp.git
cd binance-mcp
uv sync

Configuración en el cliente MCP

server.py no lee .env: las variables van en el bloque env del cliente. Ejemplo para Claude Desktop (claude_desktop_config.json) o Claude Code (.mcp.json):

{
  "mcpServers": {
    "binance": {
      "command": "uv",
      "args": ["--directory", "/ruta/absoluta/a/binance-mcp", "run", "server.py"],
      "env": {
        "BINANCE_TESTNET": "true",
        "BINANCE_ALLOW_TRADING": "false",
        "BINANCE_API_KEY": "tu_api_key_de_testnet",
        "BINANCE_API_SECRET": "tu_secret_de_testnet"
      }
    }
  }
}
  • Solo precios: omití BINANCE_API_KEY / BINANCE_API_SECRET.

  • Claves de testnet: https://testnet.binance.vision.

  • No pegues tus claves en el chat del agente: van solo en este archivo de configuración.

Testnet vs. producción

Testnet (BINANCE_TESTNET=true)

Producción (false)

Host público

testnet.binance.vision

data-api.binance.vision

Host privado

testnet.binance.vision

api.binance.com

Precios

De prueba, no reales. Cada respuesta lo advierte en warning.

Mercado real

Claves

Propias del testnet

Propias de la cuenta real

Saldos

Fondos ficticios del testnet

Fondos reales

Para consultar precios reales sin arriesgar nada: BINANCE_TESTNET=false, BINANCE_ALLOW_TRADING=false y sin claves.

Ejemplos de consulta

  • «¿A cuánto está BTCUSDT y cómo se movió en las últimas 24 h?» → get_price, get_24h_stats

  • «Diagnosticá la conexión con Binance» → diagnose_connection

  • «¿Qué saldos tengo?» → get_account

  • «¿Tengo órdenes abiertas en ETHUSDT?» → get_open_orders(symbol="ETHUSDT")

  • «¿Qué pasó con la orden mcp-…?» → get_order(symbol=..., client_order_id="mcp-...")

Si diagnose_connection reporta clock_status distinto de ok, sincronizá el reloj del sistema: Binance rechaza firmas con más de 1 s de adelanto o fuera de recvWindow (-1021).

Skill incluida: binance-account-review

skills/binance-account-review/SKILL.md guía al agente para revisar precios, saldos y órdenes abiertas y entregar un informe breve en español (fecha, red, resultados, datos faltantes). Es de solo lectura: no envía órdenes, no recomienda ni pide secretos.

Instalarla en Claude Code (requiere este MCP conectado):

cp -r skills/binance-account-review ~/.claude/skills/

O por proyecto: copiala a .claude/skills/ del repo donde la uses. Reiniciá la sesión y pedí, por ejemplo, «revisá mi cuenta de Binance».

Desarrollo y verificación

uv run --group dev pytest -q

Pruebas unitarias con transporte HTTP simulado: cubren bloqueo de operaciones, validaciones, precisión, errores, resultados inciertos y ausencia de secretos. No acreditan integración real.

uv run python scripts/verify/run_verify.py

Verificación de integración real: levanta el servidor por stdio con el cliente MCP oficial y llama solo herramientas de lectura con BINANCE_ALLOW_TRADING=false:

  1. Consultas públicas contra Binance real, sin credenciales (el proceso hijo no hereda ninguna variable BINANCE_*).

  2. Consultas privadas contra testnet, solo si existen BINANCE_TESTNET_API_KEY y BINANCE_TESTNET_API_SECRET en el entorno o en .env (que el script carga explícitamente). Nunca usa BINANCE_API_KEY del entorno, para no mandar claves de producción a testnet. Si faltan, el escenario queda «NO VERIFICADO».

La evidencia queda en scripts/verify/out/<fecha>/ (ignorada por Git: puede tener datos de cuenta). summary.json es un resumen sin montos, apto para compartir.

Cambios de compatibilidad (0.2.0)

  • Eliminada la herramienta withdraw y la variable ENABLE_WITHDRAWALS (si sigue definida, se ignora y diagnose_connection lo avisa en legacy_env_ignored).

  • Nuevo default de solo lectura: place_order, cancel_order y cancel_all_orders devuelven TRADING_DISABLED salvo BINANCE_ALLOW_TRADING=true.

  • Formato de respuesta: todas las herramientas devuelven {ok, network, trading_enabled, data | error} en vez del JSON crudo de Binance (ahora en data).

  • place_order: time_in_force ya no tiene default GTC en la firma (se aplica solo a LIMIT); MARKET con price o time_in_force se rechaza; las cantidades se validan contra las reglas del símbolo y no se redondean.

  • BINANCE_TESTNET solo acepta true/false/1/0/yes/no; antes cualquier otro valor activaba mainnet.

  • Mainnet público usa data-api.binance.vision y no envía la API key.

  • get_account omite saldos en cero (omitZeroBalances=true).

  • get_my_trades devuelve {trades, note}.

  • Nuevas herramientas: get_order, diagnose_connection.

Aviso

Proyecto educativo. Operar con criptomonedas conlleva riesgo financiero; el autor no se hace responsable de pérdidas. Empezá siempre en testnet y con permisos mínimos.

Stack

Python 3.10+ · MCP SDK (FastMCP) · httpx · uv

Licencia

MIT — ver LICENSE.

Available Tools

11 tools
cancel_all_ordersB

Cancela TODAS las ordenes abiertas de un simbolo.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden of behavioral disclosure. It states the action but does not warn that this is a destructive, irreversible bulk operation, nor does it mention potential consequences, required permissions, or the response format. The word 'TODAS' implies bulk impact but fails to elaborate on safety or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence in Spanish that front-loads the action ('Cancela') and clearly identifies the target. There are no wasted words or redundant content. This is an appropriate size for the simple operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive bulk operation with no annotations and no output schema, the description is incomplete. It does not mention what happens after cancellation, whether the action is reversible, how to handle errors (e.g., no open orders), or any response details. This is insufficient for an agent to understand the full context of the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has one required parameter 'symbol' with no description. The description mentions 'de un simbolo,' which clarifies that the symbol identifies whose orders will be canceled, but it does not explain the expected format (e.g., 'BTCUSDT') or any additional nuances. Given 0% schema coverage, the description provides only minimal compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action with a specific verb ('Cancela') and resource ('TODAS las ordenes abiertas de un simbolo'), meaning 'Cancels ALL open orders of a symbol.' The word 'TODAS' distinguishes it from the sibling tool cancel_order, which presumably cancels a single order.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly mention when to use this tool or provide alternatives. Usage is implied from the purpose: use when you want to cancel all open orders for a given symbol, rather than individual orders. There is no guidance on exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancel_orderA

Cancela una orden por su orderId en el simbolo dado.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes
order_idYes

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It only states the action without mentioning side effects, irreversibility, authentication requirements, or error behavior. This is insufficient for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is front-loaded and contains no fluff. Every word contributes to the meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description conveys the basic action and parameters but provides no information about return values, errors, or post-conditions. Given the absence of an output schema and annotations, this is functionally incomplete for an agent to fully anticipate the tool's behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, but the description clarifies that order_id is the identifier of the order to cancel and symbol is the trading symbol. This adds meaningful semantics beyond the raw schema, though it lacks deeper constraints or format details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Cancela' (cancels) with the resource 'orden' (order), and specifies the exact means ('por su orderId en el simbolo dado'). This clearly distinguishes it from sibling tools like place_order and cancel_all_orders.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies the use case: you need an orderId and a symbol to cancel a specific order. It does not explicitly mention alternatives or exclusions, but the context is unambiguous, so a 4 is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_24h_statsA

Estadisticas de 24h de un simbolo (volumen, cambio %, high/low). Ej: 'ETHUSDT'.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the behavioral disclosure burden. It lists the returned fields (volume, change %, high/low) but omits response format, error behavior, and whether the 24h stats are rolling or daily.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, focused sentence with a practical example. No filler or redundant information; every word contributes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter stats tool, the description names the included metrics and provides an example. Without an output schema, it could describe the response shape or error cases, but the listed fields give adequate functional context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides only the parameter name 'symbol' with no description (0% coverage). The description compensates by explaining that the parameter is a trading symbol and gives a concrete example ('ETHUSDT'), clarifying the expected format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns 24h statistics for a symbol, listing volume, change percentage, and high/low. This distinguishes it from siblings like get_price and get_klines, though it lacks an explicit verb.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied: fetch 24h market stats for a symbol. The example clarifies the symbol parameter, but no explicit guidance is given about when to prefer this over alternatives like get_price or get_klines.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_accountA

Balances y permisos de tu cuenta spot. Requiere firma.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full responsibility. It discloses the authentication requirement (requires signature) which is a useful behavioral trait beyond the schema, but it does not explicitly state the read-only nature or other potential side effects. This is a minimal but acceptable transparency level.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences, front-loading the purpose and then the requirement. Every word serves a purpose, with no wasted information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no output schema and no annotations, the description adequately covers what it returns (balances and permissions) and its prerequisite (signature). While it lacks explicit return format, the information provided is sufficient for basic invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the description needs no parameter semantics. The baseline of 4 applies because there is no need to compensate for undocumented parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource: 'Balances y permisos de tu cuenta spot' (balances and permissions of your spot account), which is specific and distinct from market data and trade execution siblings. However, it lacks an explicit verb and does not name alternative tools, so it is clear but not explicit in sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. The only additional note, 'Requiere firma' (requires signature), is a prerequisite rather than a usage context or exclusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_klinesB

Velas (candlesticks) de un simbolo. interval: 1m,5m,15m,1h,4h,1d,1w, etc. limit: max 1000.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
symbolYes
intervalNo1h

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses interval choices and a limit cap of 1000, but gives no information about the returned data structure, ordering, time ranges, or potential side effects. With no annotations, the description carries the full burden and falls short.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely brief and to the point, using two short sentences. The first sentence states the purpose, and the second lists constraints. It could be better structured, but it is concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema or annotations, the description needs to explain what a kline is and what the response contains. It only says 'velas' without defining OHLCV structure, ordering, or error handling, making it incomplete for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaning for interval (listing common values like 1m, 1h, 1d) and limit (max 1000), which are not explained in the schema. However, symbol is only implied and not elaborated, and defaults are not mentioned.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Velas (candlesticks) de un simbolo' which clearly identifies the tool's purpose as retrieving candlestick data for a symbol. This distinguishes it from sibling tools like get_price (current price) and get_order_book.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It lacks contextual clues about when klines are needed (e.g., historical analysis) or when to prefer other tools like get_price.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_my_tradesB

Historial de trades tuyos para un simbolo. Requiere firma.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
symbolYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description mentions the authentication requirement ('Requiere firma') and user-specific scope ('tuyos'), which are useful behavioral details. However, with no annotations, it lacks disclosure about the return format, result ordering, or read-only nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, with every word serving a purpose. The main action is front-loaded and the additional note about the signature is kept separate and brief.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema and no annotations, the description should explain what the tool returns and any output behavior. It only covers the input symbol and auth requirement, leaving limit semantics and return structure missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It clarifies 'symbol' as the trading pair ('para un simbolo'), but provides no meaning for 'limit', leaving a required parameter under-explained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: retrieving the user's own trade history for a given symbol. The phrase 'tuyos' (yours) and 'para un simbolo' (for a symbol) specify the scope, differentiating it from siblings like get_account or get_open_orders.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It only notes that a signature is required, which is an authentication prerequisite rather than a usage criterion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_open_ordersC

Ordenes abiertas. Si pasas symbol, filtra por ese par.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the behavioral disclosure burden. It discloses one behavior (filtering by symbol), but does not mention auth requirements, pagination, return format, or behavior when no symbol is passed. This is minimal context for a trading tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, consisting of two short sentences. It front-loads the main concept ('Ordenes abiertas') and immediately follows with the filter condition. No redundant words, though the first sentence is a fragment rather than a complete statement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one optional parameter and no output schema, the description is adequate but not complete. It explains the symbol filter but does not state what the return value is, whether it returns all orders for the account, or any limitations. Given the low complexity, it hits the minimum threshold.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero description coverage for the symbol parameter, and the description compensates by explaining its effect: 'Si pasas symbol, filtra por ese par.' This provides clear semantics for the only parameter, though it leaves format specifics to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Ordenes abiertas' is a noun phrase that essentially restates the tool name (get_open_orders), lacking an explicit verb like 'lists' or 'returns.' It does clarify the resource and adds a filter condition, but the core action is implied rather than stated, making it vague.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives. The description only mentions an optional symbol filter and does not reference sibling tools such as get_my_trades or get_account, nor does it explain use cases or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_order_bookB

Libro de ordenes (bids/asks) de un simbolo. limit: 5,10,20,50,100,500,1000.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
symbolYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It only describes the resource (order book) and valid limit values, but does not mention safety (read-only nature), response format, aggregation behavior, or any other nuances. This is a minimal description that adds little beyond what the tool name suggests.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the resource (order book) and then provides the limit options. Every word earns its place; it is concise and efficient with no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with no annotations and no output schema, the description is adequate but thin. It clearly states the purpose and limit values, but lacks usage guidance and behavioral details. It is minimally viable but leaves gaps such as when to use it and what the response looks like.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It does add meaning for the 'limit' parameter by listing valid values (5,10,20,50,100,500,1000), which is not in the schema. However, it does not explain the 'symbol' parameter beyond the obvious property name, and there are no descriptions for either parameter in the schema itself. Overall, the description partially compensates for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: it retrieves the order book (bids/asks) for a given symbol. This is a specific verb+resource combination that distinguishes it from sibling tools like get_price and get_klines, which serve different data retrieval purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention scenarios, prerequisites, or exclusions. While the tool name and description imply it is for order book data, there is no explicit context for when an agent should choose this over siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_priceA

Precio actual de un simbolo. Ej: symbol='BTCUSDT'.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It states the function is read-only by nature ('Precio actual'), but it does not disclose any edge cases, response format, or potential errors. For a simple getter, this is adequate but minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loaded with the purpose and including a helpful example. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description should explain the return value. It only states 'current price' but does not disclose whether the response is a plain number or a structured object. Given the tool's simplicity, this is a notable gap for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It provides an example symbol='BTCUSDT', which clarifies the expected format (uppercase base/quote pair). This adds meaningful value beyond the bare property name, though it does not enumerate all possible symbols.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns the current price of a symbol ('Precio actual de un simbolo'). It uses a specific verb and resource, and the example symbol='BTCUSDT' clarifies the expected input. This distinguishes it from sibling tools like get_klines (historical data) and get_order_book.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for obtaining current price but does not explicitly contrast with alternatives like get_24h_stats or get_klines. The context is clear enough, but no when-not-to-use guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

place_orderA

Crea una orden de compra/venta. symbol: ej 'BTCUSDT' side: 'BUY' o 'SELL' order_type: 'MARKET' o 'LIMIT' quantity: cantidad del activo base price: requerido solo para LIMIT time_in_force: GTC / IOC / FOK (solo LIMIT)

ParametersJSON Schema
NameRequiredDescriptionDefault
sideYes
priceNo
symbolYes
quantityNo
order_typeNoMARKET
time_in_forceNoGTC

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions parameter constraints (price only for LIMIT, time_in_force only for LIMIT) but does not disclose that placing an order executes a financial transaction, may require permissions/funds, or what happens after submission. No info on idempotency or error cases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a compact, bullet-list format covering each parameter succinctly with examples. No redundant or filler content; every line adds information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is moderately complex with no output schema or annotations. The description covers purpose and parameters well but omits usage context, return values (e.g., order ID), and operational behavior. It is adequate for parameter reference but not fully complete for decision-making.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description fully compensates by explaining each parameter with examples and constraints. It defines symbol, side, order_type, quantity (base asset), price (required only for LIMIT), and time_in_force (GTC/IOC/FOK, only LIMIT), adding meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Crea una orden de compra/venta' (creates a buy/sell order), using a specific verb and resource. This distinguishes it from siblings like get_price, cancel_order, and withdraw, as it is the only one that places orders.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through the purpose but does not explicitly state when to use this tool versus alternatives (e.g., 'use get_price to check prices before placing an order'). There is no mention of prerequisites, exclusions, or context like market vs limit behavior beyond parameter constraints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

withdrawA

Retira fondos a una direccion externa. DESACTIVADO por defecto. Para usarlo: ENABLE_WITHDRAWALS=true y la API key debe tener permiso de retiro. Entende el riesgo antes de activarlo.

ParametersJSON Schema
NameRequiredDescriptionDefault
coinYes
amountYes
addressYes
networkNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description takes on full responsibility for behavioral disclosure. It discloses the disabled-by-default state, the required config flag and permission, and a risk warning. However, it omits crucial details like irreversibility of withdrawals and potential failure modes, which would be expected for a high-risk financial operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loaded with the core action, and then efficiently presents activation and risk context in a few short sentences. Every sentence contributes critical information without redundant elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers activation context and risk, which is essential, but fails to describe what happens after a withdrawal is submitted (e.g., response format, transaction confirmation, or irreversibility). Given the absence of an output schema and the high stakes, this is a notable gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for parameter explanations. It adds only a hint that the address is external, but does not explain coin type, amount units, or the optional network parameter. This leaves substantial ambiguity for the four parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Retira fondos' (withdraw funds) and the resource 'direccion externa' (external address), distinguishing this from trading and account tools among siblings. It also uniquely identifies the operation as a withdrawal, making its purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit activation prerequisites ('DESACTIVADO por defecto', 'ENABLE_WITHDRAWALS=true', API key permission) and a risk warning, effectively telling the agent when the tool can and should be used. This goes beyond typical usage guidance by specifying the condition under which it is disabled.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updatesv0.1.0
    • First observedcancel_all_orders
    • First observedcancel_order
    • First observedget_24h_stats
    • First observedget_account
    • First observedget_klines
    • First observedget_my_trades
    • First observedget_open_orders
    • First observedget_order_book
    • First observedget_price
    • First observedplace_order
    • First observedwithdraw

TDQS

A3.7/5.0

Scored across 11 tools

Disambiguation5/5

Each tool targets a distinct resource and action (market data, account, orders, withdrawals). The slight conceptual overlap between get_price and get_24h_stats is easily resolved by their descriptions, and cancel_order vs cancel_all_orders is clearly differentiated by scope.

Naming Consistency5/5

All tools use a consistent verb_noun snake_case pattern (withdraw, get_price, place_order, cancel_order). Even get_24h_stats fits the convention. No mixed naming styles or ambiguous verbs.

Tool Count5/5

With 11 tools, the server is well-scoped for a Binance trading API: market data queries, account information, order management, and withdrawals are all covered without unnecessary bloat. This is within the ideal range for a focused exchange integration.

Completeness4/5

The core spot trading lifecycle is well covered: price/klines/order book for market data, account balance/open orders/trades for status, and order placement/cancellation for trading actions. A notable missing piece is a specific get_order_status endpoint, but agents can use open orders or trade history as a workaround. Withdrawal history and deposit info are also absent but not essential for the main use case.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides over 156 tools to interact with the Binance.com global exchange API for spot trading, wallet management, and staking operations. It enables users to execute orders, retrieve market data, and manage crypto assets through natural language interfaces like Claude and ChatGPT.
    50 npm
    39
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides comprehensive Binance trading capabilities through Claude Desktop, including account management, spot and futures trading, market data, and advanced analysis tools.
    35
    69 npm
    10
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to interact directly with the Binance cryptocurrency exchange for trading, portfolio management, market analysis, and strategy automation via natural language.
    50 npm
    MIT