MCP server for Bitkub API — 28 tools for market data, trading, orders, wallet, and crypto management on Thailand's leading exchange
Bitkub MCP demonstrates solid foundational quality with 28 well-structured tools, clear naming conventions, and comprehensive parameter schemas. All tools follow verb_noun naming patterns (btk_get_*, btk_place_*, btk_crypto_*). Tool descriptions are present and generally informative (avg ~150 chars), explaining WHAT the tool does and WHEN to use it. However, the server exhibits several systematic gaps: (1) Parameter descriptions for optional _fields parameters across all tools are generic and repetitive ('Comma-separated list of fields to include in response'), providing minimal guidance on valid field names or use cases; (2) Output schemas are completely undocumented, no description of what fields are returned, their types, or how downstream tools should consume them; (3) Error handling guidance is absent, no recovery patterns or actionable error messages; (4) Some parameter relationships are underdocumented (e.g., btk_cancel_order requires 'id' OR 'hash' but this is stated only in description, not as a schema constraint). Despite these gaps, the server demonstrates above-average implementation quality for community MCP servers, with consistent patterns, proper type definitions, and pragmatic tool grouping. Estimated median tool score: 68/100, driven by strong naming/description but weak output documentation and error handling.
Get sell-side order book (asks) for a symbol. Each entry: [price, volume, timestamp].
Get complete balances for all currencies including both available and reserved amounts.
Get buy-side order book (bids) for a symbol. Each entry: [price, volume, timestamp].
Get complete order book (both bids and asks) for a symbol.
Cancel an open order by order ID or order hash.
Get all deposit addresses for a user. Returns crypto address, tag/memo, network, and timestamp.
Output schemas completely undocumented. No tool describes what fields are returned, their types, or structure. LLMs cannot plan downstream tool calls or extract specific data without documented return schemas.
Generic _fields parameter descriptions across 28 tools. Description 'Comma-separated list of fields to include in response' provides zero guidance on (1) valid field names for each tool, (2) whether this parameter is commonly needed, (3) what happens if omitted. LLMs cannot infer valid field values.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 35 | - | v1 |
Get crypto deposit history. Shows hash, currency, amount, address, status, and confirmation count.
Generate a new deposit address for a cryptocurrency.
Withdraw crypto to another Bitkub user account (internal transfer). WARNING: Uses real money.
Withdraw crypto to an address (must be in whitelist). WARNING: Uses real money, cannot be reversed.
Get crypto withdrawal history. Shows txn ID, hash, currency, amount, fee, address, and status.
Get market depth for a symbol. Similar to order book but without timestamps — just [price, volume] pairs.
Get all open orders for a symbol or all symbols.
Get order history for a symbol or all symbols. Paginated response; archive data available for 90 days.
Get detailed info for an order: status, fills, partial fills, remaining amount.
Place a sell order. For limit orders specify rate. For market orders, rate is ignored. WARNING: Uses real money.
Test sell order without using real money. Validates order parameters and returns the order result.
Place a buy order. For limit orders specify rate. For market orders, rate is ignored. WARNING: Uses real money.
Test buy order without using real money. Validates order parameters and returns the order result.
Get recent trades for a symbol. Each trade includes timestamp, price, amount, and side (BUY/SELL).
Get Bitkub API server status. Returns status for both non-secure and secure endpoints.
Get Bitkub server time (millisecond timestamp). Use to check connectivity and sync timestamps for signed requests.
List all trading symbols on Bitkub with details: base/quote asset, price scale, min order size, status, market segment. The "source" field indicates "exchange" (regular) or "broker" (broker coins).
Get 24-hour ticker data: last price, bid/ask, percent change, volume, high/low. Returns all symbols if no sym specified.
Get trading credit balance. Trading credits can be used to offset trading fees.
Get TradingView-compatible OHLCV candlestick data. Returns arrays of open, high, low, close, volume for charting.
Get user deposit/withdrawal limits and current usage for both crypto and fiat currencies.
Get available balances for all currencies. Shows only available balance (not reserved). For full balance info, use btk_balances.
No error handling documentation. Tools like btk_place_bid, btk_crypto_withdraw, and btk_cancel_order can fail (insufficient balance, invalid order, invalid address) but descriptions provide no recovery guidance. LLMs have no guidance on what to do on failure.
Mutually exclusive parameters not clearly documented. btk_cancel_order requires 'id' OR 'hash' but schema has both optional with only description hint. btk_order_info has same pattern. LLMs will not reliably enforce mutual exclusivity.
Numeric parameters lack explicit min/max constraints in schema. lmt parameters (trades, order book entries) state 'default: 10, max: 100' in description but no JSON Schema maxItems/maximum. LLMs may pass invalid values outside documented ranges.
No confirmation pattern for irreversible operations. btk_crypto_withdraw and btk_place_bid both modify account state irreversibly but lack dry-run, test, or confirmation mechanism to validate before execution.
Test tool naming ambiguity. btk_place_bid_test and btk_place_ask_test suggest testing, but naming does not follow standard convention. LLMs may confuse them with production tools. Convention should be clearer (e.g., _dry_run or explicit 'test' prefix in description).