TradeMemory Protocol
TradeMemory Protocol is a local-first MCP memory layer that lets AI trading agents record, recall, analyze, risk-check, evolve, and audit trading decisions without executing trades.
Record completed trades into multi-layer OWM memory with symbol, direction, prices, P&L, strategy, market context, confidence, timestamps, regime/ATR, and reflections.
Recall past memories ranked by outcome quality, context similarity, recency, confidence, and affect, with optional vector/OWM hybrid search.
Review strategy performance, individual trade reflections, behavioral stats (hold times, disposition, sizing variance, Kelly comparison), and agent state (confidence, drawdown, streaks).
Create prospective trading plans with triggers, actions, priorities, and expiry, then check active plans against current market conditions.
Run pre-trade risk checks: trade legitimacy gate and Decision Quality Score across regime match, position sizing, process adherence, risk state, and historical pattern.
Conduct strategy evolution research: fetch Binance OHLCV data, discover LLM-generated patterns, backtest candidates, evolve strategies across generations, and view session logs.
Validate strategies statistically using Deflated Sharpe Ratio, walk-forward validation, regime analysis, and CPCV from CSV trade logs or daily returns.
Export and verify audit records: Trading Decision Records, SHA-256 hash verification, full chain verification, and daily Merkle roots with optional RFC 3161 timestamping.
Operate safely: local-first, read-and-record only, never executes trades, moves funds, or accesses API keys.
Synchronizes trading data from Binance into the memory protocol to provide AI agents with historical context and outcome-weighted insights for improved trade decision-making.
Enables users to interact with the trading memory protocol through WhatsApp via an OpenClaw agent, allowing for remote trade journaling and performance analysis.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@TradeMemory Protocolanalyze my recent trades to identify patterns and behavioral biases"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Getting Started | Use Cases | API Reference | OWM Framework | Limitations | 中文版
Project status (August 2026): Feature-complete, in maintenance mode — bug and security reports are still reviewed; no new features or hosted service are planned. For paid work, see Trading Record Analysis.
Your trading AI has amnesia. And regulators are starting to notice.
It makes the same mistakes every session. It can't explain why it traded. It forgets everything when the context window ends. Meanwhile, MiFID II is raising the bar for algorithmic decision documentation (Article 17). The EU AI Act demands systematic logging of AI actions (Article 14). Your competitors' agents are learning from every trade.
The AI trading stack is missing a layer. Every MCP server handles execution — placing orders, fetching prices, reading charts. None handle memory.
Your agent can buy 100 shares of AAPL but can't answer: "What happened last time I bought AAPL in this condition?"
TradeMemory is the memory layer. One pip install, and your AI agent remembers every trade, every outcome, every mistake — with a SHA-256 tamper-evident audit trail.
Used in production by traders running pre-flight checklists before every position, and by EA systems logging thousands of decisions daily.
What it does
Before trading: ask your memory — what happened last time in this market condition? How did it end?
After trading: one call records everything — five memory layers update automatically
Safety rails: confidence tracking, drawdown alerts, losing streak detection — the system tells you when to stop
Works with any market (stocks, forex, crypto, futures), any broker, any AI platform. TradeMemory doesn't execute trades or touch your money — it only records and recalls.
Related MCP server: AgentRecall
See the interface
tradememory-dashboard.onrender.com — the dashboard running on an illustrative demo dataset. Nothing to install.
It is an interface preview, not a track record: the trades are synthetic and every figure on it is labelled as such. For what the memory layer actually does in a terminal, pip install tradememory-protocol && tradememory demo --fast replays 30 trades and shows the recall and parameter adjustment it derives from them.
Quick Start
pip install tradememory-protocolAdd to Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"tradememory": {
"command": "uvx",
"args": ["tradememory-protocol"]
}
}
}Then tell Claude: "Record my AAPL long at $195 — earnings beat, institutional buying, high confidence."
# Claude Code
claude mcp add tradememory -- uvx tradememory-protocol
# From source
git clone https://github.com/mnemox-ai/tradememory-protocol.git
cd tradememory-protocol && pip install -e . && python -m tradememory
# Docker
docker compose up -dFull walkthrough: Getting Started (Trader Track + Developer Track)
Who uses TradeMemory
US Equity Trader | Forex EA System | Compliance Team | |
Market | Stocks (AAPL, TSLA, ...) | XAUUSD (Gold) | Multi-asset |
How | Pre-flight checklist before every trade | Automated sync from MT5 | Full decision audit trail |
Key value | Discipline system — memory before every decision | Record why signals were blocked, not just executed | SHA-256 tamper-evident records for regulators |
Details |
How it works
Recall — Before trading, retrieve past trades weighted by outcome quality, context similarity, recency, confidence, and emotional state (OWM Framework)
Record — After trading, one call to
remember_tradewrites to five memory layers: episodic, semantic, procedural, affective, and trade recordsReflect — Daily/weekly/monthly reviews detect behavioral drift, strategy decay, and trading mistakes
Audit — Every decision is SHA-256 hashed at creation. Export anytime for review or regulatory submission
MCP Tools
Category | Tools | Description |
Memory |
| Record and recall trades with outcome-weighted scoring |
State |
| Confidence, drawdown, streaks, behavioral patterns |
Planning |
| Prospective plans with conditional triggers |
Risk |
| 5-factor pre-trade gate (full / reduced / skip) |
Audit |
| SHA-256 tamper detection + bulk export |
Category | Tools |
Core Memory |
|
OWM Cognitive |
|
Risk & Governance |
|
Evolution |
|
Audit |
|
REST API: 35+ endpoints for trade recording, reflections, risk, MT5 sync, OWM, evolution, and audit. Full reference →
Trading Record Analysis
TradeMemory itself is free and self-hosted. What the maintainer offers as a paid service is statistical analysis of your own trading records: export your MT4/MT5 history and get a descriptive-statistics report — where your losses concentrate, how your position sizing changes after losses, forced-liquidation structure, and the actual risk you took per trade — followed by a walkthrough call.
Descriptive statistics of past trades only: no trade signals, no investment advice, no performance promises. Your files are deleted after delivery.
Enterprise & Compliance
Every trading decision your agent makes — including decisions not to trade — is recorded as a Trading Decision Record (TDR). Per-record SHA-256 content hashes are linked into a forward-chained audit ledger; every UTC day is summarised by a Merkle root which itself chains across days. Tampering with any historical record invalidates every subsequent link.
Regulation | Requirement | TradeMemory Coverage |
MiFID II Article 17 | Record every algorithmic trading decision factor | Full decision chain: conditions, filters, indicators, execution |
EU AI Act Article 14 | Human oversight of high-risk AI systems | Explainable reasoning + memory context for every decision |
EU AI Act Article 12 | Automatic, tamper-resistant logs over system lifetime | Linked SHA-256 chain + daily Merkle roots (RFC 3161 TSA in Phase 1.5) |
# Verify a single record hasn't been tampered with
verify_audit_hash(trade_id="MT5-7047640363")
# → {"verified": true, "chain_entry": {"sequence_num": 42, ...}}
# Walk the entire chain (or a slice) end-to-end
verify_audit_chain(from_seq=1, to_seq=None)
# → {"verified": true, "checked_count": 1284, "first_break_at": null}
# Daily Merkle root — single 32-byte anchor over every TDR for that day
get_daily_root(date="2026-05-14")
# → {"verified": true, "root_hash": "a05544...", "record_count": 18}
# Bulk export for regulatory submission
GET /audit/export?strategy=VolBreakout&start=2026-03-01&format=jsonlSee LIMITATIONS.md for the full audit-chain maturity statement, including what's not in v0.5.2 yet (TSA timestamping, external anchoring, zkML proof of inference).
Need a custom deployment for your fund? → dev@mnemox.ai
Security
Never touches API keys. TradeMemory does not execute trades, move funds, or access wallets.
Read and record only. Your agent passes decision context to TradeMemory. It stores it. That's it.
Local-first. The only outbound call is RFC 3161 trusted timestamping of daily audit roots — a 32-byte hash, no trade data (on by default; disable with
TRADEMEMORY_TSA=off). Nothing else leaves your machine.SHA-256 chained audit ledger. Every record is hashed at creation and linked to the previous record. Daily Merkle roots anchor the chain. Verify integrity at the record, slice, or day level. Tampering is detectable at every level; external anchoring (TSA by default) is on the roadmap.
1,400+ tests passing. Full test suite with CI.
Research Status
TradeMemory's OWM framework is grounded in cognitive science (Tulving 1972) and reinforcement learning (Schaul et al. 2015). Current status:
OWM five-factor scoring: implemented, tested (1,400+ tests)
Statistical validation: DSR, MBL implemented (Bailey-de Prado 2014)
Audit trail: SHA-256 tamper-evident TDR
Evolution engine: research phase (strategy generation works, statistical gate pass rate under optimization)
Hybrid recall: OWM-only mode active, vector fusion available when embeddings configured
Empirical validation: ongoing (n=40 trades, target n>=100 for statistical significance)
Documentation
Doc | Description |
Install → first trade → pre-flight checklist | |
3 real-world production scenarios | |
All REST endpoints | |
Outcome-Weighted Memory theory | |
System design & layer separation | |
Detailed walkthrough | |
MetaTrader 5 integration | |
Evolution experiments & data | |
11 trading AI failure modes | |
Traditional Chinese |
Contributing
See Contributing Guide · Security Policy
MIT — see LICENSE. For educational/research purposes only. Not financial advice.
Available Tools
20 toolscheck_active_plansCheck Active PlansAIdempotent
Check active trading plans against current market context.
Queries all active prospective plans, expires any past their expiry date, and matches remaining plans against the provided context.
| Name | Required | Description | Default |
|---|---|---|---|
| context_atr_d1 | No | Current ATR(14) on D1 in dollars | |
| context_regime | No | Current market regime (trending_up/trending_down/ranging/volatile) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and the description usefully explains why it is not a pure read: it expires plans past their expiry date, a side effect the annotations alone do not spell out. It also clarifies the scope of the write (only plans past expiry) and that matching is done against supplied context, though it does not state what happens to plans whose context fields are null.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, and the operational steps are front-loaded immediately after the one-line purpose statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the mutation semantics are covered. The remaining gap is that both parameters are optional yet the description never says how the tool behaves when context is omitted, which matters for a matching operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both context parameters (context_atr_d1, context_regime) are documented in the schema with units and an enum-like value list. The description only refers generically to 'the provided context', adding no format or defaulting meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Check active trading plans') and then breaks the operation into its three concrete steps: query active prospective plans, expire stale ones, and match against context. It is clearly distinguishable from the read-only siblings like get_strategy_performance, though it never names an alternative tool directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the described lifecycle (query, expire, match), which suggests this is a periodic maintenance/validation call, but there is no explicit statement of when to invoke it versus create_trading_plan or validate_strategy, and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_trade_legitimacyCheck Trade LegitimacyAIdempotent
Check if the agent has sufficient data and confidence to trade.
Call this before making any trade decision. Evaluates sample size, memory quality, regime experience, streak state, and drawdown to determine whether the agent has earned the right to trade at full size.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | Trading instrument (default "XAUUSD"). | XAUUSD |
| strategy_name | Yes | Strategy to evaluate (e.g. "VolBreakout"). | |
| current_atr_d1 | No | Current ATR(14) on D1 in dollars (informational). | |
| current_regime | No | Current market regime (trending_up/trending_down/ranging/volatile). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and idempotentHint=true, which is slightly unusual for what reads as an evaluative check; the description explains it's a gating decision ('earned the right to trade at full size') rather than a mutation, adding useful behavioral context. It stops short of describing the return semantics or thresholds, but output schema exists to cover that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core purpose and followed by the timing instruction. Efficient and easy to scan, though the second sentence packs several evaluation factors into a list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists and full schema coverage, the description needn't detail return values. It adequately conveys purpose, timing, and evaluated dimensions for a decision-gating tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters thoroughly, giving a baseline of 3. The description adds no extra parameter-level meaning beyond indicating what is evaluated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific purpose: checking whether the agent has sufficient data and confidence to trade, and it lists the evaluated factors (sample size, memory quality, regime experience, streak state, drawdown). It's distinguishable from siblings like validate_strategy or get_agent_state, though the description does not explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear timing cue: 'Call this before making any trade decision.' This tells the agent when to use it, but it doesn't name alternatives or when-not-to-use cases (e.g., versus validate_strategy or compute_dqs).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compute_dqsCompute DqsAIdempotent
Compute Decision Quality Score before executing a trade.
Evaluates the quality of the decision process (not outcome) across 5 factors: regime match, position sizing vs Kelly, process adherence (OWM similarity), risk state, and historical pattern.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Trading instrument (e.g. "XAUUSD"). | |
| direction | Yes | Intended direction ("long" or "short"). | |
| strategy_name | Yes | Strategy being considered (e.g. "VolBreakout"). | |
| context_atr_d1 | No | ATR(14) on D1 in dollars. | |
| context_regime | No | Market regime (trending_up/trending_down/ranging/volatile). | |
| market_context | No | Description of current market conditions. | |
| proposed_lot_size | No | Planned position size in lots (default 0.1). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, destructiveHint=false and idempotentHint=true, so the safety profile is partly covered. The description adds the evaluation basis (process vs outcome, five named factors), which is genuinely useful. But it never explains why a 'compute' operation is not read-only — whether it persists a score, writes state, or has side effects — so a real behavioral gap remains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the action and the timing constraint, followed by the factor list. Nothing is padding, though the factor enumeration could have been left to explain further downstream detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained here. The description supplies the scoring model at a level suitable for deciding to call it. It is slightly incomplete on side effects and on how the five factors combine, but covers the essentials for a scoring tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 and the schema already documents all seven inputs. The description does indirectly map factors to inputs (context_regime to regime match, proposed_lot_size to Kelly sizing), which adds orientation, but provides no syntax, format, or fallback behavior beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Compute Decision Quality Score') and scopes it to timing ('before executing a trade'), then enumerates the five scoring factors. That is far more concrete than a restated title. It stops short of differentiating itself from close siblings like check_trade_legitimacy or validate_strategy, which an agent would plausibly confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is a clear timing cue ('before executing a trade'), which implies the intended usage point. However, no alternative or exclusion is named despite several overlapping siblings (check_trade_legitimacy, validate_strategy, create_trading_plan), so the agent must infer which pre-trade check applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_trading_planCreate Trading PlanA
Create a prospective trading plan that activates when conditions are met.
Stores a rule-based plan in prospective memory. The plan stays active until triggered, expired, or manually cancelled.
| Name | Required | Description | Default |
|---|---|---|---|
| priority | No | Priority 0-1, higher = checked first (default 0.5) | |
| reasoning | Yes | Why this plan was created | |
| expiry_days | No | Days until plan expires (default 30) | |
| trigger_type | Yes | Type of trigger (e.g. "market_condition", "drawdown", "time_based") | |
| planned_action | Yes | JSON string describing what to do (e.g. '{"type": "skip_trade"}') | |
| trigger_condition | Yes | JSON string describing when to trigger (e.g. '{"regime": "ranging"}') |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish this is a non-read-only, non-destructive, non-idempotent write, so the bar is lower; the description adds genuinely useful state behavior — the plan persists until triggered, expired, or cancelled. It stops short of noting authorization needs, what happens on duplicate plans (relevant given idempotentHint=false), or any rate/size limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and followed by lifecycle context; nothing is padded. Minor overlap between 'prospective trading plan' and 'prospective memory' costs it the top score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the schema fully documents the six parameters. The lifecycle sentence completes the picture; only the relationship to 'check_active_plans' and the consequences of a non-idempotent create are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, every parameter including priority, expiry_days, trigger_type, planned_action, trigger_condition, and reasoning is already documented in the schema. The description adds no syntax, format, or example detail beyond it, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Create a prospective trading plan') and clarifies the defining behavior — activation on met conditions. It doesn't explicitly contrast with the related sibling 'check_active_plans', which is the main thing an agent would confuse this with when looking for existing plans.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the plan's lifecycle but never says when an agent should create a plan rather than, say, record a memory ('remember_trade') or inspect existing plans ('check_active_plans'). No alternatives or prerequisites are named, so the routing decision is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evolution_discover_patternsEvolution Discover PatternsA
Discover trading patterns from market data using LLM analysis.
Uses Claude to analyze OHLCV data and generate candidate trading patterns with entry/exit conditions. Each pattern can be backtested afterward.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Days of history to analyze (default 90) | |
| count | No | Number of patterns to generate (default 5) | |
| symbol | Yes | Trading pair (e.g. "BTCUSDT") | |
| timeframe | No | Bar timeframe — "5m", "15m", "1h", "4h", "1d" | 1h |
| temperature | No | LLM creativity 0-1 (default 0.7, higher = more diverse) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare a non-read-only, non-idempotent, closed-world operation, and the description usefully adds that generation is LLM-driven with an associated temperature concept. However, it does not disclose what side effects occur (are patterns persisted?), that repeat calls yield different results, or any latency/cost implications of the LLM call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core purpose, then method, then follow-on step. Minor redundancy between 'using LLM analysis' and 'Uses Claude,' but no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described, and the schema fully covers parameters. The description conveys purpose, method, and the downstream backtest step, leaving only small gaps around persistence and non-determinism.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (symbol, days, count, timeframe, temperature) are already documented with defaults and examples. The description mentions OHLCV and entry/exit conditions but adds no syntax or constraint detail beyond the schema, so the baseline applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Discover trading patterns') plus the method ('LLM analysis', 'Uses Claude'). It implicitly separates itself from siblings by noting patterns 'can be backtested afterward' (vs. evolution_run_backtest) and that it consumes OHLCV data (vs. evolution_fetch_market_data). The boundary against evolution_evolve_strategy is not spelled out, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description sketches the workflow ('generate candidate patterns... backtested afterward') but never states when to choose this tool over evolution_evolve_strategy or validate_strategy, and gives no prerequisites or exclusions. Usage is implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evolution_evolve_strategyEvolution Evolve StrategyA
Run full evolution loop — generate, backtest, select, eliminate.
Multi-generation strategy evolution: generates candidate patterns via LLM, backtests on in-sample data, validates survivors on out-of-sample data, eliminates weak hypotheses. Returns graduated strategies and graveyard.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Days of history to use (default 90) | |
| symbol | Yes | Trading pair (e.g. "BTCUSDT") | |
| timeframe | No | Bar timeframe — "5m", "15m", "1h", "4h", "1d" | 1h |
| generations | No | Number of evolution generations (default 3) | |
| population_size | No | Hypotheses per generation (default 10) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the write/non-idempotent/non-destructive profile, and the description adds real behavioral substance: LLM-driven candidate generation, in-sample backtesting, out-of-sample validation of survivors, and elimination of weak hypotheses, plus what the result contains (graduated strategies and graveyard). It does not disclose that results are persisted (consistent with readOnlyHint=false), nor runtime/cost expectations for an LLM-plus-backtest loop.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The pipeline summary is front-loaded in the first line and the second sentence elaborates with distinct detail rather than restating. There is mild redundancy between 'generate, backtest, select, eliminate' and the subsequent sentence, but overall it is tight and worth its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no elaboration, and the description still characterizes the return as graduated strategies plus a graveyard. The multi-stage process an agent must anticipate for a five-parameter orchestration tool is adequately conveyed, with only cost/latency and side effects left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so symbol, days, timeframe, generations, and population_size are already fully documented in the schema with defaults and enum-like values. The description adds no parameter-level meaning beyond that, leaving this at the baseline for a well-covered schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Run full evolution loop') and enumerates the four internal stages (generate, backtest, select, eliminate), which distinguishes it from nitty-gritty siblings like evolution_run_backtest or evolution_discover_patterns. It stops short of naming those siblings explicitly, so the differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Run full evolution loop' implies this is the end-to-end orchestrator rather than a single step, which is useful context against the granular evolution_* siblings. However, it never states when to prefer this tool over chaining evolution_discover_patterns + evolution_run_backtest, nor any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evolution_fetch_market_dataEvolution Fetch Market DataAIdempotent
Fetch OHLCV market data from Binance for evolution analysis.
Downloads historical price bars for backtesting and pattern discovery. Use this before discover_patterns or run_backtest to get data.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days of history to fetch (default 90) | |
| symbol | Yes | Trading pair (e.g. "BTCUSDT", "ETHUSDT") | |
| timeframe | No | Bar timeframe — "5m", "15m", "1h", "4h", "1d" | 1h |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false but idempotentHint=true and destructiveHint=false, so the safety profile is already largely covered by structured data. The description adds that data comes from Binance (an external/open-world source) and that it supports backtesting and pattern discovery, which complements the openWorldHint. No contradiction, but the description doesn't resolve the apparent readOnly=false vs. non-destructive nature on its own.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and source. Slightly split between two sentences that could merge, but no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values don't need explanation. Description covers purpose, external source, and pipeline ordering. Could be complete except that it doesn't clarify the readOnly=false annotation implication (why a fetch isn't read-only), a minor gap given rich schema and output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so symbol, timeframe, and days are all documented in the schema with examples and defaults. The description adds no parameter-specific syntax or format information beyond what the schema already carries. Baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Fetch), resource (OHLCV market data), and source (Binance), plus the purpose (evolution analysis). Distinguished from siblings discover_patterns and run_backtest by explicitly noting this is the data-acquisition predecessor.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use this 'before discover_patterns or run_backtest to get data', giving clear ordering context. No exclusion conditions, but the sequencing guidance is unambiguous for the pipeline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evolution_get_logEvolution Get LogARead-onlyIdempotent
Get the log of past evolution runs from this session.
Returns a list of all evolution runs with their results, including graduated strategies, graveyard, token usage, and backtest counts. Data is in-memory (resets on server restart).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, and non-destructive traits. The description adds meaningful context beyond annotations: the data is in-memory and resets on server restart, which is critical operational knowledge. It also enumerates what the log contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: purpose, return contents, and the ephemeral-data caveat. Front-loaded and free of filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return value structure need not be detailed. The description covers purpose, session scope, contents summary, and the in-memory reset caveat – everything an agent needs to call this no-parameter tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so baseline is 4. The description does not need to document parameters, and it correctly focuses on return contents instead.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (log of past evolution runs) with clear scope (from this session). Easily distinguished from siblings like evolution_run_backtest or evolution_evolve_strategy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage context by mentioning the session scope, but does not explicitly state when to use this versus alternatives like get_strategy_performance or export_audit_trail. Usage is inferable but not guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evolution_run_backtestEvolution Run BacktestAIdempotent
Backtest a candidate pattern against historical OHLCV data.
Takes a pattern dict (from discover_patterns) and runs a vectorized backtest. Returns fitness metrics: Sharpe ratio, win rate, trade count, max drawdown, total PnL.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Days of history to backtest against (default 90) | |
| symbol | No | Trading pair (e.g. "BTCUSDT") | BTCUSDT |
| timeframe | No | Bar timeframe — "5m", "15m", "1h", "4h", "1d" | 1h |
| pattern_dict | Yes | CandidatePattern as dict (from discover_patterns output) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false), so the description adds 'vectorized' as a mild performance hint. However, it does not explain why a seemingly pure computation is flagged readOnlyHint=false (e.g., writes a log or caches results), leaving that inconsistency unaddressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight paragraphs, front-loaded with the core action, no filler. The trailing metrics list is partly redundant given an output schema exists, costing a small amount of value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the return-value list is redundant, and full schema coverage handles parameters. The remaining gap is behavioral: no guidance on when to choose this over sibling analysis tools and no explanation of the non-read-only side effects implied by annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented in the schema, including pattern_dict coming from discover_patterns. The description's 'pattern dict (from discover_patterns)' merely restates the schema, adding no new syntax or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (backtest) and resource (a candidate pattern against historical OHLCV data), and identifies the upstream producer of the input ('from discover_patterns'). An agent can immediately distinguish this from siblings like evolution_evolve_strategy or validate_strategy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies a workflow by naming discover_patterns as the source of pattern_dict, but never states when to backtest versus validate_strategy or evolve_strategy, nor any prerequisites or exclusions. Usage is implied rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_audit_trailExport Audit TrailARead-onlyIdempotent
Export Trading Decision Records for audit and compliance review.
Provides a complete, tamper-evident record of trading decisions including the memory context (similar trades, beliefs) that informed each decision.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | End date (ISO format, exclusive). E.g., "2026-04-01". | |
| limit | No | Maximum records to return (default 50). | |
| start | No | Start date (ISO format, inclusive). E.g., "2026-03-01". | |
| strategy | No | Filter by strategy name (e.g., "VolBreakout"). | |
| trade_id | No | Get a single TDR by trade ID (e.g., "MT5-7047640363"). If provided, other filters are ignored. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds some value by characterizing the output as a 'complete, tamper-evident record' and naming what it contains (memory context, similar trades, beliefs). It does not, however, describe pagination/limit behavior or export format beyond what the schema provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the purpose before the content detail. No filler or repetition; the second sentence earns its place by describing what the record includes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and annotations cover the safety profile. The description supplies purpose and record content, so it is largely complete, though it omits routing guidance to the related audit-verification tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters (start, end, limit, strategy, trade_id) are fully documented in the schema, including the notable 'trade_id overrides other filters' rule. The description adds no additional parameter meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Export) and resource (Trading Decision Records), and clarifies the content includes memory context. Clear enough to distinguish from generic tools, but does not explicitly differentiate from the closely related verify_audit_hash / verify_audit_chain / get_daily_root siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'for audit and compliance review' implies the usage context, giving an agent a sense of when this is appropriate. However, there is no explicit when-to-use vs. when-not, and no routing to the verification siblings (verify_audit_hash, verify_audit_chain) that an agent might reasonably confuse this with.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agent_stateGet Agent StateARead-onlyIdempotent
Get the current agent affective state (confidence, risk, drawdown).
Returns confidence level, risk appetite, drawdown percentage, win/loss streaks, equity tracking, and a recommended action based on current drawdown severity.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds the substantive behavioral detail that a 'recommended action based on current drawdown severity' is derived server-side, but says nothing about freshness, caching, or when state is recomputed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, the purpose front-loaded and the returned fields grouped after it. Nothing is padded or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no inputs, an output schema present, and annotations carrying the safety profile, the description only needs to convey purpose and rough content — which it does. The one omission is how this read-only snapshot relates to the behavioral-analysis and performance siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies. The parenthetical field list adds mild color but no parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the current agent affective state') and enumerates the state dimensions returned (confidence, risk, drawdown). An agent understands the purpose immediately, but the description never distinguishes this from the conceptually similar sibling get_behavioral_analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to call this versus alternatives such as get_behavioral_analysis, get_strategy_performance, or check_active_plans, nor any prerequisites. Usage is only implied by the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_behavioral_analysisGet Behavioral AnalysisBRead-onlyIdempotent
Get behavioral analysis from procedural memory.
Returns aggregate trading behavior stats: hold times, disposition ratio, lot sizing variance, and Kelly criterion comparison.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | Filter by symbol. Returns all if omitted. | |
| strategy_name | No | Filter by strategy name. Returns all if omitted. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is fully covered. The description adds the useful facts that data comes from procedural memory and is pre-aggregated rather than raw trades, but says nothing about computation timing, latency, or whether results are recomputed on call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core action front-loaded and the returned metrics listed compactly. Slightly redundant with the title, and the return-value enumeration duplicates what an output schema presumably already carries.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the return enumeration is more than strictly necessary, and annotations handle safety. The remaining gap is routing: with many sibling read/analysis tools, the description never says when this is the right call versus get_strategy_performance or get_trade_reflection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both optional filter parameters (symbol, strategy_name) are documented in the schema, including the 'returns all if omitted' semantics. The description adds no parameter detail beyond the schema, so the baseline of 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('get behavioral analysis from procedural memory') and enumerates the aggregate outputs (hold times, disposition ratio, lot sizing variance, Kelly criterion). It is distinguishable from generic siblings, but it never explicitly contrasts itself with close alternatives such as get_strategy_performance or get_trade_reflection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description contains no when-to-use guidance, no prerequisites, and no named alternatives. An agent must infer that this tool is for post-hoc behavioral diagnostics rather than performance review, which is exactly the gap that sibling tools get_strategy_performance and get_trade_reflection occupy.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_daily_rootGet Daily RootAIdempotent
Get (or rebuild) the daily Merkle root for a UTC date.
The Merkle root summarises every audit_chain entry whose chained_at
falls inside the UTC day. Verifying this single 32-byte root proves
the integrity of every TDR for that day without re-walking each one.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date in YYYY-MM-DD format (or full ISO datetime). | |
| rebuild | No | If True, recompute and overwrite the stored root. | |
| request_tsa | No | Whether to submit the rebuilt root to the configured RFC 3161 TSA (default freetsa.org) and store the returned TimeStampToken. None (default) follows the TRADEMEMORY_TSA env setting — ON unless set to "off". TSA failures are logged but do not abort the rebuild. | |
| include_token | No | If True, include a base64-encoded `tsa_token` in the response (default False — the token can be large). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, so the agent knows this can write while being repeatable. The description adds useful conceptual context about what the root covers and why it is trustworthy, but does not add operational context (rebuild overwriting stored data, TSA submission side effects) beyond what the schema and annotations already say.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then a compact two-sentence rationale that earns its place by explaining the value proposition of the tool. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present the description need not explain return values, and annotations cover the safety profile, so the remaining burden is light. The description covers purpose and rationale well but leaves the get-vs-rebuild decision and its side effects under-described for a tool with two distinct operational modes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (date, rebuild, request_tsa, include_token) are already fully documented in the schema. The description adds no parameter-level semantics beyond naming 'rebuild' in passing, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get/rebuild) and resource (the daily Merkle root for a UTC date) and explains what the root summarises. It implicitly contrasts with chain-walking verification siblings, but never names verify_audit_chain or verify_audit_hash, so the differentiation is inferential rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys the conceptual use case (verifying a whole day's integrity from one 32-byte root) but gives no explicit when-to-use guidance and never names the alternative verification tools or states when a full chain walk is preferable. The 'or rebuild' branch is only hinted at, with conditions left to the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_strategy_performanceGet Strategy PerformanceARead-onlyIdempotent
Get aggregate performance stats per strategy.
Use this to evaluate which strategies are working and which need adjustment.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | Filter by symbol. Returns all symbols if omitted. | |
| strategy_name | No | Filter by strategy name. Returns all strategies if omitted. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety and repeatability profile is fully covered. The description adds only that results are aggregated per strategy, which is modest added value over the structured fields; it says nothing about caching, freshness, or scope of the aggregation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the core purpose front-loaded before the evaluative use case. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value detail is unnecessary, and the two optional filters are covered by the schema. The remaining gap is the absence of any indication of metric coverage (e.g., which stats are aggregated) or comparison semantics, but the definition is adequate for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both filters (symbol, strategy_name) are already fully documented in the schema, including their default-all behavior. The description adds no syntax or semantics beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Get aggregate performance stats per strategy.' An agent immediately knows this returns rolled-up per-strategy metrics. It does not, however, distinguish itself from sibling strategy tools like validate_strategy or evolution_run_backtest, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use this to evaluate which strategies are working and which need adjustment' implies the use case but gives no when-not guidance, no prerequisites, and does not name an alternative tool for related needs. Usage is inferable rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trade_reflectionGet Trade ReflectionARead-onlyIdempotent
Get the full context and reflection for a specific trade.
Use this to deep-dive into a particular trade's reasoning and lessons.
| Name | Required | Description | Default |
|---|---|---|---|
| trade_id | Yes | The trade ID to look up |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the agent knows this is a safe, repeatable local read. The description adds only that the content covers 'reasoning and lessons,' a small increment beyond the structured hints and output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler, with the core action front-loaded in the first sentence. Marginally wasteful in that the second sentence largely restates the first's intent rather than adding new information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, the single required parameter is fully covered, and annotations carry the safety profile. The definition is sufficient to invoke the tool, though it stops short of routing guidance among overlapping trade/memory siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single trade_id parameter is already documented in the schema as 'The trade ID to look up.' The description adds no syntax, format, or lookup semantics beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Get the full context and reflection for a specific trade'), so the agent knows exactly what is retrieved. However, it does not distinguish this tool from memory/analysis siblings like recall_memories or get_behavioral_analysis, which could plausibly surface trade reasoning.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use this to deep-dive into a particular trade's reasoning and lessons' gives an implied context for use but names no alternatives, exclusions, or prerequisites. With several overlapping trade/memory tools in the sibling list, explicit routing guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recall_memoriesRecall MemoriesBIdempotent
Recall memories using OWM outcome-weighted scoring.
Queries episodic and semantic memories, scores them by outcome quality, context similarity, recency, confidence, and affective modulation. Returns ranked memories with score breakdown.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 10) | |
| symbol | Yes | Trading instrument (e.g. "XAUUSD") | |
| use_hybrid | No | If True (default), enable vector + OWM hybrid scoring when an embedding backend is available. Falls back to pure OWM silently when sentence-transformers is not installed. | |
| hybrid_alpha | No | Vector vs OWM blend weight [0..1] when hybrid is active. 0.0 = pure OWM, 1.0 = pure vector. Default 0.3 (OWM-dominant). | |
| memory_types | No | Types to query (default: ["episodic", "semantic"]) | |
| strategy_name | No | Optional strategy filter | |
| context_atr_d1 | No | Current ATR(14) on D1 in dollars | |
| context_regime | No | Current market regime (trending_up/trending_down/ranging/volatile) | |
| market_context | Yes | Current market conditions to match against |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotent=true, destructiveHint=false, and — somewhat surprisingly for a query tool — readOnlyHint=false. The description adds useful behavioral context by naming the scoring dimensions and stating that ranked results with score breakdown are returned. It does not address the readOnlyHint=false tension (e.g. whether recall mutates memory state/decay), so a moderate score is warranted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short, front-loaded sentences with no filler; the ranking factors and return shape are conveyed efficiently. It could be slightly more compact, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't explain return values, and it still summarizes what is returned (ranked memories with score breakdown). Together with full parameter coverage it is largely complete, missing only when-to-use routing against siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all 9 parameters are documented in the schema, including hybrid_alpha, context_regime, and market_context. The description adds no parameter-level detail (e.g. the effect of limit or memory_types), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (recall) and resource (episodic and semantic memories) and explains the OWM outcome-weighted scoring that distinguishes it from siblings like remember_trade. It's clear what the tool does, though it doesn't explicitly name the alternative retrieval/write tools it differs from.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is given, nor any mention of prerequisites or the sibling tools (e.g. remember_trade) that would be chosen instead. Usage is only implied by the word 'recall'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remember_tradeRemember TradeA
Store a trade into OWM multi-layer memory with automatic updates.
Writes to episodic memory and automatically updates semantic (Bayesian), procedural (running averages + hold time + Kelly), and affective (EWMA confidence/streaks). Also writes to trade_records for backward compatibility.
| Name | Required | Description | Default |
|---|---|---|---|
| pnl | Yes | Profit/loss in account currency | |
| pnl_r | No | P&L as R-multiple (risk units). Improves OWM scoring quality. | |
| symbol | Yes | Trading instrument (e.g. "XAUUSD") | |
| trade_id | No | Optional custom ID. Auto-generated if omitted. | |
| direction | Yes | "long" or "short" | |
| timestamp | No | ISO format timestamp. Defaults to now (UTC). | |
| confidence | No | Agent confidence level 0-1 (default 0.5) | |
| exit_price | Yes | Exit price of the trade | |
| reflection | No | Lessons learned from this trade | |
| entry_price | Yes | Entry price of the trade | |
| strategy_name | Yes | Strategy used (e.g. "VolBreakout") | |
| context_atr_d1 | No | ATR(14) on D1 in dollars | |
| context_regime | No | Market regime (trending_up/trending_down/ranging/volatile) | |
| exit_timestamp | No | ISO format exit time. Used to compute hold duration. | |
| market_context | Yes | Description of market conditions | |
| entry_timestamp | No | ISO format entry time. Used to compute hold duration. | |
| max_adverse_excursion | No | Maximum adverse excursion during the trade |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare non-readonly, non-idempotent, non-destructive, and the description adds substantial detail: which memory layers get written, that semantic updates use Bayesian methods, procedural uses running averages/Kelly, and affective uses EWMA. It also discloses backward-compat write to trade_records. This is real behavioral context beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with the main action and then detailing the memory layers. No wasted words; each clause adds information about write targets.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (17 params, multi-layer memory writes) and the presence of an output schema, the description covers the essential write behavior. It omits return-value details but those are in the output schema, which is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 17 parameters are documented in the schema. The description doesn't mention any specific parameter semantics (e.g., how confidence or pnl_r feed into scoring), so it's baseline 3 for a fully-covered schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (store) and resource (trade) and clarifies the target system (OWM multi-layer memory). It doesn't explicitly differentiate from sibling recall_memories or get_trade_reflection, but the write-vs-read distinction is implied by 'Store'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to call this versus alternatives like recall_memories or how often trades should be recorded. The description explains mechanics of what gets updated but never says when an agent should invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_strategyValidate StrategyARead-onlyIdempotent
Validate a trading strategy using statistical tests (DSR + Walk-Forward + Regime + CPCV).
For educational and research purposes only. Not financial advice.
Upload a trade log CSV (QuantConnect format) or daily returns CSV. The tool runs four statistical tests:
Deflated Sharpe Ratio (DSR) — detects overfitting from multiple testing
Walk-Forward Validation — checks out-of-sample consistency
Regime Analysis — performance across bull/bear/crisis markets
CPCV — cross-validated Sharpe stability across time periods
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | CSV format — "quantconnect" for trade logs (columns: Entry Time, Exit Time, Direction, Entry Price, Exit Price, Quantity, P&L, Fees, IsWin) or "returns" for daily returns (columns: date,return or single column of returns). | quantconnect |
| file_path | Yes | Absolute path to the CSV file on your local machine. | |
| strategy_name | No | Name of the strategy (for the report). | |
| num_strategies | No | How many strategies you tested before picking this one. Higher M = stricter DSR threshold (corrects for selection bias). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds meaningful behavioral context: it explains what each statistical test detects (overfitting, out-of-sample consistency, regime behavior, cross-validated stability), which is beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, which is good, but the four tests are named in the opening sentence and then re-listed in an overlapping numbered block, creating redundancy. The educational disclaimer is fine but the test list doubles up space without adding information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained. The description adequately covers inputs and the analytical steps for a validation tool. It is slightly thin on prerequisites (e.g., minimum data requirements) but otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents format, file_path, strategy_name, and num_strategies with their meanings and defaults. The description only echoes the CSV format options already in the schema, adding no new parameter detail; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (validate) and resource (trading strategy) and enumerates the exact methods used (DSR, Walk-Forward, Regime, CPCV). This clearly distinguishes it from siblings like evolution_run_backtest and compute_dqs, which do different things.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It describes the input needed (trade log CSV or daily returns CSV) but gives no explicit guidance on when to use this versus evolution_run_backtest or the other analysis siblings, and no when-not conditions. Usage is implied by the description rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_audit_chainVerify Audit ChainARead-onlyIdempotent
Verify the integrity of the audit chain.
Walks the chain from from_seq (default: 1, the genesis record) to
to_seq (default: latest), checking that every record's prev_hash
matches the previous record's data_hash, and that each data_hash
equals SHA256(prev_hash || content_hash).
Returns a dict with verified, checked_count, first_break_at,
reason. A first_break_at of None with verified=True means the
chain is intact across the verified range.
| Name | Required | Description | Default |
|---|---|---|---|
| to_seq | No | Ending sequence_num (inclusive). None = through latest. | |
| from_seq | No | Starting sequence_num (inclusive). None = from beginning. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds real behavioral value beyond that: the exact invariants checked, the default range (genesis to latest), and what a successful vs. broken result looks like. It stops short of noting cost/runtime on large chains or behavior when from_seq > to_seq.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose in one line, then explains the mechanism, defaults, and return contract in tight sentences. Slightly long, but every sentence carries information an agent needs to interpret the result; nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the return-value sentence is more than strictly required, but it usefully explains that verified=True with first_break_at=None means the range is intact. Combined with annotations and full schema coverage, the definition gives an agent everything needed to call and interpret the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds meaning: from_seq is the genesis record by default and to_seq runs through latest, and both bounds are framed as the inclusive verified range. Minor wording drift exists between the description's 'default: 1' and the schema's default of null, though the semantics ('from beginning') match.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Verify the integrity of the audit chain') and immediately clarifies the scope by describing the walk from from_seq to to_seq. It implicitly distinguishes itself from the sibling verify_audit_hash by describing whole-chain linkage checks rather than single-hash verification, though it never names the sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the mechanics (walking the chain, checking prev_hash/data_hash linkage) and the defaults make the tool's natural invocation obvious. However, it never states when to reach for this over verify_audit_hash, get_daily_root, or export_audit_trail, nor any preconditions for running a verification.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_audit_hashVerify Audit HashARead-onlyIdempotent
Verify the integrity of a Trading Decision Record.
Recomputes the SHA256 data_hash from stored inputs and compares with the hash computed at decision time. A mismatch indicates tampering.
| Name | Required | Description | Default |
|---|---|---|---|
| trade_id | Yes | Trade ID to verify (e.g., "MT5-7047640363"). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent and non-destructive behavior, so the safety profile is covered. The description adds genuine interpretive value beyond that: it discloses the internal mechanism (recompute from stored inputs) and what a mismatch signifies (tampering), which tells the agent how to read the result rather than just that it is a safe read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the purpose, followed by mechanism and the meaning of the outcome. No filler, no repetition of the title, every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be spelled out, and the mechanism plus mismatch semantics make the tool's behavior understandable for calling it. The only notable gap is the absence of any routing guidance against verify_audit_chain, which matters given the overlapping naming.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single parameter and 100% schema description coverage, the schema already documents trade_id fully (including the example format). The description adds no additional constraint, format, or scoping detail about the identifier, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource (verify a Trading Decision Record) and even explains the mechanism (recompute SHA256 data_hash and compare against the decision-time hash). It is clear and self-contained, but it never names or distinguishes itself from the close sibling verify_audit_chain, which an agent could easily confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: use this to check one record for tampering. There is no explicit statement of when to reach for this versus verify_audit_chain (chain-level verification) or export_audit_trail, leaving the agent to infer the selection rule from sibling names alone.
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.
21 tool updates
v0.5.4- Changed
check_active_plans2 fields changed- added
Input schema / properties / context_atr_d1 / descriptionAdded value: +"Current ATR(14) on D1 in dollars" - added
Input schema / properties / context_regime / descriptionAdded value: +"Current market regime (trending_up/trending_down/ranging/volatile)"
- Added
check_trade_legitimacy - Added
compute_dqs - Changed
create_trading_plan6 fields changed- added
Input schema / properties / expiry_days / descriptionAdded value: +"Days until plan expires (default 30)" - added
Input schema / properties / planned_action / descriptionAdded value: +"JSON string describing what to do (e.g. '{\"type\": \"skip_trade\"}')" - added
Input schema / properties / priority / descriptionAdded value: +"Priority 0-1, higher = checked first (default 0.5)" - added
Input schema / properties / reasoning / descriptionAdded value: +"Why this plan was created" - added
Input schema / properties / trigger_condition / descriptionAdded value: +"JSON string describing when to trigger (e.g. '{\"regime\": \"ranging\"}')" - added
Input schema / properties / trigger_type / descriptionAdded value: +"Type of trigger (e.g. \"market_condition\", \"drawdown\", \"time_based\")"
- Added
evolution_discover_patterns - Added
evolution_evolve_strategy - Added
evolution_fetch_market_data - Added
evolution_get_log - Added
evolution_run_backtest - Added
export_audit_trail - Changed
get_behavioral_analysis2 fields changed- added
Input schema / properties / strategy_name / descriptionAdded value: +"Filter by strategy name. Returns all if omitted." - added
Input schema / properties / symbol / descriptionAdded value: +"Filter by symbol. Returns all if omitted."
- Added
get_daily_root - Changed
get_strategy_performance2 fields changed- added
Input schema / properties / strategy_name / descriptionAdded value: +"Filter by strategy name. Returns all strategies if omitted." - added
Input schema / properties / symbol / descriptionAdded value: +"Filter by symbol. Returns all symbols if omitted."
- Changed
get_trade_reflection1 field changed- added
Input schema / properties / trade_id / descriptionAdded value: +"The trade ID to look up"
- Changed
recall_memories9 fields changed- added
Input schema / properties / context_atr_d1 / descriptionAdded value: +"Current ATR(14) on D1 in dollars" - added
Input schema / properties / context_regime / descriptionAdded value: +"Current market regime (trending_up/trending_down/ranging/volatile)" - added
Input schema / properties / hybrid_alphaAdded value: +{ + "default": 0.3, + "description": "Vector vs OWM blend weight [0..1] when hybrid is active.\n0.0 = pure OWM, 1.0 = pure vector. Default 0.3 (OWM-dominant).", + "type": "number" +} - added
Input schema / properties / limit / descriptionAdded value: +"Max results (default 10)" - added
Input schema / properties / market_context / descriptionAdded value: +"Current market conditions to match against" - added
Input schema / properties / memory_types / descriptionAdded value: +"Types to query (default: [\"episodic\", \"semantic\"])" - added
Input schema / properties / strategy_name / descriptionAdded value: +"Optional strategy filter" - added
Input schema / properties / symbol / descriptionAdded value: +"Trading instrument (e.g. \"XAUUSD\")" - added
Input schema / properties / use_hybridAdded value: +{ + "default": true, + "description": "If True (default), enable vector + OWM hybrid scoring when\nan embedding backend is available. Falls back to pure OWM silently\nwhen sentence-transformers is not installed.", + "type": "boolean" +}
- Removed
recall_similar_trades - Changed
remember_trade17 fields changed- added
Input schema / properties / confidence / descriptionAdded value: +"Agent confidence level 0-1 (default 0.5)" - added
Input schema / properties / context_atr_d1 / descriptionAdded value: +"ATR(14) on D1 in dollars" - added
Input schema / properties / context_regime / descriptionAdded value: +"Market regime (trending_up/trending_down/ranging/volatile)" - added
Input schema / properties / direction / descriptionAdded value: +"\"long\" or \"short\"" - added
Input schema / properties / entry_price / descriptionAdded value: +"Entry price of the trade" - added
Input schema / properties / entry_timestampAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "ISO format entry time. Used to compute hold duration." +} - added
Input schema / properties / exit_price / descriptionAdded value: +"Exit price of the trade" - added
Input schema / properties / exit_timestampAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "ISO format exit time. Used to compute hold duration." +} - added
Input schema / properties / market_context / descriptionAdded value: +"Description of market conditions" - added
Input schema / properties / max_adverse_excursion / descriptionAdded value: +"Maximum adverse excursion during the trade" - added
Input schema / properties / pnl / descriptionAdded value: +"Profit/loss in account currency" - added
Input schema / properties / pnl_r / descriptionAdded value: +"P&L as R-multiple (risk units). Improves OWM scoring quality." - added
Input schema / properties / reflection / descriptionAdded value: +"Lessons learned from this trade" - added
Input schema / properties / strategy_name / descriptionAdded value: +"Strategy used (e.g. \"VolBreakout\")" - added
Input schema / properties / symbol / descriptionAdded value: +"Trading instrument (e.g. \"XAUUSD\")" - added
Input schema / properties / timestamp / descriptionAdded value: +"ISO format timestamp. Defaults to now (UTC)." - added
Input schema / properties / trade_id / descriptionAdded value: +"Optional custom ID. Auto-generated if omitted."
- Removed
store_trade_memory - Added
validate_strategy - Added
verify_audit_chain - Added
verify_audit_hash
10 tool updates
v0.4.0- First observed
check_active_plans - First observed
create_trading_plan - First observed
get_agent_state - First observed
get_behavioral_analysis - First observed
get_strategy_performance - First observed
get_trade_reflection - First observed
recall_memories - First observed
recall_similar_trades - First observed
remember_trade - First observed
store_trade_memory
TDQS
Scored across 20 tools
Most tools have clearly distinct purposes across evolution, audit, and memory subsystems. However, check_trade_legitimacy, compute_dqs, and get_agent_state all involve pre-trade risk/confidence evaluation, creating potential overlap for an agent deciding which to call.
All tool names use snake_case with a clear verb_noun structure, which is consistent overall. Minor deviation: evolution_* tools carry a subsystem prefix while other tools do not, but the pattern remains predictable.
20 tools is on the heavy side for a single server, spanning multiple subsystems (evolution, audit, memory, planning). While each tool appears to have a distinct role, the count is borderline excessive and could likely be consolidated.
The surface covers major lifecycle stages: data fetch, pattern discovery, backtesting, evolution, audit export/verification, memory storage/recall, strategy validation, and trade planning. Minor gaps exist, such as no explicit cancel/update for trading plans or delete for memories, but core workflows are supported.
Maintenance
Related MCP Connectors
MCP server for Mudrex futures trading enabling AI agents to securely access data and risk tools.
An MCP memory server. One memory your agents share — across models, devices and apps.
MCP server giving AI agents one-connection access to China A-share market intelligence: financials,
Research-only MCP server: your AI as a quant research desk. 90 tools, no trades, no brokers.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP server that provides persistent memory for AI agents by storing session snapshots, factual memories, and conversation summaries. It enables seamless continuity between interactions by allowing agents to restore previous emotional states and recall relevant past experiences.-
- AlicenseAqualityBmaintenanceMCP server for persistent, compounding memory that automatically captures corrections and insights across AI sessions, enabling agents to learn and improve over time.5371MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that provides AI agents with persistent memory, cross-agent sharing, and context management, enabling them to remember conversations, track complex tasks, and evolve skills across tools.2MIT
- FlicenseNot gradedqualityBmaintenanceAn MCP server that captures and stores user decisions during AI-agent interactions, offering structured decision memory, cognitive bias detection, and personalized advice from historical patterns.2-