@nemesis-oss/binance-sdk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/tools/index.ts","../../src/tools/account.tools.ts","../../src/tools/types.ts","../../src/tools/derived.tools.ts","../../src/tools/market-data.tools.ts","../../src/types/market.types.ts","../../src/tools/paper.tools.ts","../../src/tools/spot.tools.ts","../../src/tools/trading.tools.ts","../../src/tools/ws.tools.ts"],"sourcesContent":["import type { BinanceClient } from '../client/BinanceClient.js';\nimport { accountTools } from './account.tools.js';\nimport { derivedTools } from './derived.tools.js';\nimport { marketDataTools } from './market-data.tools.js';\nimport { createPaperContext, type PaperContext, paperTools } from './paper.tools.js';\nimport { spotTools } from './spot.tools.js';\nimport { tradingTools } from './trading.tools.js';\nimport { wsTools } from './ws.tools.js';\nimport type { ToolDefinition } from './types.js';\nimport { toToolList } from './types.js';\n\nexport type { ToolDefinition, ToolContext } from './types.js';\nexport { toJsonSchema, toOpenAITool, toAnthropicTool, toMCPTool, toToolList, textResult } from './types.js';\nexport { marketDataTools } from './market-data.tools.js';\nexport { accountTools } from './account.tools.js';\nexport { tradingTools } from './trading.tools.js';\nexport { spotTools } from './spot.tools.js';\nexport { derivedTools } from './derived.tools.js';\nexport { wsTools, getBufferedWsEvents, clearBufferedWsEvents } from './ws.tools.js';\nexport { createPaperContext, paperTools, type PaperState, type PaperPosition, type PaperEvent, type PaperContext } from './paper.tools.js';\n\nexport interface FuturesToolkit {\n client: BinanceClient;\n tools: ToolDefinition[];\n market: ToolDefinition[];\n account: ToolDefinition[];\n trading: ToolDefinition[];\n spot: ToolDefinition[];\n ws: ToolDefinition[];\n /** Composite tools that fan out over several endpoints. */\n derived: ToolDefinition[];\n paper: ToolDefinition[];\n paperContext: PaperContext;\n}\n\nexport function createFuturesToolkit(client: BinanceClient): FuturesToolkit {\n const market = marketDataTools(client);\n const account = accountTools(client);\n const trading = tradingTools(client);\n const spot = spotTools(client);\n const ws = wsTools(client);\n const derived = derivedTools(client);\n const paperContext = createPaperContext(client);\n const paper = paperTools(paperContext);\n return {\n client,\n tools: [...market, ...account, ...trading, ...spot, ...ws, ...derived, ...paper],\n market,\n account,\n trading,\n spot,\n ws,\n derived,\n paper,\n paperContext,\n };\n}\n\nexport function toolkitToFormats(toolkit: FuturesToolkit): {\n openai: Record<string, unknown>[];\n anthropic: Record<string, unknown>[];\n mcp: Record<string, unknown>[];\n} {\n return {\n openai: toToolList(toolkit.tools, 'openai'),\n anthropic: toToolList(toolkit.tools, 'anthropic'),\n mcp: toToolList(toolkit.tools, 'mcp'),\n };\n}\n","import { z } from 'zod';\nimport type { BinanceClient } from '../client/BinanceClient.js';\nimport type { ToolDefinition } from './types.js';\nimport { textResult, normalizeSymbol } from './types.js';\n\nconst optionalSymbol = z.string().min(1).describe('USD-M pair, e.g. BTCUSDT').optional();\nconst limit = z.number().int().positive().max(1000).default(100);\nconst startTime = z.number().int().positive().optional();\nconst endTime = z.number().int().positive().optional();\n\nexport function accountTools(client: BinanceClient): ToolDefinition[] {\n const a = client.futures.account;\n\n return [\n {\n name: 'futures_balance',\n description: 'Get futures account balances (v3): asset, wallet balance, unrealized profit, margin balance, available balance (signed).',\n inputSchema: z.object({}),\n handler: async () => textResult(await a.balanceV3()),\n },\n {\n name: 'futures_account',\n description: 'Get full account information (v3): total wallet/margin balance, unrealized profit, available balance, assets & positions (signed).',\n inputSchema: z.object({}),\n handler: async () => textResult(await a.accountV3()),\n },\n {\n name: 'futures_balance_v2',\n description: 'Get futures account balance (v2 legacy) per asset (signed).',\n inputSchema: z.object({}),\n handler: async () => textResult(await a.balance()),\n },\n {\n name: 'futures_account_v2',\n description: 'Get futures account information (v2 legacy) (signed).',\n inputSchema: z.object({}),\n handler: async () => textResult(await a.account()),\n },\n {\n name: 'futures_position_risk',\n description: 'Get current open positions (v3): symbol, side, size, entry price, mark price, liquidation price, leverage, unrealized PnL, margin (signed).',\n inputSchema: z.object({ symbol: optionalSymbol }),\n handler: async ({ symbol }) => textResult(await a.positionRiskV3(symbol ? normalizeSymbol(symbol) : undefined)),\n },\n {\n name: 'futures_income_history',\n description: 'Get futures income history (realized PnL, funding fees, commissions, transfers, insurance clearing). incomeType examples: TRANSFER, REALIZED_PNL, FUNDING_FEE, COMMISSION, INSURANCE_CLEAR, REFERRAL_KICKBACK (signed).',\n inputSchema: z.object({ symbol: optionalSymbol, incomeType: z.string().optional().describe('e.g. TRANSFER, REALIZED_PNL, FUNDING_FEE, COMMISSION'), startTime, endTime, limit: limit.default(100) }),\n handler: async ({ symbol, incomeType, startTime, endTime, limit }) =>\n textResult(await a.incomeHistory({ symbol: symbol ? normalizeSymbol(symbol) : undefined, incomeType, startTime, endTime, limit: Number(limit) })),\n },\n {\n name: 'futures_user_trades',\n description: 'Get account trade list (filled trades) for a symbol with optional time range (signed).',\n inputSchema: z.object({ symbol: z.string().min(1).describe('USD-M pair, e.g. BTCUSDT'), startTime, endTime, limit: limit.default(100), fromId: z.number().int().positive().optional() }),\n handler: async ({ symbol, startTime, endTime, limit, fromId }) =>\n textResult(await a.userTrades({ symbol: normalizeSymbol(symbol), startTime, endTime, limit: Number(limit), fromId })),\n },\n {\n name: 'futures_leverage_brackets',\n description: 'Get notional and leverage brackets for one symbol or all: tier caps, maintenance margin rate, max leverage (signed).',\n inputSchema: z.object({ symbol: optionalSymbol }),\n handler: async ({ symbol }) => textResult(await a.leverageBrackets(symbol ? normalizeSymbol(symbol) : undefined)),\n },\n {\n name: 'futures_commission_rate',\n description: 'Get user commission rate (taker & maker fee) for a symbol (signed).',\n inputSchema: z.object({ symbol: z.string().min(1).describe('USD-M pair, e.g. ETHUSDT') }),\n handler: async ({ symbol }) => textResult(await a.commissionRate(normalizeSymbol(symbol))),\n },\n {\n name: 'futures_multi_assets_mode',\n description: 'Get current multi-assets margin mode status (signed).',\n inputSchema: z.object({}),\n handler: async () => textResult(await a.multiAssetsMargin()),\n },\n {\n name: 'futures_set_multi_assets_mode',\n description: 'Enable or disable multi-assets mode (signed; 7-day cooldown between toggles).',\n inputSchema: z.object({ enabled: z.boolean().describe('true to enable, false to disable') }),\n handler: async ({ enabled }) => textResult(await a.setMultiAssetsMargin(enabled)),\n },\n {\n name: 'futures_fee_burn_status',\n description: 'Get BNB fee burn status for futures trades (signed).',\n inputSchema: z.object({}),\n handler: async () => textResult(await a.feeBurnStatus()),\n },\n {\n name: 'futures_set_fee_burn',\n description: 'Toggle BNB fee burn on futures trades (signed).',\n inputSchema: z.object({ enabled: z.boolean().describe('true to enable fee burn') }),\n handler: async ({ enabled }) => textResult(await a.setFeeBurnStatus(enabled)),\n },\n {\n name: 'futures_position_mode',\n description: 'Get current position mode: one-way (BOTH) or hedge mode (LONG/SHORT) (signed).',\n inputSchema: z.object({}),\n handler: async () => textResult(await a.positionMode()),\n },\n {\n name: 'futures_set_position_mode',\n description: 'Change position mode: hedgeMode true = dual side (hedge), false = one-way (signed; 30-day cooldown).',\n inputSchema: z.object({ hedgeMode: z.boolean().describe('true = hedge mode, false = one-way') }),\n handler: async ({ hedgeMode }) => textResult(await a.setPositionMode(hedgeMode)),\n },\n {\n name: 'futures_api_trading_status',\n description: 'Get futures trading quantitative rules indicators and disable intervals (signed).',\n inputSchema: z.object({}),\n handler: async () => textResult(await a.apiTradingStatus()),\n },\n {\n name: 'futures_position_margin_history',\n description: 'Get isolated position margin change history. type: 1 = add margin, 2 = reduce margin (signed).',\n inputSchema: z.object({ symbol: z.string().min(1).describe('USD-M pair, e.g. BTCUSDT'), type: z.enum(['1', '2']).describe('1 = add margin, 2 = reduce margin'), startTime, endTime, limit: limit.default(50) }),\n handler: async ({ symbol, type, startTime, endTime, limit }) =>\n textResult(await a.positionMarginHistory({ symbol: normalizeSymbol(symbol), type: Number(type), startTime, endTime, limit: Number(limit) })),\n },\n {\n name: 'futures_rate_limit_order',\n description: 'Query the current user order rate limit usage (signed).',\n inputSchema: z.object({}),\n handler: async () => textResult(await a.rateLimitOrder()),\n },\n {\n name: 'futures_request_order_download',\n description: 'Request a futures order-history download (async, 7-day window). Returns a downloadId (signed).',\n inputSchema: z.object({ symbol: optionalSymbol, startTime, endTime }),\n handler: async ({ symbol, startTime, endTime }) =>\n textResult(await a.requestOrderDownload({ symbol: symbol ? normalizeSymbol(symbol) : undefined, startTime, endTime })),\n },\n {\n name: 'futures_order_download_status',\n description: 'Get the futures order-history download link by downloadId (signed).',\n inputSchema: z.object({ downloadId: z.string().min(1) }),\n handler: async ({ downloadId }) => textResult(await a.getOrderDownloadStatus(downloadId)),\n },\n {\n name: 'futures_request_trade_download',\n description: 'Request a futures trade-history download (async, 7-day window). Returns a downloadId (signed).',\n inputSchema: z.object({ symbol: optionalSymbol, startTime, endTime }),\n handler: async ({ symbol, startTime, endTime }) =>\n textResult(await a.requestTradeDownload({ symbol: symbol ? normalizeSymbol(symbol) : undefined, startTime, endTime })),\n },\n {\n name: 'futures_trade_download_status',\n description: 'Get the futures trade-history download link by downloadId (signed).',\n inputSchema: z.object({ downloadId: z.string().min(1) }),\n handler: async ({ downloadId }) => textResult(await a.getTradeDownloadStatus(downloadId)),\n },\n {\n name: 'futures_account_config',\n description: 'Get futures account configuration: fee tier, trading permissions, dual-side position setting (signed).',\n inputSchema: z.object({}),\n handler: async () => textResult(await a.accountConfig()),\n },\n {\n name: 'futures_portfolio_margin_account_info',\n description: 'Get Portfolio Margin account info for an asset: cross margin balance and liability (signed).',\n inputSchema: z.object({ asset: z.string().min(1).describe('Asset, e.g. USDT') }),\n handler: async ({ asset }) => textResult(await a.pmAccountInfo(asset)),\n },\n {\n name: 'futures_request_income_download',\n description: 'Request a futures income/transaction-history download (async). Returns a downloadId (signed).',\n inputSchema: z.object({ startTime: startTime.unwrap(), endTime: endTime.unwrap() }),\n handler: async ({ startTime, endTime }) => textResult(await a.requestIncomeDownload({ startTime, endTime })),\n },\n {\n name: 'futures_income_download_status',\n description: 'Get the futures income/transaction-history download link by downloadId (signed).',\n inputSchema: z.object({ downloadId: z.string().min(1) }),\n handler: async ({ downloadId }) => textResult(await a.getIncomeDownloadStatus(downloadId)),\n },\n ];\n}\n","import { z } from 'zod';\n\nexport interface ToolContext {\n env: 'live' | 'testnet' | 'demo';\n isSigned: boolean;\n}\n\nexport interface ToolDefinition<TInput extends z.ZodTypeAny = z.ZodTypeAny> {\n name: string;\n description: string;\n inputSchema: TInput;\n handler: (args: any, ctx: ToolContext) => Promise<unknown>;\n}\n\nexport function normalizeSymbol(value: unknown): string {\n return String(value ?? '').trim().toUpperCase();\n}\nexport function normalizeLimit(value: unknown): number {\n return Number(value);\n}\n\nexport function toJsonSchema(inputSchema: z.ZodTypeAny): Record<string, unknown> {\n return z.toJSONSchema(inputSchema, { target: 'json' });\n}\n\nexport function toOpenAITool(tool: ToolDefinition): Record<string, unknown> {\n return {\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: toJsonSchema(tool.inputSchema),\n },\n };\n}\n\nexport function toAnthropicTool(tool: ToolDefinition): Record<string, unknown> {\n return {\n name: tool.name,\n description: tool.description,\n input_schema: toJsonSchema(tool.inputSchema),\n };\n}\n\nexport function toMCPTool(tool: ToolDefinition): {\n name: string;\n description: string;\n inputSchema: Record<string, unknown>;\n} {\n return {\n name: tool.name,\n description: tool.description,\n inputSchema: toJsonSchema(tool.inputSchema),\n };\n}\n\nexport function toToolList<TInput extends z.ZodTypeAny>(\n tools: ToolDefinition<TInput>[],\n format: 'openai' | 'anthropic' | 'mcp',\n): Record<string, unknown>[] {\n const adapter =\n format === 'openai' ? toOpenAITool : format === 'anthropic' ? toAnthropicTool : toMCPTool;\n return tools.map(adapter);\n}\n\nexport function textResult(data: unknown): string {\n return JSON.stringify(data, null, 2);\n}\n","import { z } from 'zod';\nimport type { BinanceClient } from '../client/BinanceClient.js';\nimport type { ToolDefinition } from './types.js';\nimport { textResult, normalizeSymbol } from './types.js';\n\nconst symbol = z.string().min(1).describe('USD-M pair, e.g. BTCUSDT');\n\n/**\n * Derived tools: each one fans out over several REST endpoints and returns a\n * single answer. They exist so the model does not have to chain primitives and\n * do float arithmetic on tick/step sizes itself.\n */\nexport function derivedTools(client: BinanceClient): ToolDefinition[] {\n const ops = client.futures.ops;\n\n return [\n {\n name: 'futures_symbol_rules',\n description:\n 'Get the tradeable rules for a symbol in one call: tick size, step size, min/max quantity, market-order lot bounds and minimum notional, flattened out of exchangeInfo filters. Call this before sizing or pricing any order.',\n inputSchema: z.object({ symbol, refresh: z.boolean().default(false).describe('Bypass the 60s cache') }),\n handler: async ({ symbol: s, refresh }) => textResult(await ops.symbolRules(normalizeSymbol(s), { refresh })),\n },\n {\n name: 'futures_quantize',\n description:\n \"Round a price to the symbol's tick size and a quantity to its step size, returning exchange-ready strings. Use this instead of rounding numbers yourself — Binance rejects off-tick prices (-1111).\",\n inputSchema: z.object({\n symbol,\n price: z.number().positive().optional(),\n quantity: z.number().positive().optional(),\n marketOrder: z.boolean().default(false).describe('Use MARKET_LOT_SIZE bounds instead of LOT_SIZE'),\n }),\n handler: async ({ symbol: s, price, quantity, marketOrder }) =>\n textResult(await ops.quantize(normalizeSymbol(s), { price, quantity, marketOrder })),\n },\n {\n name: 'futures_size_position',\n description:\n 'Convert a risk budget into an exchange-ready order quantity. Given a stop price and either riskAmount (quote currency) or riskPct (percent of available balance), returns the quantity rounded down to the symbol step size, plus the notional, required margin and every constraint that failed (min notional, lot bounds, wrong-side stop). Never increases risk to satisfy a minimum — it reports instead.',\n inputSchema: z.object({\n symbol,\n side: z.enum(['BUY', 'SELL']),\n stopPrice: z.number().positive().describe('Protective stop price'),\n entryPrice: z.number().positive().optional().describe('Defaults to current mark price'),\n riskAmount: z.number().positive().optional().describe('Quote-currency amount to risk, e.g. 50 USDT'),\n riskPct: z.number().positive().max(100).optional().describe('Percent of available balance to risk (signed call)'),\n leverage: z.number().int().min(1).max(125).optional().describe('Used to report required margin'),\n marketOrder: z.boolean().default(false),\n }),\n handler: async (args) => textResult(await ops.sizePosition({ ...args, symbol: normalizeSymbol(args.symbol) })),\n },\n {\n name: 'futures_close_position',\n description:\n 'Flatten an open position with a reduce-only market order. Reads the current position, derives the closing side from its sign, and automatically uses reduceOnly in one-way mode vs positionSide in hedge mode (Binance rejects the wrong one). Set dryRun to preview the order without sending it. Signed, destructive.',\n inputSchema: z.object({\n symbol,\n positionSide: z.enum(['BOTH', 'LONG', 'SHORT']).optional().describe('Required when hedge mode has both sides open'),\n portion: z.number().positive().max(1).default(1).describe('Fraction of the position to close, e.g. 0.5 for half'),\n dryRun: z.boolean().default(false),\n }),\n handler: async (args) => textResult(await ops.closePosition({ ...args, symbol: normalizeSymbol(args.symbol) })),\n },\n {\n name: 'futures_market_snapshot',\n description:\n 'One-call market picture for a symbol: 24h stats, mark/index price with funding, open interest and long/short positioning. Replaces four separate primitive calls; individual feeds degrade to an error field rather than failing the whole snapshot.',\n inputSchema: z.object({\n symbol,\n period: z.enum(['5m', '15m', '30m', '1h', '2h', '4h', '6h', '12h', '1d']).default('1h'),\n }),\n handler: async ({ symbol: s, period }) => textResult(await ops.marketSnapshot(normalizeSymbol(s), { period })),\n },\n {\n name: 'futures_account_overview',\n description:\n 'One-call account picture: funded balances, open positions only (zero-size entries filtered out), working orders, and totals for unrealized PnL and gross notional. Signed.',\n inputSchema: z.object({}),\n handler: async () => textResult(await ops.accountOverview()),\n },\n {\n name: 'futures_place_bracket_order',\n description:\n 'Place an entry order together with its protective stop-loss and optional take-profit, with all prices quantized to the symbol tick. Returns each leg separately; if a protective leg fails the response is flagged protectionComplete=false and the entry is NOT auto-cancelled (it may already have filled). Signed, destructive.',\n inputSchema: z.object({\n symbol,\n side: z.enum(['BUY', 'SELL']),\n quantity: z.union([z.string(), z.number()]),\n entryPrice: z.number().positive().optional().describe('Omit for a MARKET entry'),\n stopLossPrice: z.number().positive(),\n takeProfitPrice: z.number().positive().optional(),\n positionSide: z.enum(['BOTH', 'LONG', 'SHORT']).optional(),\n workingType: z.enum(['MARK_PRICE', 'CONTRACT_PRICE']).default('MARK_PRICE'),\n }),\n handler: async (args) => textResult(await ops.placeBracketOrder({ ...args, symbol: normalizeSymbol(args.symbol) })),\n },\n ];\n}\n","import { z } from 'zod';\nimport type { BinanceClient } from '../client/BinanceClient.js';\nimport { KlineIntervalSchema } from '../types/market.types.js';\nimport type { ToolDefinition } from './types.js';\nimport { textResult, normalizeSymbol } from './types.js';\n\nconst u = (s: z.ZodTypeAny) => s.optional();\nconst optSymbol = u(z.string().min(1)).describe('USD-M pair, e.g. BTCUSDT');\nconst limitDefault = z.number().int().positive().max(1500).default(100);\nconst startTime = z.number().int().positive().optional();\nconst endTime = z.number().int().positive().optional();\nconst period = z.enum(['5m', '15m', '30m', '1h', '2h', '4h', '6h', '12h', '1d']).default('1h');\nconst contractType = z.enum(['perpetual', 'current_quarter', 'next_quarter']).default('perpetual');\n\nexport function marketDataTools(client: BinanceClient): ToolDefinition[] {\n const m = client.futures.market;\n const d = client.futures.data;\n\n const tools: ToolDefinition[] = [\n {\n name: 'futures_ping',\n description: 'Test connectivity to the Binance USD-M futures REST API. Returns empty object {} on success.',\n inputSchema: z.object({}),\n handler: async () => textResult(await m.ping()),\n },\n {\n name: 'futures_server_time',\n description: 'Get the current Binance USD-M futures server time in milliseconds since epoch.',\n inputSchema: z.object({}),\n handler: async () => textResult(await m.serverTime()),\n },\n {\n name: 'futures_exchange_info',\n description: 'Get exchange trading rules and symbol metadata: contract type, status, base/quote assets, price/quantity filters, tick size, step size, notional and leverage brackets, delivery dates.',\n inputSchema: z.object({}),\n handler: async () => textResult(await m.exchangeInfo()),\n },\n {\n name: 'futures_ticker_price',\n description: 'Get latest price for one symbol (v1).',\n inputSchema: z.object({ symbol: z.string().min(1).describe('USD-M pair, e.g. BTCUSDT') }),\n handler: async ({ symbol }) => textResult(await m.tickerPrice(normalizeSymbol(symbol))),\n },\n {\n name: 'futures_ticker_price_v2',\n description: 'Get latest price for one symbol, or for all symbols when symbol is omitted (v2 endpoint). Use all-symbols mode for market overviews.',\n inputSchema: z.object({ symbol: optSymbol }),\n handler: async ({ symbol }) => textResult(await m.tickerPriceV2(symbol ? normalizeSymbol(symbol) : undefined)),\n },\n {\n name: 'futures_ticker_24hr',\n description: 'Get 24-hour rolling price change statistics for a symbol: price change %, high, low, volume, quote volume, open interest.',\n inputSchema: z.object({ symbol: z.string().min(1).describe('USD-M pair, e.g. BTCUSDT') }),\n handler: async ({ symbol }) => textResult(await m.ticker24hr(normalizeSymbol(symbol))),\n },\n {\n name: 'futures_book_ticker',\n description: 'Get best bid/ask (top of book) for a single symbol (v1).',\n inputSchema: z.object({ symbol: z.string().min(1).describe('USD-M pair, e.g. BTCUSDT') }),\n handler: async ({ symbol }) => textResult(await m.bookTicker(normalizeSymbol(symbol))),\n },\n {\n name: 'futures_book_ticker_v2',\n description: 'Get best bid/ask (top of book) for one symbol, or all symbols when omitted (v2 endpoint).',\n inputSchema: z.object({ symbol: optSymbol }),\n handler: async ({ symbol }) => textResult(await m.bookTickerV2(symbol ? normalizeSymbol(symbol) : undefined)),\n },\n {\n name: 'futures_order_book',\n description: 'Get order book depth for a symbol. Limits: 5, 10, 20, 50, 100, 500, 1000.',\n inputSchema: z.object({\n symbol: z.string().min(1).describe('USD-M pair, e.g. BTCUSDT'),\n limit: z.enum(['5', '10', '20', '50', '100', '500', '1000']).default('100'),\n }),\n handler: async ({ symbol, limit }) => textResult(await m.depth(normalizeSymbol(symbol), Number(limit))),\n },\n {\n name: 'futures_recent_trades',\n description: 'Get the most recent executed trades for a symbol (public endpoint).',\n inputSchema: z.object({\n symbol: z.string().min(1).describe('USD-M pair, e.g. BTCUSDT'),\n limit: limitDefault.default(500),\n }),\n handler: async ({ symbol, limit }) => textResult(await m.trades(normalizeSymbol(symbol), Number(limit))),\n },\n {\n name: 'futures_historical_trades',\n description: 'Get older trades for a symbol by fromId (older than recent).',\n inputSchema: z.object({\n symbol: z.string().min(1).describe('USD-M pair, e.g. BTCUSDT'),\n limit: limitDefault.default(500),\n fromId: z.number().int().positive().optional(),\n }),\n handler: async ({ symbol, limit, fromId }) =>\n textResult(await m.historicalTrades(normalizeSymbol(symbol), { limit: Number(limit), fromId })),\n },\n {\n name: 'futures_agg_trades',\n description: 'Get compressed/aggregate trades for a symbol within an optional time window. Each entry aggregates trades with the same price and side.',\n inputSchema: z.object({ symbol: z.string().min(1).describe('USD-M pair, e.g. BTCUSDT'), limit: limitDefault.default(500), startTime, endTime }),\n handler: async ({ symbol, limit, startTime, endTime }) =>\n textResult(await m.aggTrades(normalizeSymbol(symbol), { limit: Number(limit), startTime, endTime })),\n },\n {\n name: 'futures_klines',\n description: 'Get candlestick (OHLCV) data for a symbol. Intervals: 1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,1M. Max 1500 per request.',\n inputSchema: z.object({ symbol: z.string().min(1).describe('USD-M pair, e.g. BTCUSDT'), interval: KlineIntervalSchema, limit: limitDefault.default(500), startTime, endTime }),\n handler: async ({ symbol, interval, limit, startTime, endTime }) =>\n textResult(await m.klines(normalizeSymbol(symbol), interval, { limit: Number(limit), startTime, endTime })),\n },\n {\n name: 'futures_continuous_klines',\n description: 'Get klines for a continuous contract (perpetual, current_quarter, next_quarter) identified by base pair (e.g. BTCUSDT).',\n inputSchema: z.object({\n symbol: z.string().min(1).describe('Base pair, e.g. BTCUSDT'),\n contractType,\n interval: KlineIntervalSchema,\n limit: limitDefault.default(500),\n startTime,\n endTime,\n }),\n handler: async ({ symbol, contractType, interval, limit, startTime, endTime }) =>\n textResult(await m.continuousKlines(normalizeSymbol(symbol), contractType, interval, { limit: Number(limit), startTime, endTime })),\n },\n {\n name: 'futures_index_price_klines',\n description: 'Get index price candlesticks for a pair (e.g. BTCUSDT index).',\n inputSchema: z.object({ symbol: z.string().min(1).describe('Base pair, e.g. BTCUSDT'), interval: KlineIntervalSchema, limit: limitDefault.default(500), startTime, endTime }),\n handler: async ({ symbol, interval, limit, startTime, endTime }) =>\n textResult(await m.indexPriceKlines(normalizeSymbol(symbol), interval, { limit: Number(limit), startTime, endTime })),\n },\n {\n name: 'futures_mark_price_klines',\n description: 'Get mark price candlesticks for a symbol.',\n inputSchema: z.object({ symbol: z.string().min(1).describe('USD-M pair, e.g. BTCUSDT'), interval: KlineIntervalSchema, limit: limitDefault.default(500), startTime, endTime }),\n handler: async ({ symbol, interval, limit, startTime, endTime }) =>\n textResult(await m.markPriceKlines(normalizeSymbol(symbol), interval, { limit: Number(limit), startTime, endTime })),\n },\n {\n name: 'futures_trading_day_ticker',\n description: 'Get the trading-day ticker (v1: rolling window stats by symbol, including open, close, high, low, volume, closeTime).',\n inputSchema: z.object({ symbol: z.string().min(1).describe('USD-M pair, e.g. BTCUSDT') }),\n handler: async ({ symbol }) => textResult(await m.tradingDayTicker(normalizeSymbol(symbol))),\n },\n {\n name: 'futures_mark_price',\n description: 'Get mark price, index price, estimated settle price, last funding rate, next funding time and interest rate for a symbol.',\n inputSchema: z.object({ symbol: z.string().min(1).describe('USD-M pair, e.g. BTCUSDT') }),\n handler: async ({ symbol }) => textResult(await d.premiumIndex(normalizeSymbol(symbol))),\n },\n {\n name: 'futures_funding_rate_history',\n description: 'Get historical funding rates for a symbol.',\n inputSchema: z.object({ symbol: z.string().min(1).describe('USD-M pair, e.g. BTCUSDT'), limit: limitDefault.default(100), startTime, endTime }),\n handler: async ({ symbol, limit, startTime, endTime }) =>\n textResult(await d.fundingRateHistory(normalizeSymbol(symbol), { limit: Number(limit), startTime, endTime })),\n },\n {\n name: 'futures_funding_info',\n description: 'Get funding rate configuration for all symbols with adjusted funding cap/floor or interval (e.g. under extreme volatility).',\n inputSchema: z.object({}),\n handler: async () => textResult(await d.fundingInfo()),\n },\n {\n name: 'futures_open_interest',\n description: 'Get the current total open interest for a symbol.',\n inputSchema: z.object({ symbol: z.string().min(1).describe('USD-M pair, e.g. BTCUSDT') }),\n handler: async ({ symbol }) => textResult(await d.openInterest(normalizeSymbol(symbol))),\n },\n {\n name: 'futures_open_interest_hist',\n description: 'Get historical open interest statistics per period.',\n inputSchema: z.object({ symbol: z.string().min(1).describe('USD-M pair, e.g. BTCUSDT'), period, limit: limitDefault.default(30) }),\n handler: async ({ symbol, period, limit }) => textResult(await d.openInterestHist(normalizeSymbol(symbol), period, Number(limit))),\n },\n {\n name: 'futures_top_long_short_account_ratio',\n description: 'Get top trader long/short account ratio (number of accounts) for a symbol.',\n inputSchema: z.object({ symbol: z.string().min(1).describe('USD-M pair, e.g. BTCUSDT'), period, limit: limitDefault.default(30) }),\n handler: async ({ symbol, period, limit }) => textResult(await d.topLongShortAccountRatio(normalizeSymbol(symbol), period, Number(limit))),\n },\n {\n name: 'futures_top_long_short_position_ratio',\n description: 'Get top trader long/short position ratio (accounts with net positions) for a symbol.',\n inputSchema: z.object({ symbol: z.string().min(1).describe('USD-M pair, e.g. BTCUSDT'), period, limit: limitDefault.default(30) }),\n handler: async ({ symbol, period, limit }) => textResult(await d.topLongShortPositionRatio(normalizeSymbol(symbol), period, Number(limit))),\n },\n {\n name: 'futures_global_long_short_ratio',\n description: 'Get global long/short account ratio for a symbol (all accounts).',\n inputSchema: z.object({ symbol: z.string().min(1).describe('USD-M pair, e.g. BTCUSDT'), period, limit: limitDefault.default(30) }),\n handler: async ({ symbol, period, limit }) => textResult(await d.globalLongShortAccountRatio(normalizeSymbol(symbol), period, Number(limit))),\n },\n {\n name: 'futures_taker_long_short_ratio',\n description: 'Get taker buy/sell volume ratio for a symbol.',\n inputSchema: z.object({ symbol: z.string().min(1).describe('USD-M pair, e.g. BTCUSDT'), period, limit: limitDefault.default(30) }),\n handler: async ({ symbol, period, limit }) => textResult(await d.takerLongShortRatio(normalizeSymbol(symbol), period, Number(limit))),\n },\n {\n name: 'futures_basis',\n description: 'Get basis data (spot-futures spread, mark price - index price) for a pair and contract type.',\n inputSchema: z.object({\n symbol: z.string().min(1).describe('Base pair, e.g. BTCUSDT'),\n period,\n limit: limitDefault.default(30),\n startTime,\n endTime,\n }),\n handler: async ({ symbol, period, limit, startTime, endTime }) =>\n textResult(await d.basis(normalizeSymbol(symbol), period, { limit: Number(limit), startTime, endTime })),\n },\n {\n name: 'futures_asset_index',\n description: 'Get multi-assets mode asset index (collateral price) for one asset or all assets.',\n inputSchema: z.object({ symbol: optSymbol.describe('Asset index symbol, e.g. ADAUSD') }),\n handler: async ({ symbol }) => textResult(await d.assetIndex(symbol ? normalizeSymbol(symbol) : undefined)),\n },\n {\n name: 'futures_composite_index_info',\n description: 'Get composite index symbol information (e.g. DEFIUSDT) with constituent weights.',\n inputSchema: z.object({ symbol: optSymbol }),\n handler: async ({ symbol }) => textResult(await d.compositeIndexInfo(symbol ? normalizeSymbol(symbol) : undefined)),\n },\n {\n name: 'futures_insurance_balance',\n description: 'Get insurance fund balance snapshots for a symbol.',\n inputSchema: z.object({ symbol: z.string().min(1).describe('USD-M pair, e.g. BNBUSDT'), limit: limitDefault.default(100), startTime, endTime }),\n handler: async ({ symbol, limit, startTime, endTime }) =>\n textResult(await d.insuranceFundBalance({ symbol: normalizeSymbol(symbol), limit: Number(limit), startTime, endTime })),\n },\n {\n name: 'futures_index_price_constituents',\n description: 'Get the index price constituents (exchange weights) for a symbol.',\n inputSchema: z.object({ symbol: z.string().min(1).describe('USD-M pair, e.g. BTCUSDT') }),\n handler: async ({ symbol }) => textResult(await d.indexPriceConstituents(normalizeSymbol(symbol))),\n },\n {\n name: 'futures_premium_index_klines',\n description: 'Get premium index candlesticks for a symbol (mark price premium over index price).',\n inputSchema: z.object({ symbol: z.string().min(1).describe('USD-M pair, e.g. BTCUSDT'), interval: KlineIntervalSchema, limit: limitDefault.default(500), startTime, endTime }),\n handler: async ({ symbol, interval, limit, startTime, endTime }) =>\n textResult(await m.premiumIndexKlines(normalizeSymbol(symbol), interval, { limit: Number(limit), startTime, endTime })),\n },\n {\n name: 'futures_rpi_depth',\n description: 'Get the RPI (Retail Price Improvement) order book depth for a symbol.',\n inputSchema: z.object({ symbol: z.string().min(1).describe('USD-M pair, e.g. BTCUSDT'), limit: z.number().int().positive().default(1000) }),\n handler: async ({ symbol, limit }) => textResult(await m.rpiDepth(normalizeSymbol(symbol), Number(limit))),\n },\n {\n name: 'futures_delivery_price',\n description: 'Get historical quarterly contract settlement/delivery prices for a pair.',\n inputSchema: z.object({ symbol: z.string().min(1).describe('Base pair, e.g. BTCUSDT') }),\n handler: async ({ symbol }) => textResult(await d.deliveryPrice(normalizeSymbol(symbol))),\n },\n {\n name: 'futures_symbol_adl_risk',\n description: 'Get the auto-deleveraging (ADL) risk level for one symbol or all symbols on the account (signed).',\n inputSchema: z.object({ symbol: optSymbol }),\n handler: async ({ symbol }) => textResult(await d.symbolAdlRisk(symbol ? normalizeSymbol(symbol) : undefined)),\n },\n {\n name: 'futures_adl_quantile',\n description: 'Get the position ADL (auto-deleveraging) quantile estimation for one symbol or all symbols (signed).',\n inputSchema: z.object({ symbol: optSymbol }),\n handler: async ({ symbol }) => textResult(await d.adlQuantile(symbol ? normalizeSymbol(symbol) : undefined)),\n },\n {\n name: 'futures_force_orders',\n description: \"Get the user's force-liquidation orders (LIQUIDATION) and ADL orders for a symbol or all symbols (signed).\",\n inputSchema: z.object({\n symbol: optSymbol,\n autoCloseType: z.enum(['LIQUIDATION', 'ADL']).optional(),\n startTime,\n endTime,\n limit: limitDefault.default(50),\n }),\n handler: async ({ symbol, autoCloseType, startTime, endTime, limit }) =>\n textResult(\n await d.forceOrders({\n symbol: symbol ? normalizeSymbol(symbol) : undefined,\n autoCloseType,\n startTime,\n endTime,\n limit: Number(limit),\n }),\n ),\n },\n ];\n\n return tools;\n}\n","import { z } from 'zod';\n\nexport const KlineIntervalSchema = z.enum([\n '1m', '3m', '5m', '15m', '30m',\n '1h', '2h', '4h', '6h', '8h', '12h',\n '1d', '3d', '1w', '1M',\n]);\nexport type KlineInterval = z.infer<typeof KlineIntervalSchema>;\n\nconst RawKlineSchema = z.tuple([\n z.number(), z.string(), z.string(), z.string(), z.string(), z.string(),\n z.number(), z.string(), z.number(), z.string(), z.string(), z.string(),\n]);\n\nexport const KlineSchema = RawKlineSchema.transform(\n ([openTime, open, high, low, close, volume, closeTime, quoteAssetVolume, trades, takerBuyBaseVolume, takerBuyQuoteVolume]) => ({\n openTime,\n open: Number(open),\n high: Number(high),\n low: Number(low),\n close: Number(close),\n volume: Number(volume),\n closeTime,\n quoteAssetVolume: Number(quoteAssetVolume),\n trades,\n takerBuyBaseVolume: Number(takerBuyBaseVolume),\n takerBuyQuoteVolume: Number(takerBuyQuoteVolume),\n }),\n);\nexport type Kline = z.infer<typeof KlineSchema>;\nexport const KlinesResponseSchema = z.array(KlineSchema);\n\nexport const TickerPriceSchema = z.object({\n symbol: z.string(),\n price: z.string().transform(Number),\n time: z.number().optional(),\n});\nexport type TickerPrice = z.infer<typeof TickerPriceSchema>;\n\nexport const Ticker24hrSchema = z.object({\n symbol: z.string(),\n priceChange: z.string().transform(Number),\n priceChangePercent: z.string().transform(Number),\n weightedAvgPrice: z.string().transform(Number),\n lastPrice: z.string().transform(Number),\n lastQty: z.string().transform(Number),\n openPrice: z.string().transform(Number),\n highPrice: z.string().transform(Number),\n lowPrice: z.string().transform(Number),\n volume: z.string().transform(Number),\n quoteVolume: z.string().transform(Number),\n openTime: z.number(),\n closeTime: z.number(),\n firstId: z.number(),\n lastId: z.number(),\n count: z.number(),\n});\nexport type Ticker24hr = z.infer<typeof Ticker24hrSchema>;\n\nexport const BookTickerSchema = z.object({\n symbol: z.string(),\n bidPrice: z.string().transform(Number),\n bidQty: z.string().transform(Number),\n askPrice: z.string().transform(Number),\n askQty: z.string().transform(Number),\n time: z.number().optional(),\n});\nexport type BookTicker = z.infer<typeof BookTickerSchema>;\n\nconst DepthLevelSchema = z\n .tuple([z.string(), z.string()])\n .transform(([price, qty]) => ({ price: Number(price), qty: Number(qty) }));\n\nexport const DepthSnapshotSchema = z.object({\n lastUpdateId: z.number(),\n bids: z.array(DepthLevelSchema),\n asks: z.array(DepthLevelSchema),\n});\nexport type DepthSnapshot = z.infer<typeof DepthSnapshotSchema>;\n\nexport const TradeSchema = z.object({\n id: z.number(),\n price: z.string().transform(Number),\n qty: z.string().transform(Number),\n quoteQty: z.string().transform(Number),\n time: z.number(),\n isBuyerMaker: z.boolean(),\n});\nexport type Trade = z.infer<typeof TradeSchema>;\nexport const TradesResponseSchema = z.array(TradeSchema);\n\nexport const AggTradeSchema = z.object({\n a: z.number(),\n p: z.string().transform(Number),\n q: z.string().transform(Number),\n f: z.number(),\n l: z.number(),\n T: z.number(),\n m: z.boolean(),\n});\nexport type AggTrade = z.infer<typeof AggTradeSchema>;\nexport const AggTradesResponseSchema = z.array(AggTradeSchema);\n\nexport const AvgPriceSchema = z.object({\n mins: z.number(),\n price: z.string().transform(Number),\n});\nexport type AvgPrice = z.infer<typeof AvgPriceSchema>;\n\nexport const ExchangeSymbolSchema = z\n .object({\n symbol: z.string(),\n status: z.string(),\n baseAsset: z.string(),\n quoteAsset: z.string(),\n })\n .loose();\nexport type ExchangeSymbol = z.infer<typeof ExchangeSymbolSchema>;\n\nexport const ExchangeInfoSchema = z\n .object({\n timezone: z.string(),\n serverTime: z.number(),\n symbols: z.array(ExchangeSymbolSchema),\n })\n .loose();\nexport type ExchangeInfo = z.infer<typeof ExchangeInfoSchema>;\n","import { z } from 'zod';\nimport type { BinanceClient } from '../client/BinanceClient.js';\nimport type { ToolDefinition } from './types.js';\nimport { textResult, normalizeSymbol } from './types.js';\n\nexport interface PaperState {\n balance: number;\n positions: PaperPosition[];\n history: PaperEvent[];\n}\n\nexport interface PaperPosition {\n id: string;\n symbol: string;\n side: 'LONG' | 'SHORT';\n quantity: number;\n entryPrice: number;\n openedAt: string;\n}\n\nexport interface PaperEvent extends PaperPosition {\n type: 'open' | 'close';\n exitPrice?: number;\n realizedPnl?: number;\n closedAt?: string;\n}\n\nexport interface PaperContext {\n state: PaperState;\n client: BinanceClient;\n}\n\nexport function createPaperContext(client: BinanceClient, initialState: Partial<PaperState> = {}): PaperContext {\n return {\n client,\n state: { balance: initialState.balance ?? 10000, positions: initialState.positions ?? [], history: initialState.history ?? [] },\n };\n}\n\nfunction pnl(position: PaperPosition, price: number): number {\n const direction = position.side === 'LONG' ? 1 : -1;\n return (price - position.entryPrice) * position.quantity * direction;\n}\n\nexport function paperTools(ctx: PaperContext): ToolDefinition[] {\n const s = ctx.state;\n const t = ctx.client.futures.market;\n\n return [\n {\n name: 'paper_init',\n description: 'Initialize paper-trading state (reset balances, positions, history). No API keys required.',\n inputSchema: z.object({ balance: z.number().positive().default(10000).describe('Starting USDT balance') }),\n handler: async ({ balance }) => {\n s.balance = balance;\n s.positions = [];\n s.history = [];\n return textResult(s);\n },\n },\n {\n name: 'paper_balance',\n description: 'Get current paper-trading balance and open-position equity (uses live market prices if an open position exists). No API keys required.',\n inputSchema: z.object({}),\n handler: async () => textResult(s),\n },\n {\n name: 'paper_open_position',\n description: 'Open an in-memory paper position at the live ticker price (or a fixed price). No API keys required.',\n inputSchema: z.object({\n symbol: z.string().min(1).describe('USD-M pair, e.g. BTCUSDT'),\n side: z.enum(['LONG', 'SHORT']),\n quantity: z.number().positive(),\n price: z.number().positive().optional().describe('If omitted, uses live ticker price'),\n }),\n handler: async ({ symbol, side, quantity, price }) => {\n const sym = normalizeSymbol(symbol);\n const market = price ?? Number((await t.tickerPrice(sym)).price);\n const position: PaperPosition = { id: Date.now().toString(), symbol: sym, side, quantity, entryPrice: market, openedAt: new Date().toISOString() };\n s.positions.push(position);\n s.history.push({ type: 'open', ...position });\n return textResult(position);\n },\n },\n {\n name: 'paper_close_position',\n description: 'Close a paper position by id (or symbol) and realize PnL at the live/last price.',\n inputSchema: z.object({\n id: z.string().optional().describe('Position id from paper_open_position'),\n symbol: z.string().min(1).optional().describe('Close the position for this symbol'),\n price: z.number().positive().optional().describe('If omitted, uses live ticker price'),\n }),\n handler: async ({ id, symbol, price }) => {\n const idx = s.positions.findIndex((p) => (id ? p.id === id : normalizeSymbol(p.symbol) === normalizeSymbol(symbol ?? '')));\n if (idx === -1) throw new Error('paper position not found');\n const position = s.positions[idx];\n const market = price ?? Number((await t.tickerPrice(position.symbol)).price);\n const realizedPnl = pnl(position, market);\n s.balance += realizedPnl;\n const closed: PaperEvent = { type: 'close', ...position, exitPrice: market, realizedPnl, closedAt: new Date().toISOString() };\n s.positions.splice(idx, 1);\n s.history.push(closed);\n return textResult(closed);\n },\n },\n {\n name: 'paper_positions',\n description: 'List open paper positions with live unrealized PnL (marked to market).',\n inputSchema: z.object({}),\n handler: async () => {\n const out = await Promise.all(\n s.positions.map(async (p) => {\n const price = Number((await t.tickerPrice(p.symbol)).price);\n return { ...p, markPrice: price, unrealizedPnl: pnl(p, price) };\n }),\n );\n return textResult(out);\n },\n },\n {\n name: 'paper_history',\n description: 'List paper-trading history of open/close events with realized PnL.',\n inputSchema: z.object({}),\n handler: async () => textResult(s.history),\n },\n {\n name: 'paper_summary',\n description: 'Summarize paper-trading state: balance, open positions, trade count.',\n inputSchema: z.object({}),\n handler: async () =>\n textResult({ balance: s.balance, openPositions: s.positions.length, trades: s.history.length }),\n },\n ];\n}\n","import { z } from 'zod';\nimport type { BinanceClient } from '../client/BinanceClient.js';\nimport { KlineIntervalSchema } from '../types/market.types.js';\nimport type { ToolDefinition } from './types.js';\nimport { textResult, normalizeSymbol } from './types.js';\n\nconst spotSymbol = z.string().min(1).describe('Spot pair, e.g. BTCUSDT');\nconst optionalSymbol = z.string().min(1).describe('Spot pair, e.g. BTCUSDT').optional();\nconst limit = z.number().int().positive().max(1000).default(100);\nconst startTime = z.number().int().positive().optional();\nconst endTime = z.number().int().positive().optional();\nconst side = z.enum(['BUY', 'SELL']);\n\nexport const spotOrderParamsSchema = z.object({\n symbol: spotSymbol,\n side,\n type: z.enum(['LIMIT', 'MARKET', 'LIMIT_MAKER', 'STOP_LOSS', 'STOP_LOSS_LIMIT', 'TAKE_PROFIT', 'TAKE_PROFIT_LIMIT']),\n quantity: z.union([z.string(), z.number()]).optional().describe('Base-asset quantity; omit if using quoteOrderQty'),\n quoteOrderQty: z.union([z.string(), z.number()]).optional().describe('Quote-asset quantity (e.g. spend 100 USDT on a MARKET order)'),\n price: z.union([z.string(), z.number()]).optional().describe('Required for LIMIT / STOP_LOSS_LIMIT / TAKE_PROFIT_LIMIT'),\n stopPrice: z.union([z.string(), z.number()]).optional().describe('Trigger price for STOP_LOSS / TAKE_PROFIT variants'),\n timeInForce: z.enum(['GTC', 'IOC', 'FOK']).optional().describe('Required for LIMIT'),\n newClientOrderId: z.string().optional(),\n newOrderRespType: z.enum(['ACK', 'RESULT', 'FULL']).optional(),\n icebergQty: z.union([z.string(), z.number()]).optional(),\n selfTradePreventionMode: z.enum(['NONE', 'EXPIRE_TAKER', 'EXPIRE_MAKER', 'EXPIRE_BOTH']).optional(),\n});\n\nexport function spotTools(client: BinanceClient): ToolDefinition[] {\n const m = client.spot.market;\n const a = client.spot.account;\n const t = client.spot.trading;\n\n const tools: ToolDefinition[] = [\n // ---- Market data (public) ----\n {\n name: 'spot_ping',\n description: 'Test connectivity to the Binance Spot REST API.',\n inputSchema: z.object({}),\n handler: async () => textResult(await m.ping()),\n },\n {\n name: 'spot_server_time',\n description: 'Get the current Binance Spot server time in ms since epoch.',\n inputSchema: z.object({}),\n handler: async () => textResult(await m.serverTime()),\n },\n {\n name: 'spot_exchange_info',\n description: 'Get Spot exchange trading rules and symbol metadata (status, base/quote assets, filters, permissions).',\n inputSchema: z.object({}),\n handler: async () => textResult(await m.exchangeInfo()),\n },\n {\n name: 'spot_ticker_price',\n description: 'Get the latest price for a Spot symbol.',\n inputSchema: z.object({ symbol: spotSymbol }),\n handler: async ({ symbol }) => textResult(await m.tickerPrice(normalizeSymbol(symbol))),\n },\n {\n name: 'spot_ticker_24hr',\n description: 'Get 24-hour rolling price change statistics for a Spot symbol.',\n inputSchema: z.object({ symbol: spotSymbol }),\n handler: async ({ symbol }) => textResult(await m.ticker24hr(normalizeSymbol(symbol))),\n },\n {\n name: 'spot_book_ticker',\n description: 'Get the best bid/ask (top of book) for a Spot symbol.',\n inputSchema: z.object({ symbol: spotSymbol }),\n handler: async ({ symbol }) => textResult(await m.bookTicker(normalizeSymbol(symbol))),\n },\n {\n name: 'spot_order_book',\n description: 'Get the Spot order book depth for a symbol (limits 5/10/20/50/100/500/1000/5000).',\n inputSchema: z.object({\n symbol: spotSymbol,\n limit: z.enum(['5', '10', '20', '50', '100', '500', '1000', '5000']).default('100'),\n }),\n handler: async ({ symbol, limit }) => textResult(await m.depth(normalizeSymbol(symbol), Number(limit))),\n },\n {\n name: 'spot_recent_trades',\n description: 'Get the most recent executed trades for a Spot symbol.',\n inputSchema: z.object({ symbol: spotSymbol, limit: limit.default(500) }),\n handler: async ({ symbol, limit }) => textResult(await m.trades(normalizeSymbol(symbol), Number(limit))),\n },\n {\n name: 'spot_historical_trades',\n description: 'Get older Spot trades for a symbol by fromId.',\n inputSchema: z.object({ symbol: spotSymbol, limit: limit.default(500), fromId: z.number().int().positive().optional() }),\n handler: async ({ symbol, limit, fromId }) =>\n textResult(await m.historicalTrades(normalizeSymbol(symbol), { limit: Number(limit), fromId })),\n },\n {\n name: 'spot_agg_trades',\n description: 'Get compressed/aggregate Spot trades for a symbol within an optional time window.',\n inputSchema: z.object({ symbol: spotSymbol, limit: limit.default(500), startTime, endTime }),\n handler: async ({ symbol, limit, startTime, endTime }) =>\n textResult(await m.aggTrades(normalizeSymbol(symbol), { limit: Number(limit), startTime, endTime })),\n },\n {\n name: 'spot_klines',\n description: 'Get Spot candlesticks (OHLCV). Intervals 1m…1M; max 1000 per request.',\n inputSchema: z.object({ symbol: spotSymbol, interval: KlineIntervalSchema, limit: limit.default(500), startTime, endTime }),\n handler: async ({ symbol, interval, limit, startTime, endTime }) =>\n textResult(await m.klines(normalizeSymbol(symbol), interval, { limit: Number(limit), startTime, endTime })),\n },\n {\n name: 'spot_ui_klines',\n description: 'Get Spot candlesticks via the optimized uiKlines endpoint (same shape as spot_klines).',\n inputSchema: z.object({ symbol: spotSymbol, interval: KlineIntervalSchema, limit: limit.default(500), startTime, endTime }),\n handler: async ({ symbol, interval, limit, startTime, endTime }) =>\n textResult(await m.uiKlines(normalizeSymbol(symbol), interval, { limit: Number(limit), startTime, endTime })),\n },\n {\n name: 'spot_avg_price',\n description: 'Get the current average price (5-minute rolling average) for a Spot symbol.',\n inputSchema: z.object({ symbol: spotSymbol }),\n handler: async ({ symbol }) => textResult(await m.avgPrice(normalizeSymbol(symbol))),\n },\n {\n name: 'spot_rolling_window_ticker',\n description: 'Get rolling-window price change statistics (1d/7d/30d). Omit symbol for all symbols.',\n inputSchema: z.object({\n symbol: optionalSymbol,\n windowSize: z.enum(['1d', '7d', '30d']).optional(),\n }),\n handler: async ({ symbol, windowSize }) =>\n textResult(await m.rollingWindowTicker(symbol ? normalizeSymbol(symbol) : undefined, windowSize)),\n },\n {\n name: 'spot_trading_day_ticker',\n description: 'Get the Spot trading-day ticker (open/close/high/low/volume by UTC day). Omit symbol for all symbols.',\n inputSchema: z.object({ symbol: optionalSymbol, timeZone: z.string().optional(), type: z.enum(['FULL', 'MINI']).optional() }),\n handler: async ({ symbol, timeZone, type }) =>\n textResult(await m.tradingDayTicker(symbol ? normalizeSymbol(symbol) : undefined, { timeZone, type })),\n },\n\n // ---- Account (signed) ----\n {\n name: 'spot_account',\n description: 'Get the Spot account: balances (free/locked), commissions, permissions (signed).',\n inputSchema: z.object({}),\n handler: async () => textResult(await a.account()),\n },\n {\n name: 'spot_my_trades',\n description: 'Get the Spot account trade list (filled trades) for a symbol with optional time range (signed).',\n inputSchema: z.object({ symbol: spotSymbol, orderId: z.number().int().positive().optional(), startTime, endTime, fromId: z.number().int().positive().optional(), limit: limit.default(500) }),\n handler: async ({ symbol, orderId, startTime, endTime, fromId, limit }) =>\n textResult(await a.myTrades(normalizeSymbol(symbol), { orderId, startTime, endTime, fromId, limit: Number(limit) })),\n },\n {\n name: 'spot_my_prevented_matches',\n description: 'Get Spot orders that were expired by the self-trade-prevention (STP) mechanism (signed).',\n inputSchema: z.object({ symbol: spotSymbol, preventedMatchId: z.number().int().positive().optional(), orderId: z.number().int().positive().optional(), limit: limit.default(500) }),\n handler: async ({ symbol, preventedMatchId, orderId, limit }) =>\n textResult(await a.myPreventedMatches(normalizeSymbol(symbol), { preventedMatchId, orderId, limit: Number(limit) })),\n },\n {\n name: 'spot_account_commission',\n description: 'Get the Spot account commission rates for a symbol (signed).',\n inputSchema: z.object({ symbol: spotSymbol }),\n handler: async ({ symbol }) => textResult(await a.accountCommission(normalizeSymbol(symbol))),\n },\n {\n name: 'spot_rate_limit_order',\n description: 'Query the current Spot order rate limit usage (signed).',\n inputSchema: z.object({}),\n handler: async () => textResult(await a.rateLimitOrder()),\n },\n\n // ---- Trading (signed) ----\n {\n name: 'spot_new_order',\n description: 'Place a new Spot order. Types: LIMIT, MARKET, LIMIT_MAKER, STOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT. For MARKET orders use quantity OR quoteOrderQty. Signed.',\n inputSchema: spotOrderParamsSchema,\n handler: async (args) => textResult(await t.createOrder({ ...args, symbol: normalizeSymbol(args.symbol) })),\n },\n {\n name: 'spot_test_order',\n description: 'Validate a Spot order without submitting it. Signed.',\n inputSchema: spotOrderParamsSchema,\n handler: async (args) => textResult(await t.testOrder({ ...args, symbol: normalizeSymbol(args.symbol) })),\n },\n {\n name: 'spot_get_order',\n description: 'Query a specific Spot order by orderId or client order id. Signed.',\n inputSchema: z.object({ symbol: spotSymbol, orderId: z.number().int().positive().optional(), origClientOrderId: z.string().optional() }),\n handler: async ({ symbol, orderId, origClientOrderId }) =>\n textResult(await t.getOrder(normalizeSymbol(symbol), { orderId, origClientOrderId })),\n },\n {\n name: 'spot_cancel_order',\n description: 'Cancel a specific open Spot order by orderId or client order id. Signed.',\n inputSchema: z.object({ symbol: spotSymbol, orderId: z.number().int().positive().optional(), origClientOrderId: z.string().optional(), newClientOrderId: z.string().optional() }),\n handler: async ({ symbol, orderId, origClientOrderId, newClientOrderId }) =>\n textResult(await t.cancelOrder(normalizeSymbol(symbol), { orderId, origClientOrderId, newClientOrderId })),\n },\n {\n name: 'spot_open_orders',\n description: 'Get all current open Spot orders, for one symbol or all symbols. Signed.',\n inputSchema: z.object({ symbol: optionalSymbol }),\n handler: async ({ symbol }) => textResult(await t.getOpenOrders(symbol ? normalizeSymbol(symbol) : undefined)),\n },\n {\n name: 'spot_all_orders',\n description: 'Get historical Spot orders for a symbol with optional time range. Signed.',\n inputSchema: z.object({ symbol: spotSymbol, orderId: z.number().int().positive().optional(), startTime, endTime, limit }),\n handler: async ({ symbol, orderId, startTime, endTime, limit }) =>\n textResult(await t.getAllOrders(normalizeSymbol(symbol), { orderId, startTime, endTime, limit })),\n },\n {\n name: 'spot_cancel_open_orders',\n description: 'Cancel all open Spot orders for a symbol. Signed.',\n inputSchema: z.object({ symbol: spotSymbol }),\n handler: async ({ symbol }) => textResult(await t.cancelOpenOrders(normalizeSymbol(symbol))),\n },\n {\n name: 'spot_cancel_replace_order',\n description: 'Cancel an existing Spot order and place a new one on the same symbol (cancel-replace). Signed.',\n inputSchema: z.object({\n symbol: spotSymbol,\n side,\n type: z.enum(['LIMIT', 'MARKET', 'STOP_LOSS', 'STOP_LOSS_LIMIT', 'TAKE_PROFIT', 'TAKE_PROFIT_LIMIT']),\n cancelReplaceMode: z.enum(['STOP_ON_FAILURE', 'ALLOW_FAILURE']).default('STOP_ON_FAILURE'),\n cancelOrderId: z.number().int().positive().optional(),\n cancelOrigClientOrderId: z.string().optional(),\n cancelNewClientOrderId: z.string().optional(),\n quantity: z.union([z.string(), z.number()]).optional(),\n price: z.union([z.string(), z.number()]).optional(),\n timeInForce: z.enum(['GTC', 'IOC', 'FOK']).optional(),\n newClientOrderId: z.string().optional(),\n }),\n handler: async (args) => textResult(await t.cancelReplaceOrder({ ...args, symbol: normalizeSymbol(args.symbol) })),\n },\n {\n name: 'spot_new_oco_order',\n description: 'Place a new Spot OCO (one-cancels-other) order: a stop-loss limit + a limit-maker take-profit. Signed.',\n inputSchema: z.object({\n symbol: spotSymbol,\n side,\n quantity: z.union([z.string(), z.number()]).describe('Total base-asset quantity for both legs'),\n price: z.union([z.string(), z.number()]).describe('Limit (take-profit) price'),\n stopPrice: z.union([z.string(), z.number()]).describe('Stop-loss trigger price'),\n stopLimitPrice: z.union([z.string(), z.number()]).optional().describe('Stop-loss limit price (defaults to stopPrice)'),\n stopLimitTimeInForce: z.enum(['GTC', 'IOC', 'FOK']).optional(),\n listClientOrderId: z.string().optional(),\n limitClientOrderId: z.string().optional(),\n stopClientOrderId: z.string().optional(),\n }),\n handler: async (args) => textResult(await t.createOCOOrder({ ...args, symbol: normalizeSymbol(args.symbol) })),\n },\n {\n name: 'spot_cancel_oco_order',\n description: 'Cancel an entire Spot OCO order list by orderListId or listClientOrderId. Signed.',\n inputSchema: z.object({ symbol: spotSymbol, orderListId: z.number().int().positive().optional(), listClientOrderId: z.string().optional(), newClientOrderId: z.string().optional() }),\n handler: async ({ symbol, orderListId, listClientOrderId, newClientOrderId }) =>\n textResult(await t.cancelOCOOrder(normalizeSymbol(symbol), { orderListId, listClientOrderId, newClientOrderId })),\n },\n {\n name: 'spot_get_oco_order',\n description: 'Query a Spot OCO order list by orderListId or listClientOrderId. Signed.',\n inputSchema: z.object({ symbol: spotSymbol, orderListId: z.number().int().positive().optional(), origClientOrderId: z.string().optional() }),\n handler: async ({ symbol, orderListId, origClientOrderId }) =>\n textResult(await t.getOCOOrder(normalizeSymbol(symbol), { orderListId, origClientOrderId })),\n },\n {\n name: 'spot_open_oco_orders',\n description: 'Get all current open Spot OCO order lists. Signed.',\n inputSchema: z.object({}),\n handler: async () => textResult(await t.getOpenOCOOrders()),\n },\n {\n name: 'spot_all_oco_orders',\n description: 'Get historical Spot OCO order lists for a symbol with optional time range. Signed.',\n inputSchema: z.object({ symbol: spotSymbol, fromId: z.number().int().positive().optional(), startTime, endTime, limit }),\n handler: async ({ symbol, fromId, startTime, endTime, limit }) =>\n textResult(await t.getAllOCOOrders(normalizeSymbol(symbol), { fromId, startTime, endTime, limit })),\n },\n {\n name: 'spot_cancel_open_oco_orders',\n description: 'Cancel all open Spot OCO order lists for a symbol. Signed.',\n inputSchema: z.object({ symbol: spotSymbol }),\n handler: async ({ symbol }) => textResult(await t.cancelOpenOCOOrders(normalizeSymbol(symbol))),\n },\n\n // ---- User data stream (signed) ----\n {\n name: 'spot_ws_start_user_stream',\n description: 'Start the Spot user data stream: creates a listenKey, connects the private WebSocket, and begins keep-alive. Emits executionReport, outboundAccountPosition, balanceUpdate, listStatus.',\n inputSchema: z.object({}),\n handler: async () => textResult({ listenKey: await client.startSpotUserStream() }),\n },\n {\n name: 'spot_ws_stop_user_stream',\n description: 'Stop the Spot user data stream: closes the private WebSocket and invalidates the listenKey.',\n inputSchema: z.object({}),\n handler: async () => {\n client.closeSpotUserStream();\n return textResult({ stopped: true });\n },\n },\n ];\n\n return tools;\n}\n","import { z } from 'zod';\nimport type { BinanceClient } from '../client/BinanceClient.js';\nimport type { ToolDefinition } from './types.js';\nimport { textResult, normalizeSymbol } from './types.js';\n\nconst symbol = z.string().min(1).describe('USD-M pair, e.g. BTCUSDT');\nconst optionalSymbol = z.string().min(1).describe('USD-M pair, e.g. BTCUSDT').optional();\nconst limit = z.number().int().positive().max(1000).default(100);\nconst startTime = z.number().int().positive().optional();\nconst endTime = z.number().int().positive().optional();\nconst side = z.enum(['BUY', 'SELL']);\nconst positionSide = z.enum(['BOTH', 'LONG', 'SHORT']).optional();\n\nexport const orderParamsSchema = z.object({\n symbol,\n side,\n type: z.enum(['LIMIT', 'MARKET', 'STOP', 'STOP_MARKET', 'TAKE_PROFIT', 'TAKE_PROFIT_MARKET', 'TRAILING_STOP_MARKET']),\n quantity: z.union([z.string(), z.number()]).describe('Order quantity in base asset'),\n price: z.union([z.string(), z.number()]).optional().describe('Required for LIMIT and STOP/TAKE_PROFIT (limit-triggered) types'),\n timeInForce: z.enum(['GTC', 'IOC', 'FOK', 'GTX']).optional(),\n stopPrice: z.union([z.string(), z.number()]).optional().describe('Trigger price for STOP/STOP_MARKET/TAKE_PROFIT/TAKE_PROFIT_MARKET'),\n reduceOnly: z.boolean().optional().describe('true = only reduces the position, never opens'),\n positionSide,\n newClientOrderId: z.string().optional(),\n closePosition: z.boolean().optional().describe('Close the full position on trigger (mutually exclusive with quantity)'),\n newOrderRespType: z.enum(['ACK', 'RESULT']).optional(),\n priceProtect: z.boolean().optional(),\n workingType: z.enum(['MARK_PRICE', 'CONTRACT_PRICE']).optional().describe('Trigger price basis; default CONTRACT_PRICE'),\n callbackRate: z.union([z.string(), z.number()]).optional().describe('Percent callback for TRAILING_STOP_MARKET, e.g. 0.5'),\n activationPrice: z.union([z.string(), z.number()]).optional().describe('Activation price for TRAILING_STOP_MARKET'),\n selfTradePreventionMode: z.enum(['NONE', 'EXPIRE_TAKER', 'EXPIRE_MAKER', 'EXPIRE_BOTH']).optional(),\n goodTillDate: z.number().int().optional().describe('Timestamp when a GTD order expires'),\n});\n\nexport function tradingTools(client: BinanceClient): ToolDefinition[] {\n const t = client.futures.trading;\n\n return [\n {\n name: 'futures_new_order',\n description: 'Place a new futures order. Types: LIMIT, MARKET, STOP, STOP_MARKET, TAKE_PROFIT, TAKE_PROFIT_MARKET, TRAILING_STOP_MARKET. Use STOP_MARKET as the take-profit/stop-loss trigger and LIMIT for the actual fill. Signed.',\n inputSchema: orderParamsSchema,\n handler: async (args) => textResult(await t.createOrder({ ...args, symbol: normalizeSymbol(args.symbol) })),\n },\n {\n name: 'futures_test_order',\n description: 'Validate a new order without submitting it. Returns 200 on success; use to validate fields and margin before real orders. Signed.',\n inputSchema: orderParamsSchema,\n handler: async (args) => textResult(await t.createTestOrder({ ...args, symbol: normalizeSymbol(args.symbol) })),\n },\n {\n name: 'futures_get_order',\n description: 'Query a specific order by orderId or client order id. Signed.',\n inputSchema: z.object({ symbol, orderId: z.number().int().positive().optional(), origClientOrderId: z.string().optional() }),\n handler: async ({ symbol, orderId, origClientOrderId }) =>\n textResult(await t.getOrder(normalizeSymbol(symbol), { orderId, origClientOrderId })),\n },\n {\n name: 'futures_cancel_order',\n description: 'Cancel a specific open order by orderId or client order id. Signed.',\n inputSchema: z.object({ symbol, orderId: z.number().int().positive().optional(), origClientOrderId: z.string().optional() }),\n handler: async ({ symbol, orderId, origClientOrderId }) =>\n textResult(await t.cancelOrder(normalizeSymbol(symbol), { orderId, origClientOrderId })),\n },\n {\n name: 'futures_get_open_order',\n description: 'Query a current open order (must exist in the open order book). Signed.',\n inputSchema: z.object({ symbol, orderId: z.number().int().positive().optional(), origClientOrderId: z.string().optional() }),\n handler: async ({ symbol, orderId, origClientOrderId }) =>\n textResult(await t.getCurrentOrder(normalizeSymbol(symbol), { orderId, origClientOrderId })),\n },\n {\n name: 'futures_open_orders',\n description: 'Get all current open orders, for one symbol or all symbols. Signed.',\n inputSchema: z.object({ symbol: optionalSymbol }),\n handler: async ({ symbol }) => textResult(await t.getOpenOrders(symbol ? normalizeSymbol(symbol) : undefined)),\n },\n {\n name: 'futures_all_orders',\n description: 'Get historical orders for a symbol with optional time range (last 7 days by default). Signed.',\n inputSchema: z.object({ symbol, orderId: z.number().int().positive().optional(), startTime, endTime, limit }),\n handler: async ({ symbol, orderId, startTime, endTime, limit }) =>\n textResult(await t.getAllOrders(normalizeSymbol(symbol), { orderId, startTime, endTime, limit })),\n },\n {\n name: 'futures_cancel_all_orders',\n description: 'Cancel all open orders for a symbol. Signed.',\n inputSchema: z.object({ symbol }),\n handler: async ({ symbol }) => textResult(await t.cancelAllOpenOrders(normalizeSymbol(symbol))),\n },\n {\n name: 'futures_modify_order',\n description: 'Modify an open order (price/quantity/stopPrice). Cannot modify when position side is BOTH and closePosition is true. Signed.',\n inputSchema: z.object({\n symbol,\n side,\n quantity: z.union([z.string(), z.number()]),\n price: z.union([z.string(), z.number()]).optional(),\n orderId: z.number().int().positive().optional(),\n origClientOrderId: z.string().optional(),\n stopPrice: z.union([z.string(), z.number()]).optional(),\n timeInForce: z.enum(['GTC', 'IOC', 'FOK', 'GTX']).optional(),\n positionSide,\n newClientOrderId: z.string().optional(),\n }),\n handler: async (args) => textResult(await t.modifyOrder({ ...args, symbol: normalizeSymbol(args.symbol) })),\n },\n {\n name: 'futures_order_modify_history',\n description: 'Get order modification history for a symbol. Signed.',\n inputSchema: z.object({ symbol, startTime, endTime, limit }),\n handler: async ({ symbol, startTime, endTime, limit }) =>\n textResult(await t.getOrderModifyHistory(normalizeSymbol(symbol), { startTime, endTime, limit })),\n },\n {\n name: 'futures_batch_orders',\n description: 'Place up to 5 orders in one request (array of order objects, max 30 per minute per symbol). Signed.',\n inputSchema: z.object({ orders: z.array(orderParamsSchema).min(1).max(5) }),\n handler: async (args) => {\n const mapped = args.orders.map((o: z.infer<typeof orderParamsSchema>) => ({ ...o, symbol: normalizeSymbol(o.symbol) }));\n return textResult(await t.createBatchOrders(mapped));\n },\n },\n {\n name: 'futures_cancel_batch_orders',\n description: 'Cancel multiple orders at once (up to 10 by orderId list or client order id list). Signed.',\n inputSchema: z.object({\n symbol,\n orderIdList: z.array(z.number().int().positive()).max(10).optional(),\n origClientOrderIdList: z.array(z.string()).max(10).optional(),\n }),\n handler: async ({ symbol, orderIdList, origClientOrderIdList }) =>\n textResult(await t.cancelBatchOrders(normalizeSymbol(symbol), { orderIdList, origClientOrderIdList })),\n },\n {\n name: 'futures_set_leverage',\n description: 'Change initial leverage for a symbol (1-125, within bracket). Signed.',\n inputSchema: z.object({ symbol, leverage: z.number().int().min(1).max(125) }),\n handler: async ({ symbol, leverage }) => textResult(await t.setLeverage(normalizeSymbol(symbol), leverage)),\n },\n {\n name: 'futures_set_margin_type',\n description: 'Change margin type for a symbol: isolated or cross. Only allowed when no open position for the symbol. Signed.',\n inputSchema: z.object({ symbol, marginType: z.enum(['isolated', 'cross']) }),\n handler: async ({ symbol, marginType }) => textResult(await t.setMarginType(normalizeSymbol(symbol), marginType)),\n },\n {\n name: 'futures_modify_position_margin',\n description: 'Add or reduce isolated position margin. marginType: 1 = add margin, 2 = reduce margin. Signed.',\n inputSchema: z.object({ symbol, amount: z.number().positive(), marginType: z.enum(['1', '2']).describe('1 = add margin, 2 = reduce margin') }),\n handler: async ({ symbol, amount, marginType }) => textResult(await t.modifyPositionMargin(normalizeSymbol(symbol), amount, Number(marginType))),\n },\n {\n name: 'futures_countdown_cancel_all',\n description: 'Auto-cancel all open orders for a symbol after countdownTime ms (0 = cancel the countdown). Emergency circuit breaker. Signed.',\n inputSchema: z.object({ symbol, countdownTime: z.number().int().min(100).max(60000) }),\n handler: async ({ symbol, countdownTime }) => textResult(await t.setCountdownCancelAll(normalizeSymbol(symbol), countdownTime)),\n },\n {\n name: 'futures_new_algo_order',\n description: 'Place a conditional algo order (CONDITIONAL or VP). CONDITIONAL supports STOP_MARKET/TAKE_PROFIT_MARKET types with triggerPrice; VP is a volume-participation order with urgency and quantity. Signed.',\n inputSchema: z.object({\n algoType: z.enum(['CONDITIONAL', 'VP']),\n symbol,\n side,\n positionSide,\n type: z.enum(['STOP_MARKET', 'TAKE_PROFIT_MARKET', 'LIMIT']).describe('For CONDITIONAL: STOP_MARKET/TAKE_PROFIT_MARKET. For VP: LIMIT'),\n quantity: z.union([z.string(), z.number()]),\n triggerPrice: z.union([z.string(), z.number()]).optional().describe('Required for CONDITIONAL'),\n price: z.union([z.string(), z.number()]).optional(),\n timeInForce: z.enum(['GTC', 'IOC', 'FOK', 'GTX']).optional(),\n workingType: z.enum(['MARK_PRICE', 'CONTRACT_PRICE']).optional(),\n priceProtect: z.boolean().optional(),\n reduceOnly: z.boolean().optional(),\n closePosition: z.boolean().optional(),\n urgency: z.enum(['LOW', 'MEDIUM', 'HIGH']).optional().describe('Required for VP'),\n clientAlgoId: z.string().optional(),\n }),\n handler: async (args) =>\n textResult(await t.createAlgoOrder({ ...args, symbol: normalizeSymbol(args.symbol) })),\n },\n {\n name: 'futures_cancel_algo_order',\n description: 'Cancel an open algo order by algoId or clientAlgoId. Signed.',\n inputSchema: z.object({ symbol, algoId: z.number().int().positive().optional(), clientAlgoId: z.string().optional() }),\n handler: async ({ symbol, algoId, clientAlgoId }) =>\n textResult(await t.cancelAlgoOrder(normalizeSymbol(symbol), { algoId, clientAlgoId })),\n },\n {\n name: 'futures_cancel_all_algo_orders',\n description: 'Cancel all open algo orders for a symbol. Signed.',\n inputSchema: z.object({ symbol }),\n handler: async ({ symbol }) => textResult(await t.cancelAllOpenAlgoOrders(normalizeSymbol(symbol))),\n },\n {\n name: 'futures_get_algo_order',\n description: 'Query an algo order by algoId or clientAlgoId. Signed.',\n inputSchema: z.object({ symbol, algoId: z.number().int().positive().optional(), clientAlgoId: z.string().optional() }),\n handler: async ({ symbol, algoId, clientAlgoId }) =>\n textResult(await t.getAlgoOrder(normalizeSymbol(symbol), { algoId, clientAlgoId })),\n },\n {\n name: 'futures_open_algo_orders',\n description: 'Get all current open algo orders, optionally filtered by symbol. Signed.',\n inputSchema: z.object({ symbol: optionalSymbol }),\n handler: async ({ symbol }) => textResult(await t.getOpenAlgoOrders(symbol ? normalizeSymbol(symbol) : undefined)),\n },\n {\n name: 'futures_all_algo_orders',\n description: 'Get historical algo orders for a symbol with optional time range. Signed.',\n inputSchema: z.object({ symbol, startTime, endTime, limit }),\n handler: async ({ symbol, startTime, endTime, limit }) =>\n textResult(await t.getAllAlgoOrders(normalizeSymbol(symbol), { startTime, endTime, limit })),\n },\n {\n name: 'futures_convert_exchange_info',\n description: 'List asset pairs eligible for futures Convert, optionally filtered by fromAsset/toAsset.',\n inputSchema: z.object({ fromAsset: z.string().optional(), toAsset: z.string().optional() }),\n handler: async ({ fromAsset, toAsset }) => textResult(await t.convertExchangeInfo({ fromAsset, toAsset })),\n },\n {\n name: 'futures_convert_get_quote',\n description: 'Request a Convert quote between two assets (quote expires quickly; accept with futures_convert_accept_quote). Signed.',\n inputSchema: z.object({\n fromAsset: z.string().min(1),\n toAsset: z.string().min(1),\n fromAmount: z.number().positive().optional(),\n toAmount: z.number().positive().optional(),\n validTime: z.enum(['10s', '30s', '1m', '2m']).optional(),\n }),\n handler: async (args) => textResult(await t.convertGetQuote(args)),\n },\n {\n name: 'futures_convert_accept_quote',\n description: 'Accept a previously requested Convert quote by quoteId. Signed.',\n inputSchema: z.object({ quoteId: z.string().min(1) }),\n handler: async ({ quoteId }) => textResult(await t.convertAcceptQuote(quoteId)),\n },\n {\n name: 'futures_convert_order_status',\n description: 'Query the status of a Convert order by orderId or quoteId. Signed.',\n inputSchema: z.object({ orderId: z.string().optional(), quoteId: z.string().optional() }),\n handler: async ({ orderId, quoteId }) => textResult(await t.convertOrderStatus({ orderId, quoteId })),\n },\n ];\n}\n","import { z } from 'zod';\nimport type { BinanceClient } from '../client/BinanceClient.js';\nimport type { ToolDefinition } from './types.js';\nimport { textResult, normalizeSymbol } from './types.js';\n\ninterface WsBuffer {\n subscriptions: Set<string>;\n events: { stream: string; payload: unknown; ts: number }[];\n}\n\nconst buffers = new Map<BinanceClient, WsBuffer>();\nconst MAX_BUFFER = 500;\n\nfunction bufferFor(client: BinanceClient): WsBuffer {\n let buffer = buffers.get(client);\n if (!buffer) {\n buffer = { subscriptions: new Set(), events: [] };\n buffers.set(client, buffer);\n client.futures.ws.on('message', (stream: string, payload: unknown) => {\n buffer!.events.push({ stream, payload, ts: Date.now() });\n if (buffer!.events.length > MAX_BUFFER) buffer!.events.splice(0, buffer!.events.length - MAX_BUFFER);\n });\n }\n return buffer;\n}\n\nexport function getBufferedWsEvents(client: BinanceClient, limit = 50): unknown[] {\n return bufferFor(client).events.slice(-limit);\n}\n\nexport function clearBufferedWsEvents(client: BinanceClient): void {\n bufferFor(client).events = [];\n}\n\nexport function wsTools(client: BinanceClient): ToolDefinition[] {\n const buffer = bufferFor(client);\n\n return [\n {\n name: 'futures_ws_subscribe',\n description:\n 'Subscribe to real-time market data streams. Topic format: <symbol>@<stream>, e.g. btcusdt@aggTrade, btcusdt@kline_1m, btcusdt@depth20, btcusdt@markPrice@1s, btcusdt@bookTicker, btcusdt@ticker, btcusdt@miniTicker, btcusdt@forceOrder, or all-market topics !ticker@arr, !bookTicker, !markPrice@arr, !forceOrder@arr, !miniTicker@arr. Multiple topics can be passed at once.',\n inputSchema: z.object({\n topics: z.array(z.string().min(1)).min(1).describe('Stream topics, e.g. [\"btcusdt@aggTrade\", \"btcusdt@kline_1m\"]'),\n }),\n handler: async ({ topics }) => {\n const normalized = topics.map((t: string) => t.trim().toLowerCase());\n client.futures.ws.subscribe(normalized);\n normalized.forEach((t: string) => buffer.subscriptions.add(t));\n return textResult({ subscribed: normalized, active: [...buffer.subscriptions] });\n },\n },\n {\n name: 'futures_ws_unsubscribe',\n description: 'Unsubscribe from previously subscribed market data streams.',\n inputSchema: z.object({ topics: z.array(z.string().min(1)).min(1) }),\n handler: async ({ topics }) => {\n const normalized = topics.map((t: string) => t.trim().toLowerCase());\n client.futures.ws.unsubscribe(normalized);\n normalized.forEach((t: string) => buffer.subscriptions.delete(t));\n return textResult({ unsubscribed: normalized, active: [...buffer.subscriptions] });\n },\n },\n {\n name: 'futures_ws_subscriptions',\n description: 'List the currently subscribed WebSocket market streams for this client.',\n inputSchema: z.object({}),\n handler: async () => textResult({ active: [...buffer.subscriptions] }),\n },\n {\n name: 'futures_ws_events',\n description:\n 'Read the buffered real-time payloads received since the last read for the subscribed streams (aggregate trades, klines, depth deltas, mark price, book tickers, tickers, force orders). Payloads are parsed; depth deltas must be applied to a snapshot from futures_order_book.',\n inputSchema: z.object({ limit: z.number().int().min(1).max(200).default(50) }),\n handler: async ({ limit }) => textResult(getBufferedWsEvents(client, limit)),\n },\n {\n name: 'futures_ws_clear_events',\n description: 'Clear the buffered WebSocket events so the next read only returns new payloads.',\n inputSchema: z.object({}),\n handler: async () => {\n clearBufferedWsEvents(client);\n return textResult({ cleared: true });\n },\n },\n {\n name: 'futures_ws_start_user_stream',\n description:\n 'Start the user data stream: creates a listenKey, connects the private WebSocket, and begins a 30-minute keep-alive. Emits private events (ACCOUNT_UPDATE, ORDER_TRADE_UPDATE, MARGIN_CALL, ACCOUNT_CONFIG_UPDATE, listenKeyExpired) that the application can consume from the client.',\n inputSchema: z.object({}),\n handler: async () => textResult({ listenKey: await client.startUserStream() }),\n },\n {\n name: 'futures_ws_stop_user_stream',\n description: 'Stop the user data stream: closes the private WebSocket and invalidates the listenKey.',\n inputSchema: z.object({}),\n handler: async () => {\n client.closeUserStream();\n return textResult({ stopped: true });\n },\n },\n {\n name: 'futures_ws_api_order_status',\n description: 'Query an order via the signed WebSocket API (order.status) — lower-latency alternative to futures_get_order.',\n inputSchema: z.object({\n symbol: z.string().min(1).describe('USD-M pair, e.g. BTCUSDT'),\n orderId: z.number().int().positive().optional(),\n origClientOrderId: z.string().optional(),\n }),\n handler: async ({ symbol, orderId, origClientOrderId }) =>\n textResult(await client.futures.wsApi.orderStatus({ symbol: normalizeSymbol(symbol), orderId, origClientOrderId })),\n },\n {\n name: 'futures_ws_api_account_status',\n description: 'Get account info via the signed WebSocket API (account.status).',\n inputSchema: z.object({}),\n handler: async () => textResult(await client.futures.wsApi.accountStatus()),\n },\n {\n name: 'futures_ws_api_account_position',\n description: 'Get current positions via the signed WebSocket API (account.position).',\n inputSchema: z.object({ symbol: z.string().min(1).describe('USD-M pair, e.g. BTCUSDT').optional() }),\n handler: async ({ symbol }) =>\n textResult(await client.futures.wsApi.accountPosition(symbol ? { symbol: normalizeSymbol(symbol) } : {})),\n },\n {\n name: 'futures_ws_api_user_data_stream_start',\n description: 'Create a listenKey via the signed WebSocket API (userDataStream.start) — no REST call required.',\n inputSchema: z.object({}),\n handler: async () => textResult(await client.futures.wsApi.userDataStreamStart()),\n },\n {\n name: 'futures_ws_api_user_data_stream_stop',\n description: 'Invalidate a listenKey via the signed WebSocket API (userDataStream.stop).',\n inputSchema: z.object({ listenKey: z.string().min(1) }),\n handler: async ({ listenKey }) => textResult(await client.futures.wsApi.userDataStreamStop(listenKey)),\n },\n {\n name: 'futures_ws_api_ticker_price',\n description: 'Get latest price via the unsigned WebSocket API (ticker.price); omit symbol for all symbols.',\n inputSchema: z.object({ symbol: z.string().min(1).describe('USD-M pair, e.g. BTCUSDT').optional() }),\n handler: async ({ symbol }) =>\n textResult(await client.futures.wsApi.tickerPrice(symbol ? { symbol: normalizeSymbol(symbol) } : {})),\n },\n {\n name: 'futures_ws_api_order_book',\n description: 'Get order-book depth via the unsigned WebSocket API (depth).',\n inputSchema: z.object({\n symbol: z.string().min(1).describe('USD-M pair, e.g. BTCUSDT'),\n limit: z.enum(['5', '10', '20', '50', '100', '500', '1000']).optional(),\n }),\n handler: async ({ symbol, limit }) =>\n textResult(await client.futures.wsApi.depth({ symbol: normalizeSymbol(symbol), limit })),\n },\n ];\n}\n"],"mappings":"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","names":["import_zod","symbol","startTime","endTime","limit","import_zod","period","import_zod","import_zod","startTime","endTime","symbol","limit","contractType","period","import_zod","symbol","side","import_zod","optionalSymbol","limit","startTime","endTime","symbol","import_zod","symbol","optionalSymbol","limit","startTime","endTime","side","import_zod","limit","symbol"]}
@@ -0,0 +1,3 @@
1
+ export { a2 as FuturesToolkit, cl as PaperContext, cm as PaperEvent, cn as PaperPosition, co as PaperState, bF as ToolContext, bG as ToolDefinition, bZ as accountTools, cp as clearBufferedWsEvents, b_ as createFuturesToolkit, b$ as createPaperContext, c0 as derivedTools, c3 as getBufferedWsEvents, c4 as marketDataTools, c5 as paperTools, c9 as spotTools, cc as textResult, cd as toAnthropicTool, ce as toJsonSchema, cf as toMCPTool, cg as toOpenAITool, ch as toToolList, ci as toolkitToFormats, cj as tradingTools, ck as wsTools } from '../index-D2T_Rhwj.cjs';
2
+ import 'zod';
3
+ import 'node:events';
@@ -0,0 +1,3 @@
1
+ export { a2 as FuturesToolkit, cl as PaperContext, cm as PaperEvent, cn as PaperPosition, co as PaperState, bF as ToolContext, bG as ToolDefinition, bZ as accountTools, cp as clearBufferedWsEvents, b_ as createFuturesToolkit, b$ as createPaperContext, c0 as derivedTools, c3 as getBufferedWsEvents, c4 as marketDataTools, c5 as paperTools, c9 as spotTools, cc as textResult, cd as toAnthropicTool, ce as toJsonSchema, cf as toMCPTool, cg as toOpenAITool, ch as toToolList, ci as toolkitToFormats, cj as tradingTools, ck as wsTools } from '../index-D2T_Rhwj.js';
2
+ import 'zod';
3
+ import 'node:events';