One-stop quant-trading AI agent for any coding assistant — MCP server + CLI. Provides tools for DeepAgent research, strategy management, backtesting, and paper trading.
21 tools with mostly complete schemas and descriptions, but several consistency issues and gaps reduce overall quality. All tools have descriptions (10-200+ chars) and input schemas with type definitions. However, parameter descriptions vary significantly in quality and actionability. Output schemas are not documented. Error handling is present but generic. Tool naming follows verb_noun patterns consistently. Composition is clean, tools are single-responsibility. Major gaps: no output schema documentation, missing per-parameter descriptions in some tools, no error recovery guidance, no idempotency hints for write operations.
Fetch detailed backtest results for a specific backtest ID.
List all backtest runs from DeepAgent research tasks.
Cancel an in-progress or pending DeepAgent research task.
Download a strategy package ZIP file locally.
Ping DeepAgent health endpoint via Hub Gateway. No authentication required.
List messages in a DeepAgent thread.
Fetch metadata for a strategy package by ID.
No output schemas documented for any of the 21 tools. LLMs cannot predict what fields will be returned, forcing trial-and-error usage and context waste when trying to extract specific data for chaining.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
List strategy packages generated from DeepAgent research runs.
Retrieve the full research report after polling indicates done: true.
Poll a DeepAgent research task for progress. Call every 30-60s until done: true.
Start an async research run. Returns a taskId after ~1-2s when RUN_STARTED is received. Follows submit + poll + finalize pattern for long-running research (3-10 min LLM calls).
List DeepAgent analysis skills (~60 entries). Public endpoint.
Get the full status of a DeepAgent research task including messages, progress, and any error.
CRUD operations over DeepAgent threads. Supports list, create, get, and delete actions.
Fork a strategy from the Hub and download it locally.
Fetch detailed information about a strategy from the Hub.
Fetch the strategy leaderboard from the Hub API with various ranking types.
List all locally stored strategies.
Publish a strategy ZIP to the Hub.
Check the status of a strategy publish submission or backtest task.
Validate a local strategy package directory (must contain fep.yaml).
Write operations (fin_deepagent_threads CREATE/DELETE, fin_deepagent_research_submit, fin_deepagent_cancel, fin_deepagent_download_package, strategy_fork, strategy_publish) lack idempotency declarations and confirmation/dry-run mechanisms. LLMs may retry on ambiguous failures, causing duplicate thread creation or duplicate publishes.
Error handling is generic. Tools return { success: false, error: '...' } but do not categorize errors as retryable, user-fixable, or fatal. No recovery guidance. E.g., 'Invalid threadId' should suggest 'Call fin_deepagent_threads with action=list to see available threads.'
Parameter 'limit' and 'offset' in fin_deepagent_backtests, fin_deepagent_packages, strategy_leaderboard lack explicit constraints (min/max). Descriptions do not state what happens if limit exceeds max or offset exceeds available results.
fin_deepagent_threads and strategy_get_info accept both UUID and 'Hub URL' but descriptions do not explain format or provide examples. LLMs may guess incorrectly (e.g., pass raw URL vs extracted UUID).
fin_deepagent_research_submit, fin_deepagent_research_poll, fin_deepagent_research_finalize implement a submit+poll+finalize pattern (which is good for long-running ops), but descriptions do not explain polling intervals, timeout expectations, or what 'done: true' signals. LLMs may not understand the multi-step flow.
strategy_publish_verify requires at least one of submissionId OR backtestTaskId but schema does not enforce this (both are optional and neither marked required). LLMs may call with neither parameter, causing a failure.
fin_deepagent_threads 'create' action description states 'Title for the new thread (optional, create only)' but does not clarify what title is used for (display name, thread identity, logging?). This ambiguity invites misuse.