Skip to main content
Glama

Echolon

PyPI Python License Status By DolphinQuant

📖 English · 简体中文

Фреймворк для бэктестинга, ориентированный на работу с LLM-агентами для исследования фьючерсов. Включает MCP-сервер, 22 встроенных навыка, 32 каталогизированных кода ошибок и типизированные конфигурации Pydantic — агенты вызывают структурированные инструменты вместо того, чтобы угадывать структуру API по текстовой документации. Сквозное решение для дневных фьючерсов SHFE.

Производственный движок внутри Qorka, продукта DolphinQuant для генерации стратегий с помощью ИИ. Используется для реальной торговли на SHFE каждый торговый день.

Быстрый старт

Три команды охватывают основной путь новичка:

Команда

Назначение

Время

echolon hello

Быстрая демонстрация. Загружает данные по алюминию SHFE (за последние 2 года) через akshare, создает каркас стратегии, запускает бэктест. Требуется сеть.

~30с

echolon init <workspace> --market SHFE --instrument <i> --start <d> --end <d> --template <t>

Начало реального проекта. Загружает рыночные данные через akshare (бесплатно, без регистрации), создает каркас стратегии из шаблона, записывает маркер рабочей области.

~1–5 мин

echolon backtest single <strategy_dir> [--json]

Итерация после редактирования. Переходит вверх по дереву для восстановления контекста из маркера рабочей области, пересчитывает индикаторы, запускает бэктест. Флаги не требуются.

~5–10с

pip install echolon
mkdir -p ~/echolon-playground && cd ~/echolon-playground
echolon hello                  # 30-second demo

echolon hello загружает данные по алюминию примерно за 2 года, создает каркас шаблона momentum_breakout, записывает .echolon-workspace.json и запускает бэктест. Откройте ./echolon-hello/strategy/baseline/entry.py, измените параметр, затем снова запустите echolon backtest single ./echolon-hello/strategy/baseline/, чтобы увидеть, как изменится коэффициент Шарпа.

В пакет включены три шаблона — minimal, momentum_breakout, rsi_mean_reversion. echolon examples --list показывает их список; передайте --template <name> в echolon init / echolon hello, чтобы начать работу с одним из них.

Если pip install завершается ошибкой на Linux ARM64 / Alpine / FreeBSD, запустите echolon doctor — он продиагностирует C-библиотеку ta-lib, единственную зависимость, которую, возможно, придется собирать из исходного кода вне стандартных платформ с готовыми колесами (Linux x86_64, macOS x86_64+arm64, Windows x86_64; Python 3.11–3.12).

Related MCP server: BotSpot

Управление через вашего агента

pip install echolon                                # 1. install
claude mcp add -s user echolon -- echolon-mcp      # 2. register MCP server (user-wide)
# 3. restart Claude Code to load mcp__echolon__* tools

Затем спросите:

"Создай трендовую стратегию на медь, проведи бэктест за 2018–2024 годы."

За кулисами агент вызывает list_skills → выбирает patterns и quick_startload_template("momentum_breakout")list_indicators(has_lookback=True) → редактирует entry.py и exit.py → циклически вызывает validate_strategy_full(strategy_dir), пока все не пройдет успешно → запускает бэктест. Если что-то ломается, он парсит [CODE-NNN] из трассировки стека и вызывает get_error_doc(code). Ему не нужно ничего угадывать.

Среда выполнения

Настройка

Claude Code

claude mcp add -s user echolon -- echolon-mcp

Cursor

В ~/.cursor/mcp.json добавьте запись в mcpServers: "echolon": {"command": "echolon-mcp", "args": []}

OpenAI Codex CLI

codex mcp add echolon -- echolon-mcp (записывает [mcp_servers.echolon] в ~/.codex/config.toml)

OpenAI Agents SDK (Python)

MCPServerStdio(name="echolon", params={"command": "echolon-mcp", "args": []})

LangChain / LangGraph

langchain-mcp-adapters: MultiServerMCPClient({"echolon": {"transport": "stdio", "command": "echolon-mcp", "args": []}})

Любой другой MCP-совместимый клиент (CrewAI, AutoGen, …)

Настройте его как stdio-сервер с command="echolon-mcp", без аргументов. См. документацию вашего клиента по MCP для формата вызова.

Для Claude Code: -s user делает регистрацию доступной для всех ваших проектов (уберите это для текущего проекта); -- отделяет имя регистрации от команды запуска. После однократного запуска claude mcp list должен показать echolon как подключенный stdio-сервер. Руководство по ориентации агента — llms.txt — также размещается в корне рабочей области командой echolon init / hello, чтобы агент, заходящий в проект, нашел его без необходимости наличия пакета.

Что входит в текущую версию

Реализовано полностью (промышленный уровень, используется ежедневно):

  • Исследование дневных фьючерсов SHFE — загрузка данных, каталог из 214 индикаторов, выполнение через Backtrader, оптимизация Optuna TPE (одно- и многоцелевая), анализ walk-forward с оценкой готовности к развертыванию, выбор надежных испытаний на основе KMeans.

  • Интерфейс агента — 23 MCP-инструмента, 22 навыка, 32 кода ошибок, 3 рабочих шаблона.

