get_trading_status
Check real-time trading status for T-Invest securities to verify market availability and trading permissions before executing orders.
Instructions
Получить статус торгов по тикеру из Т-Инвестиций
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| tickers | Yes | Массив тикеров |
Implementation Reference
- src/tools/get-trading-status.ts:18-51 (handler)The handler function that executes the trading status lookup for a list of tickers.
async ({ tickers }) => { try { const settled = await Promise.allSettled( tickers.map(async (ticker) => { const item = await resolveTickerToInstrument(client, ticker); if (!item) return `${ticker}: инструмент не найден`; const resp = await client.post<GetTradingStatusResponse>( API_PATHS.MARKET_DATA.GET_TRADING_STATUS, { figi: item.figi }, ); const status = TRADING_STATUS_LABELS[resp.tradingStatus] ?? resp.tradingStatus; const flags: string[] = []; if (resp.limitOrderAvailableFlag) flags.push('лимит'); if (resp.marketOrderAvailableFlag) flags.push('рынок'); if (resp.apiTradeAvailableFlag) flags.push('API'); return `${ticker}: ${status}${flags.length ? ` (доступно: ${flags.join(', ')})` : ''}`; }), ); const results = settled.map((r, i) => r.status === 'fulfilled' ? r.value : `${tickers[i]}: ошибка`, ); return { content: [{ type: 'text' as const, text: results.join('\n') }] }; } catch (error) { return { content: [{ type: 'text' as const, text: `Ошибка: ${error instanceof Error ? error.message : String(error)}` }], isError: true, }; } }, - src/tools/get-trading-status.ts:10-53 (registration)Registration function that defines the 'get_trading_status' MCP tool, its schema, and associates it with the handler.
export function registerGetTradingStatus(server: McpServer, client: TInvestClient): void { server.tool( 'get_trading_status', 'Получить статус торгов по тикеру из Т-Инвестиций', { tickers: z.array(z.string()).min(1).max(50).describe('Массив тикеров'), }, READ_ONLY, async ({ tickers }) => { try { const settled = await Promise.allSettled( tickers.map(async (ticker) => { const item = await resolveTickerToInstrument(client, ticker); if (!item) return `${ticker}: инструмент не найден`; const resp = await client.post<GetTradingStatusResponse>( API_PATHS.MARKET_DATA.GET_TRADING_STATUS, { figi: item.figi }, ); const status = TRADING_STATUS_LABELS[resp.tradingStatus] ?? resp.tradingStatus; const flags: string[] = []; if (resp.limitOrderAvailableFlag) flags.push('лимит'); if (resp.marketOrderAvailableFlag) flags.push('рынок'); if (resp.apiTradeAvailableFlag) flags.push('API'); return `${ticker}: ${status}${flags.length ? ` (доступно: ${flags.join(', ')})` : ''}`; }), ); const results = settled.map((r, i) => r.status === 'fulfilled' ? r.value : `${tickers[i]}: ошибка`, ); return { content: [{ type: 'text' as const, text: results.join('\n') }] }; } catch (error) { return { content: [{ type: 'text' as const, text: `Ошибка: ${error instanceof Error ? error.message : String(error)}` }], isError: true, }; } }, ); }