TradeMemory Protocol
시작하기 | 사용 사례 | API 참조 | OWM 프레임워크 | 제한 사항 | 中文版
프로젝트 상태(2026년 8월): 기능 완료, 유지보수 모드 — 버그 및 보안 보고는 계속 검토됩니다. 새로운 기능이나 호스팅 서비스는 계획되어 있지 않습니다. 유료 작업은 거래 기록 분석을 참조하세요.
당신의 트레이딩 AI는 기억상실증에 걸려 있습니다. 그리고 규제 당국이 이를 주목하기 시작했습니다.
매 세션마다 같은 실수를 반복합니다. 왜 거래했는지 설명하지 못합니다. 컨텍스트 창이 끝나면 모든 것을 잊어버립니다. 한편 MiFID II는 알고리즘 결정 문서화 기준을 높이고 있습니다(제17조). EU AI Act는 AI 행동의 체계적 로깅을 요구합니다(제14조). 경쟁사의 에이전트는 모든 거래에서 학습하고 있습니다.
AI 트레이딩 스택에는 한 계층이 빠져 있습니다. 모든 MCP 서버는 실행을 처리합니다 — 주문 체결, 가격 조회, 차트 읽기. 어느 것도 메모리를 처리하지 않습니다.
당신의 에이전트는 AAPL 100주를 매수할 수 있지만, "이 조건에서 AAPL을 매수했을 때 지난번에 무슨 일이 있었지?" 라는 질문에는 답할 수 없습니다.
TradeMemory는 메모리 계층입니다. pip install 한 번이면 AI 에이전트가 모든 거래, 모든 결과, 모든 실수를 기억합니다 — SHA-256 변조 감지 감사 추적과 함께.
모든 포지션 전에 사전 점검 체크리스트를 실행하는 트레이더와 매일 수천 건의 결정을 기록하는 EA 시스템이 프로덕션에서 사용하고 있습니다.
하는 일
거래 전: 메모리에 물어보세요 — 이 시장 조건에서 지난번에는 무슨 일이 있었나? 어떻게 끝났나?
거래 후: 한 번의 호출로 모든 것이 기록됩니다 — 5개 메모리 계층이 자동으로 업데이트됩니다
안전장치: 신뢰도 추적, 드로다운 알림, 연속 손실 감지 — 시스템이 멈춰야 할 때를 알려줍니다
모든 시장(주식, 외환, 암호화폐, 선물), 모든 브로커, 모든 AI 플랫폼에서 작동합니다. TradeMemory는 거래를 실행하거나 자금에 접근하지 않습니다 — 기록하고 회상할 뿐입니다.
Related MCP server: AgentRecall
빠른 시작
pip install tradememory-protocolClaude Desktop(claude_desktop_config.json)에 추가하세요:
{
"mcpServers": {
"tradememory": {
"command": "uvx",
"args": ["tradememory-protocol"]
}
}
}그런 다음 Claude에게 말하세요: "내 AAPL 롱 $195에 기록 — 실적 서프라이즈, 기관 매수, 높은 확신."
# 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 -d전체 가이드: 시작하기 (트레이더 트랙 + 개발자 트랙)
TradeMemory 사용자
미국 주식 트레이더 | 외환 EA 시스템 | 컴플라이언스 팀 | |
시장 | 주식 (AAPL, TSLA, ...) | XAUUSD (금) | 멀티 자산 |
방식 | 모든 거래 전 사전 점검 체크리스트 | MT5에서 자동 동기화 | 전체 결정 감사 추적 |
핵심 가치 | 규율 시스템 — 모든 결정 전 메모리 | 실행된 신호뿐 아니라 차단된 이유도 기록 | 규제 기관용 SHA-256 변조 감지 기록 |
자세히 |
작동 방식
회상 — 거래 전에 결과 품질, 맥락 유사성, 최신성, 신뢰도, 감정 상태로 가중치를 둔 과거 거래를 검색합니다 (OWM 프레임워크)
기록 — 거래 후
remember_trade호출 한 번으로 5개 메모리 계층에 기록합니다: 일화, 의미, 절차, 정서, 거래 기록반성 — 일간/주간/월간 리뷰로 행동 변화, 전략 성과 저하, 거래 실수를 감지합니다
감사 — 모든 결정은 생성 시 SHA-256 해시로 고정됩니다. 검토나 규제 제출을 위해 언제든 내보낼 수 있습니다
MCP 도구
카테고리 | 도구 | 설명 |
메모리 |
| 결과 가중치 점수로 거래 기록 및 회상 |
상태 |
| 신뢰도, 드로다운, 연속 손실, 행동 패턴 |
계획 |
| 조건부 트리거가 있는 사전 계획 |
리스크 |
| 5요인 사전 거래 게이트(전체 / 축소 / 건너뛰기) |
감사 |
| SHA-256 변조 감지 + 대량 내보내기 |
카테고리 | 도구 |
핵심 메모리 |
|
OWM 인지 |
|
리스크 및 거버넌스 |
|
진화 |
|
감사 |
|
REST API: 거래 기록, 반성, 리스크, MT5 동기화, OWM, 진화, 감사를 위한 35개 이상의 엔드포인트. 전체 참조 →
거래 기록 분석
TradeMemory 자체는 무료이며 자체 호스팅 방식입니다. 유지관리자가 유료 서비스로 제공하는 것은 귀하의 거래 기록에 대한 통계 분석입니다. MT4/MT5 내역을 내보내면 손실이 집중되는 지점, 손실 후 포지션 크기 변화, 강제 청산 구조, 거래별 실제 리스크를 설명하는 기술통계 보고서를 받고, 이어서 워크스루 콜이 진행됩니다.
과거 거래에 대한 기술통계만 제공합니다: 매매 신호 없음, 투자 조언 없음, 성과 약속 없음. 파일은 전달 후 삭제됩니다.
엔터프라이즈 및 컴플라이언스
에이전트가 내리는 모든 거래 결정 — 거래를 하지 않기로 한 결정까지 — 은 거래 결정 기록(TDR)으로 기록됩니다. 레코드별 SHA-256 콘텐츠 해시는 전방 연결 감사 원장에 연결되며, 모든 UTC 일자는 일자 간에도 연결되는 Merkle 루트로 요약됩니다. 과거 기록을 조작하면 이후의 모든 링크가 무효화됩니다.
규정 | 요구사항 | TradeMemory 적용 범위 |
MiFID II 제17조 | 모든 알고리즘 거래 결정 요인 기록 | 전체 결정 체인: 조건, 필터, 지표, 실행 |
EU AI Act 제14조 | 고위험 AI 시스템에 대한 인간 감독 | 모든 결정에 대한 설명 가능한 추론 + 메모리 맥락 |
EU AI Act 제12조 | 시스템 수명 동안 자동화된 변조 방지 로그 | 연결형 SHA-256 체인 + 일별 Merkle 루트(Phase 1.5에서 RFC 3161 TSA) |
# 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=jsonl아직 v0.5.2에 포함되지 않은 기능(TSA 타임스탬프, 외부 앵커링, zkML 추론 증명)을 포함한 전체 감사 체인 성숙도 설명은 LIMITATIONS.md를 참조하세요.
펀드를 위한 맞춤 배포가 필요하신가요? → dev@mnemox.ai
보안
API 키에 절대 접근하지 않습니다. TradeMemory는 거래를 실행하거나 자금을 이동하거나 지갑에 접근하지 않습니다.
읽기와 기록만 합니다. 에이전트가 결정 맥락을 TradeMemory에 전달하면, TradeMemory는 이를 저장할 뿐입니다. 그게 전부입니다.
로컬 우선. 유일한 외부 호출은 일별 감사 루트의 RFC 3161 신뢰 타임스탬프입니다 — 32바이트 해시이며 거래 데이터는 포함되지 않습니다(기본적으로 켜져 있으며
TRADEMEMORY_TSA=off로 비활성화). 그 외에는 어떤 것도 머신을 떠나지 않습니다.SHA-256 연결 감사 원장. 모든 레코드는 생성 시 해시되어 이전 레코드와 연결됩니다. 일별 Merkle 루트가 체인을 고정합니다. 레코드, 슬라이스, 일자 수준에서 무결성을 검증할 수 있습니다. 모든 수준에서 변조가 감지 가능하며, 외부 앵커링(기본적으로 TSA)은 로드맵에 있습니다.
1,400개 이상의 테스트 통과. CI를 포함한 전체 테스트 스위트.
연구 현황
TradeMemory의 OWM 프레임워크는 인지과학(Tulving 1972)과 강화학습(Schaul et al. 2015)에 기반을 두고 있습니다. 현재 상태:
OWM 5요인 점수화: 구현 완료, 테스트 완료(1,400개 이상의 테스트)
통계 검증: DSR, MBL 구현 완료(Bailey-de Prado 2014)
감사 추적: SHA-256 변조 감지 TDR
진화 엔진: 연구 단계(전략 생성은 작동, 통계 게이트 통과율 최적화 중)
하이브리드 회상: OWM 전용 모드 활성, 임베딩 구성 시 벡터 융합 사용 가능
실증 검증: 진행 중(n=40 거래, 통계적 유의성을 위해 n>=100 목표)
문서
Doc | Description |
설치 → 첫 거래 → 사전 점검 목록 | |
실제 운영 환경의 3가지 시나리오 | |
모든 REST 엔드포인트 | |
Outcome-Weighted Memory 이론 | |
시스템 설계 및 계층 분리 | |
상세 안내 | |
MetaTrader 5 통합 | |
진화 실험 및 데이터 | |
11가지 트레이딩 AI 실패 유형 | |
번체 중국어 |
기여
MIT — LICENSE를 참조하세요. 교육/연구 목적으로만 제공됩니다. 금융 조언이 아닙니다.
Available Tools
20 toolscheck_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?
The description discloses a key behavioral trait: it expires plans past their expiry date. This goes beyond the basic annotations (readOnlyHint=false, idempotentHint=true) by clarifying that the tool mutates state. It also states it queries all active prospective plans, which adds scope. No contradictions with 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 description is highly concise, with two sentences that front-load the core purpose and then provide necessary details. There is no filler or redundant phrasing, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main functionality, side effects, and context requirements. Since an output schema exists, it doesn't need to explain return values. It could mention prerequisites or the matching logic in more depth, but overall it is sufficiently 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 coverage is 100% for both parameters (context_atr_d1, context_regime) with meaningful descriptions. The tool description only refers to 'provided context' without adding extra detail about the parameters, so it adds minimal value beyond the 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 clearly states a specific action: checking active trading plans against current market context, and explicitly mentions the expiration side-effect. This distinguishes it from sibling tools like create_trading_plan or evolution functions, making its purpose unambiguous.
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 implies when to use the tool (when reviewing active plans and cleaning up expired ones) but does not explicitly state alternatives or when not to use it. There is no mention of how it relates to other tools or any exclusions, so usage guidance remains implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_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 already provide idempotentHint=true and destructiveHint=false, so the agent knows repeated calls are safe and non-destructive. The description adds value by listing the specific evaluation criteria (sample size, memory quality, regime experience, streak state, drawdown), which gives behavioral insight beyond the structured annotations. No contradiction exists.
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 two sentences, front-loaded with the purpose and immediately followed by usage guidance and evaluation criteria. Every sentence contributes meaningful information with no redundancy or 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?
The tool has an output schema (as noted) and annotations, so the description need not explain return values. It covers what the tool does, when to call it, and what it evaluates. It lacks explicit exclusions or alternative mentions, but for the tool's complexity, this is complete enough.
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 parameters are well-documented. The description does not add additional parameter-level semantics beyond the schema; the mentioned criteria are internal evaluations, not parameter explanations. Baseline 3 is appropriate since the schema handles 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?
The description clearly states the tool's function: 'Check if the agent has sufficient data and confidence to trade.' It uses a specific verb ('check') and resource ('trade legitimacy'), and differentiates from siblings by focusing on pre-trade evaluation with explicit criteria (sample size, memory quality, regime experience, streak state, drawdown). This distinguishes it from related tools like check_active_plans 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?
The description explicitly instructs 'Call this before making any trade decision,' providing clear context for when to use the tool. It does not mention explicit alternatives or when not to use it, but the instruction is strong and the purpose is distinguishable from siblings, which is sufficient for a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compute_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?
The description adds valuable behavioral context beyond annotations by listing the five factors it evaluates (regime match, position sizing vs Kelly, OWM similarity, risk state, historical pattern). The annotations already declare idempotentHint=true and destructiveHint=false, so the description does not need to repeat safety aspects. No contradiction exists.
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 tightly written in two sentences. The first sentence front-loads the primary purpose, and the second lists the five evaluation factors without any filler. 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?
Given the tool's complexity (7 parameters, output schema present, annotations provided), the description is complete. It explains what the tool does, when to use it, and what factors are considered. The output schema handles return-value details, so no further explanation is needed.
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%, giving the agent complete parameter documentation. The description goes a step further by grouping parameters conceptually: e.g., 'position sizing vs Kelly' connects to proposed_lot_size, and 'regime match' connects to context_regime. This semantic mapping adds value beyond the raw 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 opens with a specific verb+resource: 'Compute Decision Quality Score before executing a trade.' It clearly distinguishes this from sibling tools by emphasizing that it evaluates the decision process (not outcome) across five named factors, which differentiates it from tools like check_trade_legitimacy 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?
The description clearly states when to use it: 'before executing a trade.' It provides strong contextual guidance, but it does not explicitly name alternatives or exclusion cases. Sibling tools exist for related purposes (e.g., check_trade_legitimacy, validate_strategy), but no comparison is given, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_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?
The annotations are all false, so the description carries the burden of behavioral disclosure. It effectively communicates that the plan is stored in prospective memory and remains active until triggered, expired, or cancelled, giving useful lifecycle context beyond the structured 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?
The description is three concise sentences with no filler. It opens with the main purpose, then adds storage and lifecycle details, each sentence earning 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?
Given the rich input schema and presence of an output schema, the description adequately covers the tool's core behavior and lifecycle. It lacks examples or edge-case handling, but it is sufficient for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% parameter description coverage, so the description does not need to repeat parameter details. It adds no extra parameter-specific semantics beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as creating a prospective trading plan that activates on conditions. It specifies the verb 'create' and the resource 'trading plan', and the activation rule distinguishes it from a general memory tool, though it does not explicitly name sibling alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. It implies usage for setting up conditional trading plans but lacks exclusions, prerequisites, or comparisons to related tools like remember_trade or check_active_plans.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evolution_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?
The description discloses that the tool uses Claude (LLM) for analysis, which implies non-deterministic behavior and potential API costs. It also notes patterns are 'candidate' and can be backtested later, providing workflow context. However, with all annotations false and no mention of side effects, permissions, or failure modes, the description does not fully carry the transparency burden.
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 compact and front-loaded, using two short sentences to convey purpose and method, followed by a single sentence on the backtesting workflow. Every sentence adds value without repetition, and the structure is clean and scannable.
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?
The description covers the core aspects: what the tool does, how it works (LLM), the input data (OHLCV), output (patterns with entry/exit), and next steps (backtesting). Given that an output schema exists and the parameter schema is fully descriptive, the description is reasonably complete for agent decision-making, though it could mention prerequisites like data availability.
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?
All five parameters are fully documented in the schema (100% coverage), so the description adds little extra meaning. It mentions 'OHLCV data' (relevant to symbol/timeframe) and 'generate candidate patterns' (relevant to count), but these do not significantly enhance understanding beyond the schema descriptions. Baseline 3 is appropriate because the schema already handles parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Discover trading patterns from market data using LLM analysis.' It specifies the method (LLM/Claude), the input (OHLCV data), and the output (candidate patterns with entry/exit conditions). This distinguishes it from sibling tools like evolution_run_backtest (backtesting) and evolution_evolve_strategy (strategy evolution).
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 implies a workflow by stating 'Each pattern can be backtested afterward,' but it does not explicitly say when to use this tool versus alternatives, nor does it provide prerequisites or exclusions. There is no direct guidance on choosing between this and the sibling tools, so usage context is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evolution_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 are all false, providing minimal behavioral signal. The description adds useful process details (LLM generation, in-sample/out-of-sample validation, elimination of weak hypotheses) and return value ('graduated strategies and graveyard'). It does not disclose potential side effects like resource usage or persistence, but it does not contradict 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 description is front-loaded with a one-line summary ('Run full evolution loop — generate, backtest, select, eliminate.') followed by a concise elaboration. It contains no fluff and every sentence contributes to understanding the tool's behavior.
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?
The description covers the core workflow, data splits, and return value, and an output schema exists so return format details are covered. It does not mention prerequisites or how it relates to sibling tools (e.g., whether it requires evolution_fetch_market_data first), but for a complex pipeline the description is sufficiently comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% parameter description coverage, so the schema already explains every parameter. The description adds no direct parameter-level meaning beyond the schema, making the baseline 3 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 explicitly states 'Run full evolution loop' and lists the specific steps (generate, backtest, select, eliminate), making the tool's purpose unmistakable. It also differentiates itself from sibling tools like evolution_run_backtest and evolution_discover_patterns by focusing on the complete multi-generation pipeline rather than individual steps.
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 clearly defines the tool as a full-loop process, implying it should be used when the complete evolution workflow is needed. However, it does not explicitly mention alternatives or say 'use evolution_run_backtest for single backtests,' so it lacks explicit exclusion guidance but provides strong contextual clues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evolution_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 already cover safety profile: idempotentHint=true and destructiveHint=false. The description adds that data is sourced from Binance and that it downloads historical bars, which provides useful context. However, it does not disclose any side effects (e.g., whether data is stored locally) despite readOnlyHint=false, nor does it mention rate limits or data freshness. The annotation prevents a lower score, but the description itself could be richer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded. Two sentences convey the core purpose and usage instruction with no wasted words. Every sentence earns its place, and the structure is easy to scan.
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?
The tool is simple and the description, combined with the schema and annotations, gives a clear picture of how to use it. However, a small gap remains: the description does not clarify how the fetched data is made available to downstream tools (e.g., whether it is stored, cached, or returned directly), especially given readOnlyHint=false. With an output schema present, return values are covered, but the side-effect behavior is somewhat ambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage of parameters, each with clear descriptions and defaults. The description adds no parameter-specific details beyond the schema, so it does not increase understanding beyond what is already structured. Baseline 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb and resource: "Fetch OHLCV market data from Binance for evolution analysis." It also mentions downloading historical price bars for backtesting and pattern discovery, which distinguishes it from sibling tools like discover_patterns and run_backtest that operate on the data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: "Use this before discover_patterns or run_backtest to get data." This names specific downstream tools and clarifies when this tool should be invoked. However, it does not mention alternative data sources or when not to use it, so it stops short of a full when/when-not/alternatives distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evolution_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?
The description discloses an important behavioral trait not covered by annotations: 'Data is in-memory (resets on server restart).' This adds context about persistence and freshness that annotations (readOnlyHint, idempotentHint) do not provide. It also specifies the return scope ('from this session'), which is useful behavioral information. No contradiction with 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 description is two sentences: the first states the primary action, the second details the return contents and a critical caveat. It is front-loaded, efficient, and every sentence contributes value without redundancy. This is a model of concise structuring.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, an output schema exists to define the return structure, and annotations cover safety behavior, the description provides all necessary contextual information: what the tool returns and the in-memory limitation. It is complete for a simple log retrieval 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?
With zero parameters, the input schema is trivially complete, and the description need not elaborate on parameter semantics. The baseline for 0 params is 4, and the description appropriately does not attempt to invent parameter details. It adds no parameter-level information, but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get the log of past evolution runs from this session.' It specifies the resource (evolution runs log) and the action (get), and the additional details about returned content (graduated strategies, graveyard, token usage) make its purpose unambiguous. It is distinct from sibling tools like evolution_evolve_strategy or evolution_run_backtest, which perform different actions.
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 implies when to use the tool (when you need the history of evolution runs) but does not explicitly state alternatives or exclusions. It notes the session-scoped nature, which is a usage hint, but lacks direct comparison to other retrieval tools like get_strategy_performance or get_agent_state. This meets the 'implied usage' level but not explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evolution_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 provide idempotentHint=true and destructiveHint=false, establishing that repeated calls are safe and non-destructive. The description adds valuable context by explaining it 'runs a vectorized backtest' and 'Returns fitness metrics: Sharpe ratio, win rate, trade count, max drawdown, total PnL,' which helps the agent understand the tool's behavior and output 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 description is concise—two short sentences that front-load the core purpose ('Backtest a candidate pattern') and then provide necessary detail about the input and output. Every sentence contributes meaningful information with no 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?
The description covers the tool's purpose, input origin, and output metrics, making it sufficiently complete for a backtest tool. While it doesn't elaborate on all parameters (days, symbol, timeframe), the schema fully documents those, and the description doesn't need to repeat them. The output schema exists, so detailed return documentation isn't required.
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. The description adds meaning by specifying that pattern_dict is 'from discover_patterns output', clarifying the expected structure and origin of the key required parameter. It doesn't repeat the schema's parameter details, but the added context about the input source is valuable.
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?
Description states a specific verb+resource: 'Backtest a candidate pattern against historical OHLCV data.' It clearly distinguishes from siblings like evolution_discover_patterns (which discovers patterns) and evolution_evolve_strategy (which evolves strategies).
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 indicates the input comes 'from discover_patterns', giving clear context for when to use this tool (after pattern discovery). It doesn't explicitly name alternatives or exclusions, but the context is sufficient for an agent to infer appropriate usage relative to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_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, so the safety profile is covered. The description adds behavioral context beyond annotations by emphasizing a 'complete, tamper-evident record' and revealing that exported data includes 'memory context (similar trades, beliefs)', which is valuable for understanding what the output entails.
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 two sentences, front-loaded with the primary purpose, followed by a concise elaboration on the record's content and integrity. Every sentence contributes value with no redundancy or unnecessary 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?
Given the output schema exists and the annotations cover safety, the description is complete enough. It explains what is exported, why (audit/compliance), and critical characteristics (tamper-evident, includes memory context). The optional parameters are fully specified in the schema, so no gaps remain.
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 are already well-documented with types, defaults, and examples. The description does not add additional parameter-level meaning, and the baseline of 3 applies since the schema handles the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Exports Trading Decision Records' for 'audit and compliance review', which is a specific verb+resource combination. It distinguishes itself from sibling tools like verify_audit_hash and verify_audit_chain, which focus on verification rather than export.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context ('for audit and compliance review') indicating when this tool is appropriate. However, it does not explicitly mention alternatives or state when not to use it. Sibling tools like verify_audit_hash are not referenced, so it lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_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 and destructiveHint=false. The description adds valuable context by specifying the exact output fields (confidence, risk appetite, drawdown, streaks, equity) and a behavior: 'recommended action based on current drawdown severity.' This goes beyond the annotations without contradicting them.
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 two sentences, front-loaded with the core purpose, and the second sentence adds concise detail about return values. Every clause contributes meaningful information without 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?
For a zero-parameter read-only tool with a rich output schema (present), the description sufficiently explains what the tool provides and the logic for the recommended action. No additional context is needed given the schema and annotations cover the safety profile.
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 zero parameters, the description has no parameter burden. The schema is trivially fully covered. Baseline for 0 params is 4, and the description adds no unnecessary parameter noise.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get the current agent affective state' and enumerates specific components (confidence, risk, drawdown). It distinguishes from sibling tools by focusing on the agent's internal state rather than plans, performance, or reflections.
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 implies when to use this tool: when you need the current affective state. However, it does not explicitly mention alternatives or provide exclusion criteria. Sibling tool names suggest different purposes, but no direct comparison is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_behavioral_analysisARead-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=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds value by specifying the data source ('procedural memory'), the aggregate nature of the stats, and the exact metrics returned, which is context beyond the structured 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 description is two efficient sentences. The first sentence states the action and source, and the second lists the specific return values. No unnecessary words or redundant information, and the key verb is front-loaded.
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 a read-only, idempotent, non-destructive annotation set, an output schema, and fully documented parameters, the description provides sufficient context for the agent to correctly select and invoke the tool. It explains the source, the aggregate nature, and the key metrics returned, leaving no critical gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both symbol and strategy_name are described with 'Returns all if omitted'). The description itself does not add parameter details or syntax, and the schema already fully documents the parameters. Baseline 3 applies because the schema carries the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('Get') and a well-defined resource ('behavioral analysis from procedural memory'). It enumerates the specific output metrics (hold times, disposition ratio, lot sizing variance, Kelly criterion comparison), which distinguishes it from sibling tools like 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 implies usage context by specifying the source (procedural memory) and aggregate nature, but it does not explicitly state when to use this tool over alternatives or provide exclusions. There is no mention of alternative tools or conditions where another tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_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 indicate idempotentHint=true and readOnlyHint=false. The description adds that the root summarises entries by `chained_at` and that rebuilding is possible, but does not disclose side effects such as overwriting the stored root or TSA failure behavior — these details only appear in the schema, not the description.
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 two short paragraphs, front-loaded with the core action in the first sentence. It provides concise domain context without repeating parameter schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with an output schema and well-documented parameters, the description gives sufficient domain background and use-case context. It lacks explicit guidance on when `rebuild=True` is needed or that overwriting occurs, but the schema covers mechanics and the output schema covers returns — acceptable completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds crucial meaning by stating the date is a 'UTC date' and that entries are filtered by `chained_at` falling inside the UTC day — this timezone context is absent from the schema's dry 'YYYY-MM-DD format' description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Get (or rebuild) the daily Merkle root for a UTC date' — a clear verb+resource+scope. It distinguishes itself from sibling verification tools by focusing on obtaining/rebuilding a day-level root, not verifying individual hashes or chains.
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 that verifying this root proves integrity of every TDR for that day 'without re-walking each one,' implying the tool is for whole-day integrity checks. It does not explicitly name alternatives or exclusions, but the context separates it from verify_audit_hash/chain.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_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=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds minimal behavioral detail beyond the tool's name and purpose, so it does not significantly enrich understanding of side effects or execution behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and contains no filler. Every phrase adds value, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, full schema coverage, and presence of an output schema, the description is largely sufficient. It could optionally specify whether stats are based on closed trades or open positions, but this is not critical for selection.
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 both parameters (symbol, strategy_name) have descriptions. The description adds no parameter-specific information beyond what the schema provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get aggregate performance stats per strategy,' using a specific verb and resource. It distinguishes the tool from siblings like get_behavioral_analysis or evolution_get_log by focusing on strategy-level performance evaluation.
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 gives explicit context: 'Use this to evaluate which strategies are working and which need adjustment.' It clearly indicates when to use the tool, though it does not mention alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_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, and destructiveHint=false, so the safety profile is clear. The description adds minimal behavioral context beyond that, only indicating that it returns context and reflection, which is largely implied by the tool name 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?
The description is exactly two sentences, begins with the action verb 'Get', and includes a practical usage note. Every word earns its place, with no redundant or vague phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup with one parameter, full schema coverage, a complete set of annotations, and an output schema, the description provides all necessary context: what it does, when to use it, and its safety profile. It does not need to explain return values because the output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema contains a single required parameter trade_id with a clear description, achieving 100% schema description coverage. The description adds no extra parameter semantics, but the schema already fully documents the parameter, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb 'Get' and names the resource 'full context and reflection for a specific trade', clearly distinguishing it from sibling tools like remember_trade or get_strategy_performance. The second sentence reinforces its unique purpose by framing it as a deep-dive into a trade's 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?
The description explicitly states when to use the tool: 'Use this to deep-dive into a particular trade's reasoning and lessons.' This provides clear context, but it does not name alternative tools or mention exclusions, so it stops short of the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recall_memoriesAIdempotent
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.
Use order="losses_first" right before placing a trade: losing trades taken in similar conditions rank first, and the current mood (a losing streak) no longer pushes them down.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 10) | |
| order | No | "outcome" (default): better outcomes rank higher (by R multiple, where one was recorded), and at least 20% of the results are losses. "losses_first": every losing trade comes before anything else, the bigger losses in similar conditions first; the symbol's recent losing trades are searched as well as its recent trades. For a pre-trade check. | outcome |
| 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 cover the safety profile, and the description adds real behavioral context: what signals drive ranking (outcome quality, context similarity, recency, confidence, affective modulation) and the effect of losses_first on mood suppression. It does not explain why readOnlyHint is false or whether a recall mutates any state, which leaves one gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core operation in the first line, then scoring behavior, then the one actionable usage tip. Four short sentences with little waste, though the scoring-dimension list is partially jargon that the schema also implies.
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?
Output schema exists so return values need not be described, and annotations cover safety. The description supplies the scoring model and the key usage mode, which is sufficient for a 10-param read tool, though it omits any note on the readOnlyHint=false state change.
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 10 parameters including order, use_hybrid, and hybrid_alpha. The description restates the order="losses_first" behavior but adds no syntax or semantics beyond what the schema already states, matching the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Recall memories') and elaborates the retrieval+scoring pipeline (episodic/semantic, OWM scoring, ranked results with score breakdown). This clearly separates it from write-side siblings like remember_trade or aggregation tools like get_strategy_performance. It stops short of naming any sibling explicitly, so it lands at 4 rather than 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?
Gives a concrete, situational directive: use order="losses_first" right before placing a trade, with the reason (losing trades in similar conditions rank first, mood no longer suppresses them). It does not say when NOT to use this tool or name alternative memory/analysis tools, so it is clear context but not full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remember_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") | |
| lot_size | No | Position size (lots, shares or contracts). Without it, patterns such as sizing up after a losing streak cannot be seen. | |
| 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 only give the write (readOnlyHint=false) and non-idempotent profile, but the description goes well beyond by naming the exact downstream side effects: episodic write, Bayesian semantic update, procedural running averages/hold time/Kelly, EWMA affective confidence/streaks, and a trade_records backward-compat write. This is rich behavioral disclosure an agent could not infer from structured fields.
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 verb+resource in the first clause, then layers the side effects, then closes with the compatibility note. Every sentence carries information and there is 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?
For an 18-parameter write tool with an output schema (so return values need not be explained) and full schema coverage, the description covers purpose and downstream effects adequately. The only gap is the absence of explicit guidance on when in a trade lifecycle to invoke it.
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. The description does not add per-parameter meaning beyond the schema; its reference to hold time and Kelly loosely implies use of entry/exit timestamps and pnl_r, but the schema already documents those explicitly.
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 ('Store a trade into OWM multi-layer memory') and enumerates the concrete memory layers touched. No sibling in the list performs a trade write, so the operation is unambiguously distinct from the get_*/check_*/verify_* read tools.
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 only implied (you would call this to persist a completed trade). There is no explicit when-to-use statement, no note on prerequisites (e.g. close the trade first), and no comparison to any alternative write path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_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=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds meaningful behavioral context beyond annotations: it explains the four tests performed, mentions the input format requirement (trade log or daily returns CSV), and adds educational/research-only and not-financial-advice disclaimers. It does not contradict 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 description is moderately sized but well-structured: a one-line purpose statement, a disclaimer, a sentence on required input, and a numbered list of tests. Each sentence earns its place, though the test list could be slightly more compact. No filler or redundant phrasing is present, but it is not as tight as a two-sentence description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with four statistical tests, an output schema, and full schema/annotation support, the description covers the essential aspects: purpose, tests, input format, and disclaimers. It does not describe the output structure, but the output schema exists and reduces the need to do so. It also does not mention error handling or performance constraints, but the complexity is adequately addressed. A 4 reflects solid completeness without being exhaustive.
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 fully describes all four parameters (file_path, format, strategy_name, num_strategies), including column details and defaults. The description's mention of CSV formats and the four tests adds only minimal extra meaning; it does not substantially deepen understanding beyond the schema. Baseline 3 is appropriate given full schema coverage.
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 uses a specific verb ('Validate') and names a concrete resource ('a trading strategy') while enumerating the exact statistical tests performed (DSR, Walk-Forward, Regime, CPCV). This clearly distinguishes it from siblings like evolution_run_backtest or get_strategy_performance, which focus on execution or reporting rather than statistical validation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: it is for validating strategies via statistical tests, and explicitly restricts use to educational/research purposes ('Not financial advice'). It does not name alternatives or state when not to use it, but the detailed test list implies the appropriate scenario, and the disclaimer sets boundaries. No alternate tool is mentioned, so a small deduction from 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_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?
Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint false), the description adds substantial context: the traversal algorithm, the exact hash relationship, and the meaning of return fields. It even clarifies edge semantics like `first_break_at` being None when verified=True, which is valuable for interpreting results.
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 well-structured with three concise parts: a one-sentence purpose, a detailed algorithm explanation, and return value semantics. Every sentence adds necessary information with no redundancy or 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?
Given the rich schema (100% coverage), strong annotations, and an output schema, the description fully round out the tool's behavior: it explains the verification logic, defaults, and return meaning. Nothing essential is missing for an agent to invoke and interpret results 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 coverage is 100% for both parameters, so the baseline is 3. The description adds meaning by explaining that `from_seq` defaults to 1 (genesis record) and `to_seq` defaults to latest, complementing the schema's null defaults and making the runtime behavior explicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Verify the integrity of the audit chain.' It details the exact verification process—walking from `from_seq` to `to_seq`, checking `prev_hash` against `data_hash` and verifying the SHA256 computation—which fully distinguishes it from siblings like `verify_audit_hash`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on how to use the tool: it specifies the default range (genesis to latest) and how to constrain it via `from_seq`/`to_seq`. It does not explicitly mention alternatives or when not to use it, but the unique behavior makes the intended usage apparent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_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 declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds value by explaining the verification algorithm (recompute SHA256 from stored inputs and compare) and the consequence of a mismatch (tampering). This goes beyond the annotations and gives the agent a clear model of behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, two sentences, front-loaded with the core purpose. Every sentence earns its place without any fluff.
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?
This is a simple tool with a single required parameter, rich annotations, and an output schema present. The description explains both what it does and the verification logic, making it complete for the given complexity. Return values are already covered by the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with a clear description of trade_id. The tool description does not add further parameter semantics beyond what the schema already provides, 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 clearly states the tool verifies the integrity of a Trading Decision Record and explains the mechanism: it recomputes the SHA256 data_hash and compares it with the original. This specific verb+resource distinguishes it from sibling tools like verify_audit_chain (which likely verifies the chain) and 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 implies a clear use case: verifying a single record for tampering. The singular 'a Trading Decision Record' provides context, but it does not explicitly name alternatives or exclusion scenarios (e.g., when to use verify_audit_chain instead).
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.
2 tool updates
v0.5.6- Changed
recall_memories1 field changed- added
Input schema / properties / orderAdded value: +{ + "default": "outcome", + "description": "\"outcome\" (default): better outcomes rank higher (by R\nmultiple, where one was recorded), and at least 20% of the\nresults are losses. \"losses_first\": every losing trade comes\nbefore anything else, the bigger losses in similar conditions\nfirst; the symbol's recent losing trades are searched as well as\nits recent trades. For a pre-trade check.", + "type": "string" +}
- Changed
remember_trade1 field changed- added
Input schema / properties / lot_sizeAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Position size (lots, shares or contracts). Without it,\npatterns such as sizing up after a losing streak cannot be seen." +}
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 target clearly distinct resources and actions, and namespaces (evolution_*, verify_audit_*) help group related operations. However, check_trade_legitimacy vs compute_dqs (both pre-trade gates) and get_agent_state vs get_behavioral_analysis (both aggregate state) have overlapping boundaries an agent could misselect between.
Nearly all tools follow a predictable snake_case verb_noun pattern (get_*, create_*, verify_*, check_*), with the evolution_* prefix used consistently as a namespace for that subgroup. Minor deviation is the mixed imperative/noun style of remember_trade, recall_memories, and compute_dqs, but the convention remains readable throughout.
20 tools is on the heavier side but justified by the breadth of the domain (memory, planning, strategy evolution, audit, validation). Each tool maps to a distinct capability rather than being redundant, so the count is reasonable though slightly toward the upper bound.
Coverage is strong: memory write/recall, planning create/check, a full evolution loop, and a complete audit trail (export, hash, chain, Merkle root). The notable gap is the planning lifecycle—create_trading_plan mentions manual cancellation but no cancel/update plan tool exists, and there is no delete/update for stored trades.
Maintenance
Related MCP Connectors
- FensoryOAuthcom.fensory
Trading MCP server for AI agents, with live market data, account reads and controlled execution.
Persistent memory for AI agents to retain, retrieve, and recall conversation context through MCP.
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.
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-