Пока нет (откройте issue, если хотите ускорить разработку какой-то части):

  • Внутридневной бэктестинг SHFE — конвейер данных готов, движок дорабатывается.

  • Живая торговля через MiniQMT — чистый публичный релиз в процессе.

  • Бессрочные криптофьючерсы (каркас адаптера CCXT готов), фьючерсы CME, акции.

  • Альтернативы Optuna (без grid, без random, без поиска с байесовским бюджетом), распределенная оркестрация, Python ≤ 3.10.

  • До версии 1.0 — публичный API может меняться между минорными версиями. Критические изменения документируются в CHANGELOG.md.

Используйте свои данные

Если у вас уже есть необработанные XLS-файлы SHFE (скачанные с shfe.com.cn), запустите SHFEFileDayExtractor напрямую вместо использования akshare. Для других форматов (брокерский CSV, tushare, пользовательская БД) три файла должны оказаться в {workspace}/workspace/data/market_data/SHFE/{instrument}/:

Файл

Схема

sort_by_contract/{contract}.csv

contract, date, prev_close, prev_settlement, open, high, low, close, settlement, price_change, settlement_change, volume, turnover, open_interest

sort_by_date.csv

Те же столбцы, все строки объединены и отсортированы по дате.

trading_calendar.csv

date, is_trading_day (логическое значение).

Плюс в {workspace}/data/SHFE/{instrument_code}/ (обратите внимание на КОРОТКИЙ код, например al, а не aluminum):

Файл

Схема

main_contract.csv

date, main_contract, где main_contract — это код контракта с суффиксом .SF (например, al2401.SF). Одна строка на дату смены основного контракта.

Echolon не выводит main_contract.csv автоматически из необработанных OHLCV — это ввод ПОЛЬЗОВАТЕЛЯ, который кодирует вашу конвенцию роллирования (правила, основанные на объеме, открытом интересе или днях до истечения срока). Для SHFE через akshare echolon init выводит его за вас; в противном случае создайте его самостоятельно и поместите в нужное место.

Информация о проекте

Apache 2.0 — см. LICENSE. Используйте свободно, в коммерческих или иных целях. Активная разработка, v0.1.2 beta. Создано и поддерживается DolphinQuant — той же командой, которая управляет Qorka на SHFE. Вопросы и pull-реквесты приветствуются на github.com/dolphinquant/echolon.

