MCP server for Binance spot: an AI reads markets and proposes orders, but a separate human-gated process holds the trade key and is the only thing that can execute. Security-first, 18 tools, 99% test coverage.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
tools
-
binance_backtest
Lightweight, no-lookahead backtest of a simple rule
-
binance_backtest_signal
Backtest the composite technical signal (no lookahead, sentiment=0)
-
binance_cancel_order_propose
Proposes a cancellation (re-checks state); does not cancel
-
binance_cancel_order_status
Polls the outcome of a cancellation
-
binance_compute_indicators
RSI / MACD / EMA / Bollinger / ATR. Returns only the latest value per series by default (last_n=1) to keep responses small; raise last_n for recent history
-
binance_generate_signal
Composite, transparent signal: direction + score + per-factor rationale + ATR risk levels
-
binance_get_account_info
Flags + fees; key permissions (mainnet)
-
binance_get_balance
Spot balances (free/locked), non-zero only
-
binance_get_klines
OHLCV candles (Decimal) for a pair/interval
-
binance_get_news
Crypto headlines from RSS (CoinDesk, crypto.news)
-
binance_get_open_orders
Open spot orders + status
-
binance_get_order_history
Closed spot order history
-
binance_get_price
Current price/ticker for a symbol
-
binance_get_sentiment
Aggregated raw sentiment (lexicon, not a prediction)
-
binance_get_ticker_24h
Rolling 24h stats (% change, high/low, volume)
-
binance_scan_signals
Signals for a watchlist, ranked by score
-
binance_spot_order_propose
Proposes an order; does not execute. Returns intent_id
-
binance_spot_order_status
Polls the outcome of a proposal
filesystem 3
- fs Alejandrehl-kainext-binance-mcp-107f6e8/scripts/smoke_dialog_testnet.py :105
print(f"[smoke] audit.log:\n{open(audit_path).read().strip()}", flush=True) - fs Alejandrehl-kainext-binance-mcp-107f6e8/src/kainext_binance_mcp/ipc.py :134
os.unlink(socket_path) - fs Alejandrehl-kainext-binance-mcp-107f6e8/src/kainext_binance_mcp_confirmer/audit.py :60
fd = os.open(path, os.O_WRONLY | os.O_CREAT | os.O_APPEND, 0o600)
shell / exec 1
- shell Alejandrehl-kainext-binance-mcp-107f6e8/src/kainext_binance_mcp_confirmer/dialog.py :4
import subprocess
network 3
- net Alejandrehl-kainext-binance-mcp-107f6e8/src/kainext_binance_mcp/idempotency.py :5
from requests.exceptions import ConnectionError as ReqConnError, Timeout as ReqTimeout - net Alejandrehl-kainext-binance-mcp-107f6e8/src/kainext_binance_mcp/ipc.py :17
import socket - net Alejandrehl-kainext-binance-mcp-107f6e8/src/kainext_binance_mcp/news/sources.py :14
import socket
tool registrations 18
- binance_get_balance Alejandrehl-kainext-binance-mcp-107f6e8/src/kainext_binance_mcp/server.py :65
- binance_get_price Alejandrehl-kainext-binance-mcp-107f6e8/src/kainext_binance_mcp/server.py :70
- binance_get_open_orders Alejandrehl-kainext-binance-mcp-107f6e8/src/kainext_binance_mcp/server.py :75
- binance_get_order_history Alejandrehl-kainext-binance-mcp-107f6e8/src/kainext_binance_mcp/server.py :80
- binance_get_account_info Alejandrehl-kainext-binance-mcp-107f6e8/src/kainext_binance_mcp/server.py :85
- binance_get_klines Alejandrehl-kainext-binance-mcp-107f6e8/src/kainext_binance_mcp/server.py :91
- binance_get_ticker_24h Alejandrehl-kainext-binance-mcp-107f6e8/src/kainext_binance_mcp/server.py :96
- binance_compute_indicators Alejandrehl-kainext-binance-mcp-107f6e8/src/kainext_binance_mcp/server.py :101
- binance_backtest Alejandrehl-kainext-binance-mcp-107f6e8/src/kainext_binance_mcp/server.py :112
- binance_get_news Alejandrehl-kainext-binance-mcp-107f6e8/src/kainext_binance_mcp/server.py :120
- binance_get_sentiment Alejandrehl-kainext-binance-mcp-107f6e8/src/kainext_binance_mcp/server.py :126
- binance_generate_signal Alejandrehl-kainext-binance-mcp-107f6e8/src/kainext_binance_mcp/server.py :134
- binance_scan_signals Alejandrehl-kainext-binance-mcp-107f6e8/src/kainext_binance_mcp/server.py :141
- binance_backtest_signal Alejandrehl-kainext-binance-mcp-107f6e8/src/kainext_binance_mcp/server.py :146
- binance_spot_order_propose Alejandrehl-kainext-binance-mcp-107f6e8/src/kainext_binance_mcp/server.py :157
- binance_spot_order_status Alejandrehl-kainext-binance-mcp-107f6e8/src/kainext_binance_mcp/server.py :169
- binance_cancel_order_propose Alejandrehl-kainext-binance-mcp-107f6e8/src/kainext_binance_mcp/server.py :174
- binance_cancel_order_status Alejandrehl-kainext-binance-mcp-107f6e8/src/kainext_binance_mcp/server.py :180