Finam MCP Server
The Finam MCP Server enables AI assistants like Claude Desktop to interact with the Finam trading platform using natural language commands, providing comprehensive access to trading operations, market data, and account management.
Core Capabilities:
Account Management: View account balance, status, margin, available funds, daily profit, open positions (with quantity, average price, and P&L), transaction history, and trade history.
Market Data: Access historical candlesticks with flexible timeframes (M1, M5, M15, M30, H1, H2, H4, H8, D, W, MN, QR), real-time quotes (bid/ask prices, volume, OHLC), recent trades, and order book depth.
Asset Information: Retrieve instrument specifications (lot size, price steps, decimals, expiration dates), trading parameters (long/short availability, collateral requirements, risk rates), browse available instruments and exchanges, fetch option chains, and access trading schedules.
Order Management: Place market, limit, stop, and stop-limit orders (including multi-leg strategies) with configurable parameters; view active orders and order history; retrieve specific order details; cancel individual orders.
Key Features:
Works with both demo and live Finam accounts
Instruments use
TICKER@MICformat (e.g.,SBER@MOEX)Sensitive operations require additional confirmation
Compatible with MCP clients like Claude Desktop, Cursor, and VS Code
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Finam MCP Servershow me my current portfolio balance"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Finam MCP Server
MCP (Model Context Protocol) сервер для интеграции с торговой платформой Finam через Trade API.
Комплексный MCP-сервер для Finam Trade API, позволяющий осуществлять торговые операции через AI-ассистентов, таких как Claude Desktop и Cursor, используя естественный язык.
Содержание
Related MCP server: MetaTrader5 MCP Server
Предварительные требования
Для настройки и запуска Finam MCP Server вам потребуется:
Терминал (macOS/Linux) | Command Prompt или PowerShell (Windows)
Python 3.12+ (Проверьте официальное руководство по установке и подтвердите версию командой:
python3 --versionв терминале)uv (Установите используя официальное руководство) Совет:
uvможно установить через менеджер пакетов (например,Homebrew) или напрямую используяcurl | shFinam Trade API ключи (бесплатный демо-счёт доступен)
MCP клиент (Claude Desktop, Cursor, VS Code и т.д.)
Примечание: Использование MCP-сервера требует установки и настройки как самого MCP-сервера, так и MCP-клиента.
Быстрая установка
Выберите подходящий способ установки для вашего MCP-клиента:
Claude Desktop - Локальная установка: используйте
uvx→ см. Настройка Claude DesktopCursor - Локальная установка: используйте
uvx→ см. Настройка CursorVS Code - Локальная установка: используйте
uvx→ см. Настройка VS Code
Примечание: Как показать скрытые файлы
macOS Finder: Command + Shift + .
Linux файловые менеджеры: Ctrl + H
Windows File Explorer: Alt, V, H
Терминал (macOS/Linux):
ls -a
Примечание: Использование MCP-сервера требует установки и настройки как самого MCP-сервера, так и MCP-клиента.
# Установка из PyPI
uvx finam-mcp-server@latestПримечание: Если у вас ещё нет uv, установите его сначала и перезапустите терминал, чтобы uv/uvx стали доступны. См. официальное руководство: https://docs.astral.sh/uv/getting-started/installation/
Затем добавьте в конфигурацию вашего MCP-клиента:
Расположение конфигурационных файлов:
Claude Desktop:
~/Library/Application Support/Claude/claude_desktop_config.json(Mac) или%APPDATA%\Claude\claude_desktop_config.json(Windows)Cursor:
~/.cursor/mcp.json(Mac/Linux) или%USERPROFILE%\.cursor\mcp.json(Windows)
{
"mcpServers": {
"finam": {
"command": "uvx",
"args": ["finam-mcp-server@latest"],
"env": {
"FINAM_API_KEY": "ваш-api-ключ",
"FINAM_ACCOUNT_ID": "ваш-account-id"
}
}
}
}Клонируйте репозиторий и перейдите в директорию:
git clone https://github.com/Alexander-Panov/finam-mcp.git
cd finam-mcpУстановите зависимости:
# С использованием uv (рекомендуется)
uv sync
# Или pip
pip install -e .После установки/клонирования и активации виртуального окружения структура директорий должна выглядеть так:
finam-mcp/ ← Рабочая директория (корень проекта)
├── src/ ← Исходный код пакета
│ ├── __init__.py
│ ├── cli.py ← Интерфейс командной строки
│ ├── config.py ← Управление конфигурацией
│ ├── main.py ← Главный MCP-сервер
│ ├── middleware.py ← Middleware для аутентификации
│ ├── servers/ ← Специализированные MCP-серверы
│ │ ├── account.py ← Операции со счётом
│ │ ├── assets.py ← Работа с инструментами
│ │ ├── market_data.py ← Рыночные данные
│ │ └── order.py ← Торговые операции
│ └── tradeapi/ ← Обёртки над Finam Trade API
│ ├── finam.py ← Основной клиент
│ └── order/ ← Модели и клиент для ордеров
├── tests/ ← Тесты
├── .venv/ ← Виртуальное окружение
├── fastmcp.json ← Конфигурация FastMCP
├── pyproject.toml ← Конфигурация пакета
├── README.md
└── LICENSEПолучение API ключей
Посетите Личный кабинет Finam Trade
Создайте демо-счёт (или используйте реальный счёт)
Сгенерируйте API ключи в разделе "Токены"
Полезные ссылки
Возможности
Сервер предоставляет доступ к следующим функциям Finam Trade API:
Управление счётом
Просмотр баланса, маржи и статуса счёта
Информация о транзакциях и сделках
Работа с активами
Получение информации о торговых инструментах
Поиск инструментов по тикеру, бирже, типу
Информация о биржах и расписании торгов
Работа с опционами
Рыночные данные
Получение исторических свечей с гибкими таймфреймами
Котировки и последние сделки
Стакан заявок
Снапшоты инструментов
Управление ордерами
Размещение рыночных, лимитных и стоп-ордеров
Отмена ордеров (индивидуально или массово)
Получение истории ордеров и активных заявок
Примеры запросов
Какой у меня текущий баланс счёта на Finam?
Покажи мои текущие позиции на счёте Finam.
Купи 10 акций Сбербанка по рыночной цене.
Продай 5 акций Газпрома с лимитной ценой 150 рублей.
Отмени все открытые ордера.
Покажи все мои активные заявки.
Покажи дневную историю цен Сбербанка за последние 5 торговых дней.
Какая была цена закрытия Газпрома вчера?
Получи последний бар для Лукойла.
Покажи текущую котировку для Яндекса.
Получи 5-минутные свечи для Сбербанка за последние 2 часа.
Найди информацию об инструменте SBER@MOEX.
Покажи все доступные акции на Московской бирже.
Получи расписание торгов на сегодня.
Доступные инструменты
get_account_info()- Просмотр баланса и статуса счётаget_transactions()- История транзакцийget_trades()- История сделок
get_assets()- Список всех торговых инструментов с фильтрациейget_asset_params()- Параметры конкретного инструментаget_exchanges()- Список биржget_exchange_info()- Информация о конкретной биржеget_option_boards()- Информация о площадках опционовget_trade_schedule()- Расписание торговых сессий
get_candles()- Исторические свечи с различными таймфреймамиget_quotes()- Текущие котировкиget_order_book()- Стакан заявокget_last_trades()- Последние сделки
get_orders()- Получение всех или отфильтрованных ордеровplace_order()- Размещение ордера (market, limit, stop)cancel_order()- Отмена конкретного ордераcancel_all_orders()- Отмена всех открытых ордеров
Конфигурация MCP клиентов
Ниже вы найдёте пошаговые руководства для подключения Finam MCP сервера к различным MCP клиентам.
Примечание: Предполагается, что все предварительные требования установлены.
Метод: uvx (Рекомендуется)
Простой и современный подход:
Откройте Claude Desktop → Settings → Developer → Edit Config
Добавьте эту конфигурацию:
{ "mcpServers": { "finam": { "type": "stdio", "command": "uvx", "args": ["finam-mcp-server@latest"], "env": { "FINAM_API_KEY": "ваш-api-ключ", "FINAM_ACCOUNT_ID": "ваш-account-id" } } } }Перезапустите Claude Desktop и начинайте торговать!
Примечание: Предполагается, что все предварительные требования установлены.
Официальная документация по настройке MCP в Cursor: https://docs.cursor.com/context/mcp
Использование JSON конфигурации
Откройте и отредактируйте ~/.cursor/mcp.json (macOS/Linux) или %USERPROFILE%\.cursor\mcp.json (Windows):
{
"mcpServers": {
"finam": {
"type": "stdio",
"command": "uvx",
"args": ["finam-mcp-server@latest"],
"env": {
"FINAM_API_KEY": "ваш-api-ключ",
"FINAM_ACCOUNT_ID": "ваш-account-id"
}
}
}
}VS Code поддерживает MCP серверы через режим агента GitHub Copilot. Официальная документация: https://code.visualstudio.com/docs/copilot/chat/mcp-servers
Примечание: Предполагается, что все предварительные требования установлены.
1. Включите поддержку MCP в VS Code
Откройте настройки VS Code (Ctrl/Cmd + ,)
Найдите "chat.mcp.enabled" и отметьте галочку для включения поддержки MCP
Найдите "github.copilot.chat.experimental.mcp" и отметьте галочку для использования файлов инструкций
2. Настройте MCP сервер (рекомендуется uvx)
Рекомендация: Используйте конфигурацию для конкретного workspace (.vscode/mcp.json) вместо общей конфигурации пользователя.
Для настроек workspace:
Создайте
.vscode/mcp.jsonв корне вашего проектаДобавьте конфигурацию Finam MCP сервера вручную в файл mcp.json:
{ "mcp": { "servers": { "finam": { "type": "stdio", "command": "uvx", "args": ["finam-mcp-server@latest"], "env": { "FINAM_API_KEY": "ваш-api-ключ", "FINAM_ACCOUNT_ID": "ваш-account-id" } } } } }
Тестирование с MCP Inspector
MCP Inspector позволяет интерактивно тестировать все инструменты сервера:
npx @modelcontextprotocol/inspectorПодключитесь к серверу, используя адрес: http://localhost:3000/mcp и добавив заголовки с ключом Finam API и Account ID.
Важные особенности
Формат символов инструментов
Все инструменты указываются в формате ТИКЕР@MIC:
SBER@MOEX- Сбербанк на Московской биржеGAZP@MOEX- Газпром на Московской биржеПо умолчанию используются биржи:
MOEX,SPBE
Формат времени
API требует даты и время в формате ISO 8601:
2024-01-15T10:30:00Z2024-01-15T10:30:00+03:00
TimeFrame для свечей
Доступные таймфреймы из finam_trade_api.instruments.TimeFrame:
M1,M5,M15,M30- минутыH1,H4- часыD1- деньW1- неделя
Использование FastMCP конфигурации
Проект поддерживает декларативную конфигурацию через fastmcp.json:
# Запуск с автоматическим обнаружением fastmcp.json
fastmcp run
# Или явное указание файла
fastmcp run fastmcp.json
# Для разработки с Inspector UI
fastmcp devТехнологии
Python 3.12+
FastMCP - фреймворк для создания MCP-серверов
FinamTradeApiPy - Python-обёртка для Finam Trade API
Поддержка
По вопросам и предложениям создавайте Issue в репозитории.
Отказ от ответственности
Не является инвестиционной рекомендацией. Все торговые операции осуществляются на ваш страх и риск. Автор не несёт ответственности за возможные убытки при использовании данного сервера. Тщательно проверяйте все действия, предлагаемые AI-ассистентом, особенно для сложных торговых операций.
Лицензия
MIT License - см. файл LICENSE для деталей.
Available Tools
17 toolsaccount_get_infoB
Получение информации по конкретному счету (статус и тип аккаунта, доступные средства, дневная прибыль, открытые позиции (количество, средняя цена, прибыль/убыток), тип портфеля)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| cash | No | |
| type | Yes | |
| equity | No | |
| status | Yes | |
| positions | No | |
| account_id | Yes | |
| open_account_date | Yes | |
| unrealized_profit | No | |
| first_non_trade_date | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While it lists the types of information retrieved, it doesn't describe behavioral traits such as authentication requirements, rate limits, whether the data is real-time or cached, error conditions, or response format. For a read operation with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence in Russian that lists all retrieved information types without unnecessary words. It's appropriately sized for a tool with no parameters, though it could be slightly more structured (e.g., grouping related data points). Every part of the sentence contributes to understanding what information is returned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no input parameters, an output schema exists, and it's a read operation, the description is minimally adequate. It specifies the scope of returned data (account info, positions, portfolio type), which complements the output schema. However, without annotations and lacking usage guidelines, it doesn't fully prepare the agent for effective use, especially relative to sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100% (though trivial since there are no parameters). The description doesn't need to explain parameters, so it meets the baseline expectation. No additional parameter semantics are required or provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: retrieving specific account information including status, type, available funds, daily profit, open positions, and portfolio type. It uses the Russian verb 'Получение' (retrieval) with the resource 'счета' (account), making the action and target explicit. However, it doesn't distinguish this from sibling tools like 'account_get_trades' or 'account_get_transactions', which likely retrieve different subsets of account data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, timing considerations, or compare it to sibling tools like 'account_get_trades' (which might retrieve trade history) or 'assets_get' (which might retrieve asset holdings). The agent must infer usage from the tool name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
account_get_tradesC
Получение истории по сделкам аккаунта
| Name | Required | Description | Default |
|---|---|---|---|
| start_time | Yes | ||
| end_time | Yes | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| trades | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It implies a read-only operation ('Получение' means 'getting'), but doesn't specify authentication needs, rate limits, pagination behavior, or what the output contains. For a tool with three parameters and an output schema, this leaves significant gaps in understanding how it behaves beyond basic purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence in Russian that directly states the tool's purpose without unnecessary words. It's appropriately sized for a basic tool, though it could be more front-loaded with key details given the lack of annotations and parameter documentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 parameters, 2 required), no annotations, and an output schema, the description is minimally adequate. The output schema helps offset some completeness needs, but the description lacks details on usage context, parameter meanings, and behavioral traits, making it incomplete for optimal agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema provides no parameter descriptions. The tool description doesn't mention any parameters, leaving all three (start_time, end_time, limit) undocumented. However, with an output schema present, some context is inferred, but the description fails to compensate for the coverage gap, resulting in minimal added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the purpose as 'Получение истории по сделкам аккаунта' (Getting account trade history), which clearly indicates a read operation for trade data. However, it's somewhat vague about scope and doesn't distinguish from sibling tools like 'account_get_transactions' or 'order_get_list', leaving ambiguity about what specific trade data it returns versus those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. With siblings like 'account_get_transactions' and 'order_get_list' that might overlap in functionality, the description offers no context about differences, prerequisites, or appropriate use cases, leaving the agent to guess based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
account_get_transactionsC
Получение списка транзакций аккаунта
| Name | Required | Description | Default |
|---|---|---|---|
| start_time | Yes | ||
| end_time | Yes | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| transactions | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states it's a read operation ('получение' - getting), implying it's likely non-destructive, but doesn't specify authentication requirements, rate limits, pagination behavior (beyond the limit parameter), or what constitutes a 'transaction' (e.g., deposits, withdrawals, trades). For a tool with no annotation coverage, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence in Russian that directly states the tool's purpose without unnecessary words. It's appropriately sized for a basic tool, though it could benefit from being more informative. The structure is straightforward, but it lacks front-loading of critical details like differentiation from siblings.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (which should document return values), the description doesn't need to explain outputs. However, with no annotations, 3 parameters (2 required), and 0% schema coverage, the description is incomplete—it doesn't address key contextual aspects like authentication, error handling, or transaction scope. It's minimally adequate but has clear gaps in guiding the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, meaning none of the parameters (start_time, end_time, limit) are documented in the schema. The description adds no parameter information beyond what's implied by the tool name—it doesn't explain what time ranges are valid, the format of transactions returned, or how the limit parameter interacts with pagination. With low schema coverage, the description fails to compensate, leaving parameters largely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Получение списка транзакций аккаунта' (Getting a list of account transactions) clearly states the verb ('получение' - getting) and resource ('транзакций аккаунта' - account transactions), but it doesn't differentiate from sibling tools like account_get_trades or account_get_info. The purpose is understandable but lacks specificity about what distinguishes this transaction retrieval from other account-related operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites, context for usage, or comparison with sibling tools like account_get_trades (which might retrieve trade-related transactions) or order_get_list (which might retrieve order-related transactions). The agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assets_getB
Получение информации по конкретному инструменту (лот, шаг цены, дата экспирации фьючерса)
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | symbol в формате: SYMBOL@MIC (например, YDEX@MISX) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| mic | Yes | |
| isin | Yes | |
| name | Yes | |
| type | Yes | |
| board | Yes | |
| ticker | Yes | |
| decimals | Yes | |
| lot_size | Yes | |
| min_step | Yes | |
| expiration_date | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While it states what information is retrieved, it doesn't describe the tool's behavior beyond that—such as whether it's a read-only operation (implied but not stated), error handling, response format, or any limitations. For a tool with no annotation coverage, this leaves significant gaps in understanding how it operates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence in Russian that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and resource, making it easy to parse. Every part of the sentence contributes to understanding what the tool does.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter, no nested objects) and the presence of an output schema (which handles return values), the description is reasonably complete. It specifies the type of information retrieved, which complements the structured data. However, it lacks behavioral context like error cases or usage constraints, which would be beneficial despite the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with the parameter 'symbol' fully documented in the input schema (including format, examples, and pattern). The description adds no additional parameter semantics beyond what the schema provides, such as explaining the MIC part or how symbols are structured. Since the schema does the heavy lifting, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Получение информации' - getting information) and the resource ('по конкретному инструменту' - about a specific instrument), with specific examples of what information is retrieved (lot, price step, futures expiration date). It distinguishes from siblings like assets_get_list (which likely lists multiple assets) and assets_get_params (which might get different parameters). However, it doesn't explicitly differentiate from all siblings like assets_get_exchanges or assets_get_schedule.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to use assets_get versus assets_get_list (for multiple assets) or assets_get_params (for different parameters), nor does it specify prerequisites like authentication requirements or rate limits. The agent must infer usage from the tool name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assets_get_exchangesB
Получение списка доступных бирж, включая их названия и MIC-коды
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| exchanges | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves a list, implying a read-only operation, but doesn't cover aspects like authentication requirements, rate limits, error handling, or response format. For a tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, making it easy for an agent to quickly understand the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, output schema exists), the description is minimally adequate. It explains what the tool does but lacks behavioral context and usage guidelines. With an output schema, it doesn't need to detail return values, but the absence of annotations means more behavioral disclosure would be helpful for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description doesn't add parameter-specific information, but this is acceptable given the lack of parameters. A baseline score of 4 is appropriate as the description doesn't need to compensate for any parameter gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Получение списка доступных бирж' (Getting a list of available exchanges). It specifies the verb (getting/retrieving) and resource (exchanges), and mentions the included data (names and MIC codes). However, it doesn't explicitly differentiate from sibling tools like 'assets_get' or 'assets_get_list', which might also retrieve asset-related data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context for usage, or compare it to sibling tools such as 'assets_get' or 'market_data_get' tools. This leaves the agent without clear direction on appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assets_get_listB
Получение списка доступных инструментов, их описание (символы, наименование)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| assets | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states it retrieves a list but doesn't disclose behavioral traits like pagination, rate limits, authentication needs, or whether it's a read-only operation. The description is minimal and lacks essential context for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence in Russian that directly states the purpose without unnecessary words. It's appropriately sized for a no-parameter tool, though it could be slightly more structured by front-loading key details like 'list all instruments' more explicitly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 0 parameters, 100% schema coverage, and an output schema exists, the description is minimally adequate. However, as a read operation with no annotations, it should ideally mention it's safe and list-oriented to compensate for the lack of structured behavioral hints, which it doesn't fully do.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the absence of inputs. The description doesn't need to add parameter semantics, and it appropriately doesn't mention any parameters, earning a baseline score of 4 for this context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Получение' - 'Getting') and resource ('списка доступных инструментов' - 'list of available instruments'), specifying it retrieves instruments with their descriptions including symbols and names. However, it doesn't explicitly differentiate from sibling tools like 'assets_get' which might retrieve a single asset rather than a list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. With siblings like 'assets_get' (likely for single asset), 'assets_get_exchanges', and 'assets_get_params', the description doesn't indicate this is for listing all available instruments versus filtered or specific queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assets_get_options_chainB
Получение цепочки опционов для базового актива
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | symbol в формате: SYMBOL@MIC (например, YDEX@MISX) |
Output Schema
| Name | Required | Description |
|---|---|---|
| symbol | Yes | |
| options | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states what the tool does ('retrieval'), but doesn't disclose whether this is a read-only operation, if it requires authentication, has rate limits, returns real-time or delayed data, or what happens on errors. For a financial data tool with zero annotation coverage, this is a significant gap in behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence in Russian that directly states the tool's purpose with zero wasted words. It's appropriately sized for a tool with one parameter and good schema documentation, though the language barrier might affect accessibility for non-Russian speaking agents.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (which handles return values), 100% schema description coverage for the single parameter, and no complex nested structures, the description is reasonably complete. The main gaps are the lack of behavioral context (especially with no annotations) and usage guidelines, but for a relatively simple retrieval tool, it provides adequate context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with the single parameter 'symbol' fully documented in the input schema (including format, examples, pattern, and type). The description doesn't add any parameter semantics beyond what's already in the schema, so it meets the baseline of 3 when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Получение' - 'Retrieval') and the resource ('цепочки опционов для базового актива' - 'options chain for the underlying asset'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'assets_get' or 'assets_get_params', which could also retrieve asset-related data but for different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'assets_get' (which might retrieve general asset info) or 'market_data_get' tools (which might provide other market data), leaving the agent to infer usage context solely from the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assets_get_paramsB
Получение торговых параметров по инструменту (операции лонг/шорт, гарантийное обеспечение, ставки риска)
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | symbol в формате: SYMBOL@MIC (например, YDEX@MISX) |
Output Schema
| Name | Required | Description |
|---|---|---|
| symbol | Yes | |
| longable | Yes | |
| shortable | Yes | |
| tradeable | Yes | |
| account_id | Yes | |
| long_risk_rate | No | |
| long_collateral | No | |
| short_risk_rate | No | |
| short_collateral | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While it indicates this is a retrieval operation ('Получение'), it doesn't describe authentication requirements, rate limits, error conditions, response format, or whether this is a real-time or cached data source. For a financial data tool with zero annotation coverage, this represents significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that clearly states the tool's purpose. It's appropriately sized for a single-parameter retrieval tool and front-loads the essential information. Every word earns its place by specifying what trading parameters are retrieved.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (which handles return values), 100% schema description coverage for the single parameter, and relatively simple functionality (retrieval of trading parameters), the description is reasonably complete. However, the lack of behavioral context (especially with no annotations) and usage guidance prevents a perfect score for this financial data tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents the single parameter's format, pattern, and examples. The description doesn't add any parameter-specific information beyond what's in the schema. According to scoring rules, when schema_description_coverage is high (>80%), the baseline is 3 even with no parameter information in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Получение' - retrieval) and the resource ('торговые параметры по инструменту'), specifying what financial parameters are obtained. It distinguishes from siblings like assets_get (general asset data) and assets_get_list (asset listings) by focusing specifically on trading parameters. However, it doesn't explicitly contrast with market_data_get tools that provide different market data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives. The description doesn't mention prerequisites, appropriate contexts, or contrast with sibling tools like assets_get (which might provide different asset information) or market_data_get tools that provide different types of market data. The agent must infer usage from the tool name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assets_get_scheduleC
Получение расписания торгов для указанного инструмента
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | symbol в формате: SYMBOL@MIC (например, YDEX@MISX) |
Output Schema
| Name | Required | Description |
|---|---|---|
| symbol | Yes | |
| sessions | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It only states what the tool does ('getting trading schedule') without describing response format, error conditions, rate limits, authentication requirements, or whether this is a read-only operation. For a tool with no annotation coverage, this is insufficient behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose. There's no wasted language or unnecessary elaboration. However, it could be slightly more front-loaded with key information about the type of data returned (trading schedule vs. other asset data).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (which handles return values) and 100% schema coverage for the single parameter, the description is minimally adequate. However, for a tool with no annotations, it should provide more behavioral context about what a 'trading schedule' contains, typical use cases, or limitations. The description meets basic requirements but leaves gaps in operational understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single parameter 'symbol' well-documented in the schema with format, examples, and pattern. The description doesn't add any parameter semantics beyond what the schema already provides. With high schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate but also doesn't need to.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Получение' - 'Getting') and the resource ('расписания торгов' - 'trading schedule') for a specific instrument. It distinguishes from siblings like assets_get (general asset info) and assets_get_params (asset parameters), but doesn't explicitly contrast with them. The purpose is specific but lacks explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There are related tools like assets_get_exchanges (exchange info) and market_data_get_bars (market data), but the description doesn't indicate when trading schedule data is needed versus other asset or market data. No context about prerequisites or typical use cases is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_data_get_barsC
Получение исторических данных по инструменту (агрегированные свечи)
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | symbol в формате: SYMBOL@MIC (например, YDEX@MISX) | |
| start_time | Yes | ||
| end_time | Yes | ||
| timeframe | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| bars | Yes | |
| symbol | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral context. It states it retrieves historical aggregated candles but doesn't disclose rate limits, authentication requirements, data freshness, whether it's a read-only operation, what happens with invalid time ranges, or pagination behavior. For a data retrieval tool with 4 parameters, this leaves significant behavioral uncertainty.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient Russian sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized for a data retrieval tool and front-loads the core functionality. Every word earns its place in conveying the essential action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters with low schema coverage (25%) and no annotations, but does have an output schema (which handles return values), the description is minimally adequate. It identifies the tool as historical data retrieval but lacks sufficient guidance on usage, parameters, and behavioral traits. The output schema reduces the need to describe return values, but other gaps remain significant.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only the symbol parameter has a description), so the description must compensate but adds no parameter information. It mentions 'агрегированные свечи' (aggregated candles) which hints at the timeframe parameter's purpose, but doesn't explain start_time/end_time formats, symbol format requirements beyond the schema's pattern, or timeframe enum meanings. The description provides minimal value beyond what the sparse schema offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Получение' - getting/retrieving) and resource ('исторических данных по инструменту' - historical data for an instrument), specifying it provides aggregated candles. It distinguishes from siblings like market_data_get_last_quote (real-time quotes) and market_data_get_last_trades (recent trades). However, it doesn't explicitly mention it's for historical OHLC/bar data versus other historical data types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose this over market_data_get_last_quote for current prices, or assets_get for instrument metadata, or specify prerequisites like needing market data access. Usage is implied by the name but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_data_get_last_quoteB
получение последней котировки инструмента (цена покупки/продажи, цена открытия/закрытия, цена последней сделки, дневной объем сделок, объем покупки/продажи)
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | symbol в формате: SYMBOL@MIC (например, YDEX@MISX) |
Output Schema
| Name | Required | Description |
|---|---|---|
| quote | Yes | |
| symbol | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It describes the data returned (prices, volumes) but lacks behavioral details like rate limits, authentication needs, latency, or error conditions. For a read-only tool with no annotations, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence listing key data fields. It is appropriately sized for a simple retrieval tool, though it could be more front-loaded by stating the core purpose first before details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter), high schema coverage (100%), and presence of an output schema, the description is reasonably complete. It covers the purpose and data returned, though it lacks behavioral context which is partially mitigated by the structured data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the symbol parameter well-documented in the schema (format, examples, pattern). The description adds no parameter-specific information beyond implying 'instrument' maps to 'symbol', so it meets the baseline of 3 without compensating value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'получение' (retrieval) and the resource 'последней котировки инструмента' (last quote of an instrument), with specific data fields listed. It distinguishes from siblings like market_data_get_bars (historical bars) and market_data_get_last_trades (last trades), though not explicitly named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like market_data_get_bars for historical data or market_data_get_order_book for depth. The description implies it's for the most recent quote data, but lacks context on prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_data_get_last_tradesB
Получение списка последних сделок по инструменту
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | symbol в формате: SYMBOL@MIC (например, YDEX@MISX) |
Output Schema
| Name | Required | Description |
|---|---|---|
| symbol | Yes | |
| trades | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states it's a read operation ('Получение' - 'Getting'), implying it's non-destructive, but doesn't mention authentication requirements, rate limits, pagination, or what the output contains (though an output schema exists). For a tool with no annotations, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence in Russian that directly states the tool's purpose without any fluff. It's front-loaded and efficiently communicates the core function, making it easy to parse quickly. Every word earns its place, and there's no wasted verbiage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one parameter with full schema coverage and an output schema, the description is minimally adequate. However, it lacks context on usage guidelines, behavioral traits (like authentication needs), and doesn't leverage the output schema to hint at return values. For a simple read tool, it's functional but could be more informative to fully guide an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description doesn't add any parameter information beyond what's in the input schema, which has 100% coverage and fully documents the single 'symbol' parameter with examples and pattern. Since schema coverage is high, the baseline is 3, and the description doesn't compensate with additional context like default behavior or constraints, so it remains at 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Получение' - 'Getting') and resource ('списка последних сделок по инструменту' - 'list of last trades for an instrument'), making the purpose immediately understandable. It distinguishes from siblings like market_data_get_bars (historical data) and market_data_get_last_quote (quote data), though not explicitly. However, it doesn't specify what 'last trades' means (e.g., time window, count), keeping it from a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose this over market_data_get_bars (for historical trades) or account_get_trades (for user-specific trades), nor does it specify prerequisites like authentication or rate limits. The context is implied by the tool name but not explicitly stated in the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_data_get_order_bookB
Получение текущего стакана по инструменту
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | symbol в формате: SYMBOL@MIC (например, YDEX@MISX) |
Output Schema
| Name | Required | Description |
|---|---|---|
| symbol | Yes | |
| orderbook | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While it indicates this is a read operation ('Получение' - getting), it doesn't mention important behavioral aspects like whether this requires authentication, rate limits, what format the order book data returns, or any constraints on symbol availability. The description is minimal and lacks behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise - a single Russian phrase that directly states the tool's purpose. There's zero wasted language, and it's front-loaded with the essential information. Every word earns its place in this minimal description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a read operation with one well-documented parameter and an output schema exists (which handles return values), the description is minimally adequate. However, for a market data tool that likely has behavioral constraints (rate limits, authentication needs, symbol availability), the description should provide more context about these aspects since no annotations are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description doesn't add any parameter information beyond what's already in the schema. With 100% schema description coverage and a well-documented 'symbol' parameter that includes description, examples, and pattern, the schema does all the work. The baseline score of 3 is appropriate since the description doesn't compensate but doesn't need to given the comprehensive schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Получение текущего стакана по инструменту' (Getting the current order book for an instrument) clearly states the verb ('Получение' - getting) and resource ('стакана по инструменту' - order book for an instrument). It's specific about what data is retrieved, though it doesn't explicitly differentiate from siblings like 'market_data_get_last_quote' or 'market_data_get_last_trades' beyond the obvious 'order book' vs 'quote/trades' distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when this tool is appropriate compared to other market data tools like 'market_data_get_bars' or 'market_data_get_last_quote', nor does it specify any prerequisites or exclusions for its use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_cancelC
Отмена биржевой заявки
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| order | Yes | Заявка |
| status | Yes | |
| exec_id | No | Идентификатор исполнения |
| order_id | Yes | Идентификатор заявки |
| accept_at | No | Дата и время принятия заявки |
| transact_at | No | Дата и время выставления заявки |
| withdraw_at | No | Дата и время отмены заявки |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It implies a destructive mutation ('cancel'), but doesn't disclose behavioral traits like whether cancellation is reversible, requires specific permissions, has rate limits, or what happens on success/failure. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient phrase in Russian that directly states the tool's action. It's front-loaded with the core purpose and has zero wasted words, making it highly concise and well-structured for its minimal content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a destructive mutation with one parameter) and the presence of an output schema (which may cover return values), the description is minimally complete but inadequate. It states what the tool does but lacks usage context, parameter details, and behavioral disclosures. With no annotations and low schema coverage, it should provide more guidance to be fully helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It doesn't mention the 'order_id' parameter at all, leaving its meaning and format undocumented. The description adds no semantic value beyond what the bare schema provides, failing to explain what 'order_id' represents or how to obtain it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Отмена биржевой заявки' (Cancellation of exchange order) clearly states the verb ('cancel') and resource ('exchange order'), making the purpose unambiguous. It distinguishes from siblings like order_place (create) and order_get (read), though it doesn't explicitly name alternatives. The purpose is specific but could be more precise about what type of order is being canceled.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., an existing order), exclusions, or contextual cues. Given siblings like order_get_list and order_get, there's no indication of when cancellation is appropriate versus querying orders.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_getC
Получение информации о конкретном ордере
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| order | Yes | Заявка |
| status | Yes | |
| exec_id | No | Идентификатор исполнения |
| order_id | Yes | Идентификатор заявки |
| accept_at | No | Дата и время принятия заявки |
| transact_at | No | Дата и время выставления заявки |
| withdraw_at | No | Дата и время отмены заявки |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states this is for 'Получение информации' (Getting information), which suggests a read-only operation, but doesn't disclose behavioral traits like authentication needs, rate limits, error handling, or what happens if the order ID is invalid. For a tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence in Russian, front-loaded with the core purpose. There's no wasted text, making it appropriately sized for a simple tool. However, it could be more structured if it included additional details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 1 parameter, no annotations, but an output schema exists, the description is minimally complete. The output schema likely covers return values, so the description doesn't need to explain those. However, for a read operation with no annotations, it should provide more context on behavior and parameters to be fully helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description doesn't add any meaning beyond what the input schema provides. It mentions 'конкретном ордере' (specific order), which hints at the 'order_id' parameter, but doesn't explain its format, constraints, or examples. With 1 parameter and low coverage, the description fails to compensate adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Получение информации о конкретном ордере' (Getting information about a specific order) states the basic purpose with a verb ('Получение' - Getting) and resource ('ордере' - order). However, it's vague about what specific information is retrieved and doesn't distinguish from sibling tools like 'order_get_list' or 'order_cancel' beyond mentioning 'конкретном' (specific).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an order ID), exclusions, or comparisons to siblings like 'order_get_list' for multiple orders or 'order_cancel' for modifications. The description implies usage for a single order but lacks explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_get_listB
Получение списка заявок для аккаунта
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| orders | Yes | Заявки |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states it retrieves a list of orders for an account but doesn't describe what the list includes (e.g., all orders, filtered by status), how it's paginated, any rate limits, authentication needs, or the return format. This leaves significant gaps for a tool that likely interacts with financial data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence in Russian that directly states the tool's purpose without any fluff or redundancy. It's appropriately sized and front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 0 parameters, 100% schema coverage, and an output schema exists (which handles return values), the description's minimalism is somewhat acceptable. However, for a tool in a financial context with siblings like 'order_get' and 'order_cancel', more behavioral context (e.g., what orders are included, any filters) would improve completeness, as annotations are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, and the baseline for 0 parameters is 4, as it avoids unnecessary detail while matching the schema's simplicity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Получение' - 'Getting') and resource ('списка заявок' - 'list of orders') for a specific account, making the purpose understandable. However, it doesn't differentiate from sibling tools like 'order_get' (which presumably gets a single order) or specify what type of orders are included (open, closed, all).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives. The description doesn't mention when to use 'order_get_list' versus 'order_get' (for single orders) or 'account_get_trades' (which might overlap with order data), nor does it specify prerequisites or context for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_placeD
Выставление биржевой заявки
| Name | Required | Description | Default |
|---|---|---|---|
| order | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| order | Yes | Заявка |
| status | Yes | |
| exec_id | No | Идентификатор исполнения |
| order_id | Yes | Идентификатор заявки |
| accept_at | No | Дата и время принятия заявки |
| transact_at | No | Дата и время выставления заявки |
| withdraw_at | No | Дата и время отмены заявки |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure but provides none. It doesn't mention that this is a potentially destructive/mutative operation (placing orders typically involves financial transactions), what permissions are required, rate limits, error conditions, or what happens on success. The description is completely inadequate for a financial transaction tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is maximally concise - a single phrase that directly states the tool's purpose. There's no wasted language or unnecessary elaboration. While this conciseness comes at the cost of completeness, the description itself is efficiently structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex financial order placement tool with a rich input schema (Order object with 11 properties, multiple enums) and no annotations, the description is completely inadequate. It doesn't explain what the tool does beyond the name, provides no parameter guidance, no behavioral context, and no usage guidelines. The existence of an output schema doesn't compensate for these fundamental gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the schema provides no parameter descriptions. The tool description adds no parameter information whatsoever - it doesn't mention the 'order' parameter, what it contains, or how to structure it. For a complex tool with a nested Order object containing 11 properties, this is a critical deficiency.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Выставление биржевой заявки' (Placing a stock exchange order) is a tautology that essentially restates the tool name 'order_place'. It doesn't specify what type of order (market, limit, stop, etc.) or provide any distinguishing details from sibling tools like 'order_cancel' or 'order_get'. While it indicates the general domain, it lacks specificity about the actual operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There are multiple sibling tools related to orders (order_cancel, order_get, order_get_list), but the description doesn't indicate this is for creating new orders versus managing existing ones. No prerequisites, context, or exclusion criteria are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
17 tool updates
v1.0.0- First observed
account_get_info - First observed
account_get_trades - First observed
account_get_transactions - First observed
assets_get - First observed
assets_get_exchanges - First observed
assets_get_list - First observed
assets_get_options_chain - First observed
assets_get_params - First observed
assets_get_schedule - First observed
market_data_get_bars - First observed
market_data_get_last_quote - First observed
market_data_get_last_trades - First observed
market_data_get_order_book - First observed
order_cancel - First observed
order_get - First observed
order_get_list - First observed
order_place
TDQS
Scored across 17 tools
Each tool has a clearly distinct purpose with no overlap, organized by functional categories like account, assets, market data, and orders. For example, account_get_info, account_get_trades, and account_get_transactions cover different aspects of account data without ambiguity, and similar clarity exists across all tools.
All tool names follow a consistent pattern of 'category_verb_noun' (e.g., account_get_info, market_data_get_bars, order_place), using snake_case throughout. This predictable structure makes it easy to understand each tool's function and domain at a glance.
With 17 tools, the server is well-scoped for a financial trading domain, covering account management, asset information, market data, and order operations. Each tool serves a specific, necessary function without redundancy, fitting within the typical 3-15 range for such a comprehensive service.
The tool set provides complete coverage for financial trading, including CRUD operations for orders (place, get, list, cancel), detailed account and asset data, and comprehensive market data access. There are no obvious gaps; agents can perform full trading workflows from research to execution and monitoring.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Connect any MCP client to MetaTrader 4/5 to read prices, manage positions, and place trades.
Vietnam stock market data & portfolios via Finhay Securities OpenAPI.
Finnhub MCP — wraps Finnhub Stock API (finnhub.io)
Trade 16 crypto exchanges + MetaTrader 5 from your AI assistant via one MCP connection.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables trading and market analysis through Tiger Brokers API integration. Provides real-time market data, portfolio management, order execution, and technical analysis tools with a comprehensive web dashboard for monitoring.8-
- AlicenseNot gradedqualityCmaintenanceEnables access to MetaTrader5 market data and trading functionality, including real-time quotes, historical OHLCV data, tick data, symbol information, and technical indicators for forex and other trading instruments.22MIT
- FlicenseBqualityDmaintenanceEnables real-time trading and market data access through TradeStation's API. Supports market quotes, historical data, account management, portfolio tracking, and order preview functionality for both simulation and live trading environments.133-
- FlicenseNot gradedqualityDmaintenanceEnables interaction with Interactive Brokers via the TWS API or IB Gateway to manage accounts, retrieve market data, and execute trades. It supports features like real-time market data, historical data queries, and order management for stocks and options.4-