@software{echolon,
  title = {Echolon: AI-native quantitative trading engine},
  author = {DolphinQuant},
  year = {2026},
  url = {https://github.com/dolphinquant/echolon},
}

Available Tools

23 tools
describe_component_apiA

Return the live BaseComponent + IMarketData API surface.

    Use this BEFORE writing any component code. The return value is
    produced via ``inspect.signature()`` on the actual classes, so it
    always reflects the current echolon version — there is no skill /
    doc drift. If a method appears here, it exists; if it doesn't, it
    doesn't. Pip-install or editable-install, same answer.

    Returns a dict with shape::

        {
          "BaseComponent": {
            "override_methods": [{"name": ..., "signature": ..., "doc": ...}, ...],
            "helper_methods":   [{...}, ...],
            "properties":       [{"name": ..., "doc": ...}, ...],
          },
          "IMarketData": {
            "methods": [{"name": ..., "signature": ..., "doc": ...}, ...],
          },
        }

    ``override_methods`` are the four BaseComponent stubs each component
    file must override (``generate_signal`` / ``should_exit`` /
    ``can_trade`` / ``calculate_size``). ``helper_methods`` are concrete
    helpers strategies may call (``get_current_bar``, ``get_indicator``,
    ``log_*_output``, etc.). ``properties`` are read-only attribute
    accessors (``self.market_data``, ``self.portfolio``, ``self.params``).

    ``signature`` is the formatted ``inspect.Signature`` (e.g.
    ``"(self, name: str, index: int = 0) -> float"``). ``doc`` is the
    first line of the docstring; full docstrings live on the source.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite no annotations, the description thoroughly explains that the result is produced via inspect.signature() on actual classes, ensuring no drift. It details the return shape and the meaning of each section, providing full behavioral transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose, usage instruction, and detailed return shape. It uses code blocks and bullet points, though some sentences are verbose, earning a 4.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters or output schema, the description provides all necessary context: what the tool does, how it works, the return format, and interpretation tips, making it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no parameters, so schema coverage is 100%. The description adds value by explaining the return value; no parameter details are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns the live BaseComponent + IMarketData API surface, using specific verbs and resource names. It distinguishes itself from sibling tools like get_doc and list_skills by focusing on the component API surface.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use this BEFORE writing any component code,' providing clear usage context. However, it does not mention when not to use it or suggest alternatives among sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_strategy_paramsA

Generate strategy_params.py from params_to_optimize.json.

    Deterministic code generation: parses the JSON → determines parameter
    ownership across components → emits ComponentParameterTemplate classes
    + framework registration + optuna_search_space with crossover
    constraints → writes the target file. Period parameters that exceed
    the frequency-appropriate indicator cap are auto-clamped and reported.

    Args:
        params_file_path: Absolute path to ``params_to_optimize.json``.
        output_path: Absolute path to write ``strategy_params.py``.
        frequency: ``"interday"`` (caps: TEMA≤62, ADX≤93, default≤180)
            or ``"intraday"`` (caps: TEMA≤500, ADX≤750, default≤1000).

    Returns ``{"success": bool, "output_path": str, "corrections":
    [{"param", "type", "old_*", "new_*", "cap", "category", "changes"?}],
    "message": str}``. Parse / IO failures surface as
    ``success=False`` rather than raising.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
params_file_pathYes
output_pathYes
frequencyNointerday

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Describes deterministic code generation steps, auto-clamping, and error handling (success=False vs raising). No annotations provided, so description compensates well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear front-loaded purpose. Each sentence adds value, but could be slightly more concise without losing clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers inputs, processing, outputs, error handling, and return format. Despite no output schema or annotations, description provides complete context for invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but description adds thorough semantics: absolute paths for params_file_path and output_path, frequency with caps and default. Fully compensates for missing schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool generates strategy_params.py from params_to_optimize.json with specific verb and resource. Differentiates from sibling tools that are mainly descriptive or validation-focused.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context for when to use (code generation from JSON) and explains frequency-dependent caps. However, no explicit alternatives or when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_docA

Read any markdown file under echolon/native/ and return its body.

    Generic fallback for content not covered by the dedicated tools
    (``get_pattern``, ``get_skill``, ``get_error_doc``, ``load_template``).
    Useful for skill-cross-reference resolution and supplementary files
    (``echolon/native/skills/SKILLS.md``,
    ``echolon/native/errors/codes/README.md``, template READMEs).

    Args:
        path: Relative path under ``echolon/native/`` (e.g.
            ``"skills/SKILLS.md"``, ``"errors/codes/README.md"``,
            ``"templates/minimal/README.md"``). Absolute paths and
            paths escaping the package root are refused with
            ``error="path_outside_native"``.

    Returns ``{path, body}`` on success, or
    ``{error, message, path}`` on failure (path-traversal attempt,
    file not found, not a markdown file).
    
ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully discloses behavior: returns path and body on success, error object on failure with specific error types (path_outside_native). It also explains that absolute paths and escape attempts are refused, providing complete transparency for a read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is well-structured with clear sections (Args, Returns) and front-loaded purpose. Though slightly verbose with the docstring format, every sentence adds value and the structure aids readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite a single parameter and simple read operation, the description fully explains purpose, usage context, input format, error handling, and return values. An output schema exists, and the description complements it effectively with behavioral details, leaving no gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description provides detailed semantics for the 'path' parameter: relative path under 'echolon/native/', three concrete examples, and behavior on invalid paths. This adds essential meaning beyond the schema's simple string type.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it reads any markdown file under 'echolon/native/' and returns its body. It distinguishes itself from sibling tools by naming them as dedicated alternatives (get_pattern, get_skill, get_error_doc, load_template), making purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly identifies as generic fallback for content not covered by dedicated tools, with examples like skill-cross-reference resolution and supplementary files. While it doesn't explicitly say 'do not use when dedicated tools exist', the mention of specific siblings provides clear guidance on when to use alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_error_docA

Fetch the structured error documentation for a given error code.

    ``what`` and ``why`` come from the in-memory registry
    (``echolon.errors.ERROR_CATALOG``); the long-form sections (``fix``,
    ``example``, ``common_causes``, ``related``) come from the per-code
    markdown at ``echolon/native/errors/codes/{code}.md``. The full
    markdown body is also returned as ``long_form_markdown`` so an
    agent can consume the prose verbatim if the parsed sections are
    empty (parser-resilience fallback).

    Args:
        code: Error code like 'VAL-001' or 'IND-003'.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the dual data sources (in-memory registry and markdown files) and the parser-resilience fallback behavior. However, it does not mention authentication requirements, rate limits, or other potential behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise yet informative, with clear structure (overview, internal details, fallback). It front-loads the purpose and uses bullet points, making it easy to scan. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple tool (1 parameter, no output schema, no annotations), the description is remarkably complete. It explains the two-part data source, the fields returned (what, why, fix, etc.), and the fallback mechanism. No major gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter 'code' has 0% schema description coverage. The description adds meaning by providing examples ('VAL-001', 'IND-003') and explaining it represents an error code. This compensates for the schema's lack of detail, but no full pattern or constraints are given.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Fetch the structured error documentation for a given error code', specifying both the action (fetch) and the resource (error documentation). It implicitly distinguishes from siblings like get_doc or get_pattern by focusing specifically on error codes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 (e.g., get_doc for general documentation). There is no mention of prerequisites, contexts, or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_patternB

Return a pattern's structured content, or None if unknown.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that it returns None if the pattern is unknown, but with no annotations, it lacks other behavioral details like side effects, permissions, or data access patterns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no superfluous words. Every word is essential.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and an output schema, the description is minimally adequate but could explain what 'structured content' entails or provide example usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only implies the 'name' parameter identifies the pattern via the tool's purpose. With 0% schema description coverage, the description adds minimal new meaning beyond the parameter name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it returns a pattern's structured content or None, which distinguishes it from sibling tools like get_doc or get_skill. However, it does not explicitly contrast with siblings, so it's not a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like list_patterns or get_doc. No when-not-to-use or contextual advice provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_skillA

Return one skill's body, or None if unknown.

    Returns ``{name, description, body, body_no_frontmatter}``.
    ``body`` is the full file (including YAML frontmatter); use
    ``body_no_frontmatter`` for the prose alone.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Describes return format, documents both body and body_no_frontmatter, and mentions possible None return. Lacks details on side effects or performance, but acceptable for a read-only tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, no fluff. Front-loaded with action and return value. Each sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists (not detailed here), but description explains return keys sufficiently. For a simple lookup tool, all needed context is provided.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so description must compensate. Only parameter is 'name' (string). Description does not elaborate on it beyond schema, but its role is self-evident. Adequate but not extra helpful.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States clearly it returns a skill's body or None. Specifies return dictionary with keys. Distinguishes from sibling tools like get_doc and get_pattern.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Does not explicitly state when to use vs alternatives. Usage is implied by name and description, but no exclusion or context for when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

indicator_infoB

Return structured info for one indicator, or None if unknown.

    Keys: ``name``, ``has_lookback``, ``function``, ``file``, ``params``
    (list of ``{name, default, type}`` dicts). Column names emitted at
    runtime by ``processor._build_suffix`` (handles multi-param sweeps).
    
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that it returns None for unknown indicators and describes the return structure in detail. Since no annotations are provided, this is important behavioral info. No mention of side effects, but it is an indepotent query.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with a clear main sentence. It includes a list of keys but the mention of runtime column names is somewhat tangential but not detrimental.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple query tool with one parameter, the description covers the essential behavior and return format. The output schema exists and the description aligns, making it complete enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The parameter 'name' is described only implicitly as 'for one indicator'. The schema provides no description, and the tool description adds minimal semantic context beyond being an identifier.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it returns structured info for a single indicator, or None if unknown, and lists the keys of the returned structure. However, it does not explicitly differentiate from sibling tools like 'list_indicators' or 'indicator_params', though the function is distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. The description does not provide context about prerequisites or appropriate use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

indicator_paramsA

Return the tunable parameters for an indicator, or None if unknown.

    Convenience accessor — same as ``indicator_info(name)["params"]`` but
    skips the wrapper dict. Each entry is ``{"name": str, "default": any, "type": str}``.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully carries the burden. It discloses the None return for unknown indicators, the simplified access pattern, and the structure of each entry (name, default, type). No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loading the purpose and adding a helpful usage note. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool, the description covers the return format, the None case, and the structured output (name, default, type). An output schema exists, but the description still explains the return structure, making it self-contained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description should add meaning to the 'name' parameter. It does not elaborate beyond the schema, failing to clarify that 'name' should be an indicator name. This gap is significant for a single-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns tunable parameters for an indicator, or None if unknown. It distinguishes from sibling indicator_info by clarifying it is a convenience accessor that skips the wrapper dict.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when only parameters are needed by referencing indicator_info and noting it skips the wrapper. However, it does not explicitly state when to use this tool versus alternatives or include exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_indicatorsA

Return all indicator names in the echolon catalog, optionally filtered by lookback semantics.

    Args:
        has_lookback: Optional filter.
            ``True`` → only indicators with a period-like parameter
            (e.g. RSI, ATR — sweepable single-dim lookback).
            ``False`` → only indicators without a period parameter
            (no-param indicators like OBV, multi-param scalar indicators
            like BBANDS, special-config indicators).
            Omit for all.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
has_lookbackNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description provides behavioral context: the filter's effect (True/False/Omit) and examples (RSI, ATR, OBV). This is sufficient for a read-only list operation, though it omits details like sorting or pagination.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded and concise, though the docstring-style Args format adds minor verbosity. Every sentence serves a purpose, and the length is appropriate for the complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple input (one optional parameter) and presence of an output schema, the description covers the essential context. It explains the parameter thoroughly, leaving output details to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description fully explains the single parameter 'has_lookback' with concrete semantics for each value (True, False, Omit) and examples. Schema coverage is 0%, so the description compensates completely.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it returns indicator names from the catalog with optional filtering. The verb 'return' and resource 'indicator names' are specific, but it does not explicitly differentiate from sibling tools like indicator_info or indicator_params.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. With many sibling tools (indicator_info, indicator_params, etc.), the description should indicate what distinguishes listing names from other operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_patternsA

Return all canonical pattern names.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided. The description merely states the action without disclosing behavioral traits such as whether the result is paginated, sorted, or if there are any limitations. With zero annotations, the description should provide more transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, concise sentence that conveys the essential purpose. No unnecessary words, and it is front-loaded with the key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (0 parameters, with an output schema), the description is minimally complete but lacks context such as what 'canonical' means or whether the list is ordered. It does not explain the output format, relying on the output schema. Slightly more detail would improve usability.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no parameters. According to guidelines, 0 parameters yields a baseline of 4. The description does not need to add parameter information as there are none, so it adequately fulfills this dimension.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns all canonical pattern names. It specifies the verb 'return' and the resource 'canonical pattern names', distinguishing it from sibling tools like 'get_pattern' which returns a single pattern's details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., get_pattern for details, or other list tools). The description lacks context for an agent to choose correctly among sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_skillsA

Return all in-package skills as [{name, description}].

    Each skill is one ``SKILL.md`` packet under
    ``echolon/native/skills/echolon_api/<name>/``. Description comes
    from the YAML frontmatter ``description:`` field. Use this as a
    directory of "what doctrine is available" before calling
    ``get_skill(name)`` for the body.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully explains the behavior: it returns a list of skills with name and description extracted from SKILL.md files under a specific path. It describes the source of the description (YAML frontmatter). However, it does not mention potential side effects (none expected), performance characteristics, or error handling (e.g., empty list). Overall, it covers the essential behavioral aspects for a read-only list operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact with three sentences: one declaring the output, one explaining the source, and one giving usage context. It front-loads the key information and every sentence adds value. No wasted words or redundant clarifications.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and an output schema, the description covers the return format and domain context (the file path). It mentions the tool's role as a directory before get_skill, which completes the picture. However, it omits handling edge cases (e.g., no skills found) and does not explicitly state that no authorization is needed. Still, for a simple listing tool, it is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no parameters, so the description does not need to add parameter information. Schema description coverage is 100% (0 parameters). The baseline for zero parameters is 4, and the description meets that without adding extraneous details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'return', the resource 'all in-package skills', and specifies the output format as a list of name-description pairs. It explicitly distinguishes from the sibling tool 'get_skill' by stating its role as a directory before calling get_skill. The purpose is unambiguous and well-defined.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: 'Use this as a directory of what doctrine is available before calling get_skill(name) for the body.' This tells the agent when to use this tool (before get_skill) and when not to (if the full skill body is needed, use get_skill). It effectively differentiates from the sibling tool, offering clear decision-making context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_templatesA

Return all shipped strategy template names.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It indicates a read-only operation (returning names) but omits details like what 'shipped' means, authentication needs, or rate limits. Adequate but minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with purpose, no unnecessary words. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless tool with an output schema, the description is complete enough. It covers the core purpose, but could mention any constraints or expected response shape (handled by output schema).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so schema description coverage is 100%. The description adds no redundancy, and baseline score of 4 is appropriate given zero parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns all shipped strategy template names. It uses a specific verb (return) and resource (template names), and distinguishes itself from sibling tools like list_indicators and list_patterns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 vs alternatives, nor any when-not-to-use or prerequisite information. It simply states the function without context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

load_templateC

Load a template's files. Returns {'name': ..., 'files': {filename: content}}.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description must carry the burden of behavioral disclosure. It only mentions the return format but does not reveal side effects, authentication needs, or whether the operation is read-only.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with one sentence and the return format, which is front-loaded. However, it may be too terse, missing important context that a more verbose description would provide.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and only one parameter, the description should elaborate on parameter usage and tool behavior. It fails to explain what 'name' expects and lacks context about templates.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0% and the description adds no meaning to the 'name' parameter beyond its name. It does not clarify what the name refers to (e.g., template name) or provide any format hints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool loads a template's files and returns a specific structure. It uses a specific verb and resource, which distinguishes it from other tools that fetch single items like get_doc, but it does not explicitly differentiate from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 like list_templates or get_doc. The description simply states what it does without offering context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scaffold_componentA

Write a framework-correct scaffold for a strategy component file.

    Produces a minimal stub that matches echolon's loader contract —
    class name + method signature + return schema — but contains no
    trading logic. Coding agents refine the stub into real pathways.

    Args:
        kind: One of ``"entry"``, ``"exit"``, ``"risk"``, ``"sizer"``, ``"strategy"``.
        strategy_dir: Absolute path to the directory where the file is written.
        force: If True, overwrite an existing file. If False (default), refuse
            and return ``success=False`` with ``error="file_exists"``.

    Returns:
        {
            "success": bool,
            "output_path": str (path to the scaffolded file, if success),
            "kind": str (echoes the input),
            "error": str | None (one of: "unknown_kind", "file_exists", None),
            "message": str (human-readable summary),
        }
    
ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes
strategy_dirYes
forceNo

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must disclose behavior. It explains file writing, overwrite control via force, stub nature (no trading logic), and return schema. Does not mention permissions but this is acceptable for a file-writing tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is well-organized with clear sections for purpose, args, and returns. Uses concise language without redundancy. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, description provides full return schema. All parameters and behavior (including error cases) are covered. Complete for a file generation tool with the given context signals.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but description fully explains each parameter: kind with allowed values, strategy_dir as absolute path, force overwrite behavior. Also details return schema. Provides meaning beyond raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it writes a scaffold stub for strategy components with class name, method signature, and return schema. It is distinct from sibling tools which are validation and listing utilities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States that coding agents refine the stub into real pathways, indicating its use as a template generator. No explicit when-not-to-use guidance, but context is clear given sibling tools are not generation-focused.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

suggest_similarA

Return up to limit catalog names close to name (difflib + substring).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description reveals the algorithm (difflib + substring) but lacks behavioral details like case sensitivity, matching threshold, behavior when no matches found, or how the ordering works. With no annotations, it carries the full disclosure burden but only partially meets it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is front-loaded with the core purpose and method. No redundant words, and it efficiently communicates the tool's function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (known from context), the description does not need to detail return values. It covers the essential purpose and parameters for a simple suggestion tool, though it could mention edge cases or error handling for completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% schema description coverage, the description explains both parameters: `name` as the search term and `limit` as the maximum number of results. It adds context by stating 'up to' for limit, which the schema does not convey, effectively compensating for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it returns similar catalog names based on string similarity, specifying the verb 'return', the resource 'catalog names', and the method 'difflib + substring'. It distinguishes itself from sibling tools like list_indicators or describe_component_api by its unique suggestion functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 such as list_catalogs or search functions. There is no mention of prerequisites, when not to use it, or how it fits into a workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_component_integrationA

Import each component module via StrategyLoader and check its method arity + strategy_params.DEFAULT_PARAMS top-level shape.

    - STR-002: module fails to import (= guaranteed runtime failure).
    - PRM-002: DEFAULT_PARAMS missing a required top-level key, or a
      value isn't a dict.
    - VAL-005: method's required-positional arity (after ``self``)
      doesn't match the protocol. Arg NAMES are not checked — the
      framework calls positionally, so names are the author's choice.

    Returns ``{"any_errors": bool, "findings": [...]}``.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
strategy_dirYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of transparency. It explains the three error conditions, the focus on import success and structural checks, and notes that argument names are ignored. It also states the return format. However, it omits side effects (likely none) and any authentication or performance implications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with bullet points and clear error code references. It conveys necessary information without extraneous text. However, it could be slightly more concise by combining some lines, but overall it's effective.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (1 parameter, no output schema), the description is relatively complete. It explains the validated aspects, error conditions, and return structure. Missing context includes an example or clarification on the format of 'findings' items, but the provided detail is sufficient for basic usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has only one parameter (strategy_dir) with no description. The tool description implies that strategy_dir is a directory for component modules by mentioning 'Import each component module via StrategyLoader', but does not explicitly define it or specify its format. This adds some context but could be clearer for an AI agent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: importing component modules via StrategyLoader and checking method arity and DEFAULT_PARAMS shape. It lists specific error codes (STR-002, PRM-002, VAL-005), making the intent precise and actionable. This distinguishes it from sibling validators like validate_component_logging.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any guidance on when to use this tool versus alternatives. It lacks explicit context for when to run integration checks or how it differs from other validation tools. No when-not-to-use or prerequisite information is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_component_loggingB

AST-check that each component's required method calls the matching self.log_<component>_output(...) with a BaseModel instance (not a dict, not a wrong schema).

    Also flags ``self.params.get(...)`` anywhere in the file (PRM-004 —
    defensive dict-access antipattern on the params container).

    Returns ``{"any_errors": bool, "findings": [...]}``.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
strategy_dirYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description carries full burden but only mentions it is an AST check and returns findings. It does not disclose error handling, dependencies, or limitations, though the core behavior is adequately described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is relatively concise and front-loaded with the main purpose. However, the triple-quoted string formatting may obscure readability slightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Considering no output schema, no annotations, and 0% schema coverage, the description is the sole source. It explains checks and return format but lacks parameter clarity, making it somewhat incomplete for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has one parameter (strategy_dir) with 0% description coverage, and the tool description does not explain its meaning or usage. The agent has no help understanding what value to provide.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is an AST-check for component logging, specifying it verifies required method calls with BaseModel and flags self.params.get() antipattern. It distinguishes from sibling tools by its specific focus on logging validation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 other similar validation tools (e.g., validate_component_integration). The description does not provide context on prerequisites or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_component_protocol_signaturesA

AST-check that each required component class has the required method with a matching return-type annotation (if annotated at all).

    - STR-003: class is missing the required method.
    - VAL-006: method declares a return annotation but it doesn't match
      the expected BaseModel (EntrySignalOutput / ExitSignalOutput / ...).

    Missing annotations are NOT flagged (policy vs correctness — missing
    annotation is a stylistic choice, Pydantic catches runtime
    mismatches). Missing files are silently skipped (preflight STR-001
    territory).

    Returns ``{"any_errors": bool, "findings": [...]}``.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
strategy_dirYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears full disclosure burden. It explains that missing annotations are not flagged, missing files are skipped, and specifies the return format {"any_errors": bool, "findings": [...]}. It does not mention side effects, but as a read-only validation tool, the description is sufficiently transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured with bullet points and a return definition. It front-loads the main purpose and uses compact language. However, it is somewhat verbose for a single-parameter tool, but every sentence adds value. It is generally concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a validator with one parameter and no output schema, the description covers the behavior and return format well. However, the lack of parameter explanation and absence of prerequisites or error conditions (though it implies handling) leave gaps. It is minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, strategy_dir, lacks any explanation in the description or schema description. Since schema description coverage is 0%, the description should compensate but fails to clarify what this parameter represents, its expected format, or constraints. This is a significant gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool's purpose: an AST-check for required component classes having required methods with matching return-type annotations. It specifies concrete rules (STR-003, VAL-006) and differentiates from siblings like validate_component_integration by focusing on method signatures.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use: to validate method signatures against expected annotations and existence of required methods. It provides context on what is not flagged (missing annotations as stylistic choice, missing files silently skipped), but does not explicitly state when to use an alternative or when not to use. Nonetheless, the guidance is clear for a specialized validator.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_debug_completionA

Validate post-run debug artifacts landed on disk with the right shape.

    Three deterministic checks:
    - STR-001: ``selected_robust_trial.json`` + log file both exist.
    - VAL-003: artifact JSON parses and carries every required top-level key.
    - BT-010: log contains each required marker substring (order irrelevant).

    Args:
        artifact_path: Absolute path to the JSON artifact (typically
            ``<workspace>/backtest/selected_robust_trial.json``).
        log_path: Absolute path to the debug log file.
        required_json_keys: Top-level keys expected on the artifact.
            Defaults to ``["trial_number", "params", "metrics"]``.
        required_log_markers: Substrings expected in the log. Defaults
            to ``["STAGE 4 COMPLETE", "STAGE 5 COMPLETE", "FINAL SUCCESS"]``.

    Returns ``{"any_errors": bool, "findings": [{"code", "message",
    "context"}, ...]}``. Never raises — parse / file-access failures
    surface as findings with the appropriate error code.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
artifact_pathYes
log_pathYes
required_json_keysNo
required_log_markersNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It clearly states the tool never raises exceptions and surfaces failures as findings with error codes, which is transparent about error handling. However, other behavioral aspects (e.g., performance, side effects) are not covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with bullet points and code formatting, front-loading the purpose. It is slightly lengthy due to detailed parameter docs, but each sentence adds value. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description explains the return format. With 4 parameters and 2 required, all are documented. The tool is simple (validation-only), and the description covers behavior, parameters, and returns adequately for an agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description thoroughly explains each parameter with examples, defaults, and expected formats (e.g., artifact_path: absolute path; required_json_keys defaults). This adds significant meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool validates post-run debug artifacts and lists three deterministic checks with codes (STR-001, VAL-003, BT-010), making the purpose highly specific and distinct from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for post-run validation but provides no guidance on when to use this tool versus alternatives (e.g., other validation tools). No exclusions or conditions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_indicator_listA

Validate a flat-dict strategy_indicator_list.json payload against the catalog.

    Args:
        payload_json: JSON string of the flat-dict
            (e.g. ``'{"rsi": {"timeperiod": [10, 20]}}'``).

    Returns a dict ``{"valid": bool, "errors": [{code, field, message, suggestion}]}``.
    Bad JSON surfaces as a structured error, not a raise.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
payload_jsonYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description reveals that invalid JSON results in a structured error instead of an exception, which is a key behavioral trait. However, it does not confirm read-only status or other side effects, and annotations are absent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is relatively concise with a clear structure (Args/Returns), though the docstring format uses some extra lines. Every piece of information is relevant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description adequately specifies the return format and error handling. It could mention catalog dependency or constraints, but is sufficient for a simple validation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description provides a concrete example and explains the expected JSON format for the single parameter payload_json, compensating for the schema's lack of description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool validates a specific payload format (flat-dict strategy_indicator_list.json) against a catalog. It distinguishes from sibling validation tools by specifying the exact resource name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like validate_component_integration or validate_strategy. No prerequisites or exclusion criteria mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_parameter_accessA

AST-check for hardcoded threshold literals (PRM-003) and defensive self.params.get() calls (PRM-004) across the 4 component files.

    Highest FP-risk of the B1 validators — PRM-003 findings include
    ``context["severity"] = "warning"`` so callers can treat them as
    non-blocking while the allowlist is tuned. PRM-004 findings are
    always bugs (framework contract violation).

    Allowlist covers: range() args, index slicing, keyword args, default
    args, None comparisons, small integer constants ``{-1, 0, 1, -1.0, 0.0, 1.0}``,
    and string-literal comparisons (framework-defined regime / signal enums).

    Returns ``{"any_errors": bool, "findings": [...]}``.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
strategy_dirYes

TDQS

A3.7/5.0
Behavior4/5

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 that the tool is an AST check (read-only analysis), returns a dictionary with 'any_errors' and 'findings', and that PRM-003 findings include a severity field ('warning'). It also lists the allowlist, which reduces false positives. The description is transparent about the nature of the tool and its output format, though it does not explicitly confirm no side effects beyond the return value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately concise and well-structured. It opens with a clear statement of purpose, then provides important context about FP risk, interpretation hints, and the allowlist. It is front-loaded and each sentence adds value. Minor redundancy exists (e.g., repeated reference to PRM-003 and PRM-004), but overall it is efficient for its content density.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the single parameter and lack of output schema, the description covers the core logic and return format well. However, it leaves the parameter 'strategy_dir' completely undocumented, and terms like 'B1 validators' and 'component files' are unexplained, relying on domain knowledge. For a complete newcomer, the parameter gap is significant, making the tool less immediately usable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The sole parameter 'strategy_dir' is not mentioned at all in the description. With 0% schema description coverage, the description must compensate by explaining the parameter's meaning and usage, but it fails to do so. The description mentions '4 component files' but does not clarify that strategy_dir points to a directory containing those files. This leaves the parameter poorly understood.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs an AST check for two specific types of parameter access issues: hardcoded threshold literals (PRM-003) and defensive self.params.get() calls (PRM-004). It specifies the scope (4 component files) and distinguishes itself from sibling validators by naming the exact rules it checks. The verb 'validate' with resource 'parameter access' is precise.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: it is the highest FP-risk validator among B1 validators, advises that PRM-003 findings should be treated as non-blocking while tuning the allowlist, and states that PRM-004 findings are always bugs. This helps callers interpret results correctly. However, it does not explicitly state when to use this tool versus alternative validators or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_strategyB

Validate a strategy directory against echolon contracts.

    Args:
        path: Absolute path to the strategy directory.

    Returns a dict with keys: status ("VALID"|"INVALID"), errors (list of dicts).
    
ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavior. It states the return value but does not mention side effects, authorization needs, or that the operation is read-only (validation). This is insufficient for a tool with no annotation support.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, using a typical docstring structure. It front-loads the purpose. However, the Args block could be simplified to a single sentence, making it slightly more efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple validation tool with one parameter and no output schema, the description covers purpose and return type adequately. However, it lacks context on what 'echolon contracts' are and what counts as a validation error, which may be needed given the rich set of sibling validation tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, but the description adds meaning by stating 'Absolute path to the strategy directory'. This compensates well for the schema gap, though it could mention path format (e.g., must exist).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'validate' and the resource 'strategy directory against echolon contracts'. It distinguishes the tool from siblings like 'validate_strategy_full' by implication (basic vs full), but does not explicitly name the difference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus alternatives such as 'validate_strategy_full' or other component validators. The context of when not to use it is missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_strategy_fullA

Run every shipped validator and return merged findings.

    Composes the individual MCP validators (``validate_strategy`` /
    ``validate_component_protocol_signatures`` /
    ``validate_component_integration`` / ``validate_component_logging``
    / ``validate_parameter_access``) so an agent gets a complete
    validation report from a single tool call.

    Args:
        strategy_dir: Absolute path to the strategy directory.

    Returns:
        ``{status, any_errors, total_findings, findings: [{code, ...}],
        invocations: [{validator, count}]}``. ``status`` is ``"VALID"``
        iff no findings were reported by any validator.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
strategy_dirYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries the burden. It discloses that it runs validators and returns merged findings with output format. No side effects or authorizations mentioned, but for a validation tool, this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with Args and Returns, and lists validators in a bullet-like format. It is slightly verbose but every sentence adds value. Efficient for the information conveyed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single parameter and no output schema, the description provides detailed return format and explains the overall behavior. It is sufficient for an agent to invoke correctly, though it omits potential error conditions or performance notes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description provides an Args section explaining the 'strategy_dir' parameter as an absolute path, adding significant meaning beyond the schema's title. With 0% schema coverage, this fully compensates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool runs every shipped validator and returns merged findings, listing the specific validators composed. This distinguishes it from the individual validators listed as siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for a complete validation report in one call, but does not explicitly state when to avoid or provide alternatives. Sibling tools are individual validators, so context is clear but not explicit.

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. Dates show when Glama detected each change.

  1. 23 tool updatesv0.1.2
    • First observeddescribe_component_api
    • First observedgenerate_strategy_params
    • First observedget_doc
    • First observedget_error_doc
    • First observedget_pattern
    • First observedget_skill
    • First observedindicator_info
    • First observedindicator_params
    • First observedlist_indicators
    • First observedlist_patterns
    • First observedlist_skills
    • First observedlist_templates
    • First observedload_template
    • First observedscaffold_component
    • First observedsuggest_similar
    • First observedvalidate_component_integration
    • First observedvalidate_component_logging
    • First observedvalidate_component_protocol_signatures
    • First observedvalidate_debug_completion
    • First observedvalidate_indicator_list
    • First observedvalidate_parameter_access
    • First observedvalidate_strategy
    • First observedvalidate_strategy_full

TDQS

A3.7/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: API introspection, parameter generation, documentation retrieval, catalog listing, scaffolding, and various validation checks. Overlap among validation tools is resolved by specific validation targets (integration, logging, protocol, parameters, etc.).

Naming Consistency4/5

Tools follow a mostly consistent verb_noun pattern (e.g., get_doc, list_indicators, validate_strategy). Minor deviations like 'indicator_info' instead of 'get_indicator_info' and 'suggest_similar' instead of 'get_suggestions' are tolerable.

Tool Count5/5

23 tools cover a comprehensive set of operations for a strategy framework: API description, parameter generation, documentation, catalog browsing, scaffolding, and multiple validation checks. The count is well-scoped for the domain.

Completeness4/5

The tool surface covers key development and validation workflows. Minor gaps exist (e.g., no tool for creating a new strategy directory or running backtests), but the core lifecycle of building and validating components is well-supported.

Maintenance

ActivityActive
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    An extensible framework that exposes quantitative research functions and financial data connectors, such as FRED, via an MCP server. It enables users to perform complex financial modelling, data retrieval, and autonomous research loops with built-in guardrails and pluggable components.
    6
    4
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Full-lifecycle algorithmic trading MCP server. AI strategy generation from plain English, backtesting, live bot deployment to 10+ brokers, portfolio monitoring, and prediction markets. Stocks, options, crypto, futures. 32 tools. Free tier.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Local-first backtesting engine with built-in overfitting detection (PBO, deflated Sharpe, bootstrap CI, walk-forward) and a native MCP server for AI agents to validate trading strategies.
    4
    Apache 2.0
  • A
    license
    A
    quality
    A
    maintenance
    MCP server for the FLOX trading framework. About 30 tools to run backtests, scaffold strategies, validate for lookahead bias, compute indicators, place orders, and query PnL from Claude/Cursor.
    38
    223
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/DolphinQuant/echolon'

If you have feedback or need assistance with the MCP directory API, please join our Discord server