ai_trading_journel_mcp
AI Trading Journal: free, open-source trading journal for MT5 (MetaTrader 5)
Every MetaTrader 5 trade syncs automatically. Review your P&L calendar, journal your setups and emotions, and get AI coaching from Claude on what's working and what's losing you money, instrument by instrument.
Free forever · Open source (MIT) · Runs on your own computer · No subscription · No cloud account · Your data stays private
Website · Demo video · Features · Quick start · Claude AI coach · FAQ · Support ❤️
Why this trading journal?
Most trading journals are paid web apps that want your broker login, or spreadsheets you stop updating after a week. AI Trading Journal is different:
It fills itself in. A small, read-only MT5 Expert Advisor exports your full history and every new fill. Trades show up seconds after they close: partial closes, commissions, swaps, stop-loss changes and MFE/MAE all included.
It tells you why you're losing. Built-in analytics flag revenge trading, overtrading, widened stops, early exits, sizing up after losses and losing sessions, and put a dollar cost on each.
It has a real AI coach. Connect Claude through MCP and ask, in plain English (or by voice), "What's my worst habit on gold this month?" Claude reads your journal, writes a per-instrument review, and saves it into the app.
It's yours. Everything is stored in a local SQLite file on your machine. No account and no upload; you can read the code.
Related MCP server: Trader Journal MCP
Features
📊 Dashboard with your live account balance
Balance, equity, open P&L, today's result and all-time return, reconciled against MT5 to the cent. Win rate, profit factor, expectancy, average R and max drawdown come with comparisons to the previous period. You also get the balance curve, daily P&L, and breakdowns by instrument and session. Pick 7D, 30D, 90D, 1Y or All, or any custom date range.
📅 P&L calendar and daily journal
Every day is shaded by its result, with the trade count and win rate, plus weekly totals. Click a day to see its trades and write your pre-session plan, post-session review and mood.
🧾 Every trade, fully journaled
Trades table: filter by instrument, side, outcome, session, setup, emotion, mistake or source, search your notes, and sort any column.
Trade page: entry and exit, the stop that defines 1R (and whether you added it late or widened it), R-multiple, holding time, session, every MT5 deal, and a price-excursion bar showing how much of the move you kept.
Journal on every trade: setup, emotions, mistakes, a 1–5 rating, "followed my plan?", notes, and chart screenshots (drag, drop or paste).
🎯 Per-instrument analytics
Each symbol gets a verdict (edge, leaking, breakeven or too few trades), its own equity curve, and breakdowns by session, weekday, direction, setup, exit type, hold time, emotion and mistake. Plain-English insights come with it, e.g. "XAUUSD: Asia session accounts for −$1,978 (0% win rate) while Overlap is +$46." Broker suffixes like EURUSD.m, XAUUSD+ and #US30 are merged automatically.
🚩 Behavioural red flags, with a dollar cost
Flag | What it catches |
Revenge trading | New trades opened within N minutes of a losing close, especially at a bigger size |
Overtrading | Trades beyond your daily limit |
No stop / stop added late | Positions opened unprotected, even if you add a stop afterwards (common on mobile) |
Stop widened | Stops moved further from entry on losing trades |
Loss beyond plan | Losses bigger than 1R |
Holding losers | Losers held much longer than winners |
Early exits | Winners that kept less than 40% of their best open profit |
Sizing up after a loss | The next trade after a loss is much bigger than usual |
Losing sessions and weekdays | Times of day or days of the week that consistently lose |
🤖 AI coach (Claude via MCP)
Weekly, monthly, per-instrument and per-trade reviews: strengths, weaknesses, psychology, a concrete action plan, and if/then rules for each instrument. Each review is backed by your journal's numbers and checked against your own written trading rules. How it works ↓
More
Dictate trades from other brokers ("short NAS100 at 20150, out at 20080, +$700") and Claude logs them, with duplicate detection against MT5.
Starts automatically at login (macOS) and syncs in the background.
Demo mode with 200+ realistic trades, so you can try everything before connecting a live account.
Accurate maths: deals are grouped per MT5 position, partial closes are volume-weighted, netting reversals are split, broker server time (incl. New York-close DST) is converted to your timezone, and balances are reconciled against MT5.
How it works
flowchart LR
MT5["MetaTrader 5<br/>+ TradeJournalSync EA<br/>(read-only)"] -- "JSON / CSV files<br/>every new deal" --> J["Journal engine<br/>(Python · SQLite)"]
J --> UI["Web app<br/>localhost:8000"]
J <--> MCP["MCP server"]
MCP <--> C["Claude Desktop /<br/>Claude Code"]
You(("You")) --> UI
You -- "voice or text" --> CThe EA runs on any MT5 chart. It never places, changes or closes trades. It writes your account, deals, symbols, open positions and price excursions to MT5's shared
Common/Files/TradeJournal/folder.The journal watches that folder, rebuilds trades from deals, and computes the statistics, behaviour flags and insights.
The web app shows it all. The MCP server gives Claude 16 tools to read the journal, add notes, log trades and save reviews.
Quick start
You need:
uv, which installs Python 3.13 for you
MetaTrader 5
Claude Desktop for AI coaching (optional; it uses your Claude subscription, no API key)
git clone https://github.com/gillani-hello/ai-trading-journal.git
cd ai-trading-journal
uv sync # Python dependencies
cd web && npm install && npm run build && cd .. # web app
uv run tj serve # → http://127.0.0.1:8000Try it first with demo data (kept separate from your real journal):
uv run tj seed-demo
uv run tj serve --demo1. Connect MetaTrader 5
uv run tj install-eaThis copies mt5/TradeJournalSync.mq5 into your terminal's MQL5/Experts/TradeJournal/ folder and compiles it with your MetaEditor. Then, in MT5:
Open Navigator › Expert Advisors › TradeJournal, find TradeJournalSync, and drag it onto any one chart. Click OK.
Leave that chart open. Your full history is imported straight away, and new trades arrive within seconds.
The EA contains no trading code, so Algo Trading can stay off. If your terminal won't start EAs at all, tick Allow Algo Trading in its properties. If install-ea can't find or compile it, do it by hand: in MT5 choose File › Open Data Folder, put the .mq5 file into MQL5/Experts/, open it in MetaEditor and press F7.
Platform | Status |
macOS (MetaQuotes' MT5 app for Mac) | ✅ Tested end to end, including automatic EA compile and start at login |
Windows | ✅ Supported (MT5 under |
Linux (MT5 under Wine: | ✅ Supported. Please report issues |
Folders are found automatically. Set TJ_MT5_DIR to the EA's export folder to override that.
2. Keep it running (optional, macOS)
uv run tj install-service # start at login, restart if it crashes
uv run tj uninstall-service # undoOn Windows, install-service prints a ready-to-run schtasks command; on Linux it prints the command to use in a systemd user service.
AI coaching with Claude
The coach runs inside Claude Desktop or Claude Code on your own Claude plan, with no API key and no extra cost. Claude talks to the journal through the Model Context Protocol (MCP).
Connect (one time)
uv run tj mcp-config --write-desktop # adds the journal to Claude Desktop (backs up your config)Then quit Claude Desktop completely (⌘Q / Exit) and reopen it. Ask "How many trades are in my journal?" to check, and choose Always allow when Claude asks to use the trading-journal tools.
Claude Code: run the claude mcp add … command that uv run tj mcp-config prints.
Talk to your journal
You say | Claude does |
"My last gold trade was a breakout. I felt FOMO and entered late. 2/5." | Adds setup, emotion, mistake and rating to the MT5 trade ( |
"Log a trade from my other broker: short NAS100 at 20150, out at 20080, 1 lot, +$700." | Logs a manual trade and warns about duplicates ( |
"How am I doing on EURUSD this month by session?" | Pulls stats and breakdowns ( |
"What's my worst habit and what is it costing me?" | Reads the behaviour flags with their cost ( |
"Today's review: stopped after two losses like my plan says. Mood calm." | Saves the day's note on the calendar ( |
"Save my trading rules: max 1% risk, stop on every order, no gold in Asia." | Stores your rules; every review then checks you against them |
Speak instead of typing with Claude Desktop's voice input or your OS dictation.
Coaching reviews (prompts)
In Claude Desktop click + › trading-journal and pick a prompt. In Claude Code type /mcp__trading-journal__weekly_review. Or just ask: "Do my weekly trading review."
Prompt | What you get |
| Every instrument you traded: what works, what leaks money, rules to adopt, and a 3–5 point action plan. Progress is checked against the previous review. |
| A 90-day deep dive on one symbol (e.g. XAUUSD) |
| A critique of one trade (entry, stop, exit, size), attached to the trade |
| A guided session for dictating several trades |
Reviews are saved to the AI Coach page, and each instrument's section also appears on that instrument's page. Claude works from numbers the journal computes deterministically (win rate, R, sessions, flags, your notes), so its advice is grounded in your own data.
log_trade · annotate_trade · find_trades · get_trade · get_performance · get_instrument_breakdown · get_calendar · get_behavior_report · get_coaching_context · save_ai_report · save_trade_feedback · write_day_note · list_tags · set_trading_rules · sync_mt5 · delete_trade
The AI coach reviews your process and discipline from your own statistics. It does not give investment advice or tell you which trades to take.
Commands
Command | Purpose |
| Web app + MT5 folder watcher |
| MCP server on stdio (Claude launches this) |
| Import now; |
| Copy + compile the MT5 Expert Advisor |
| Connect Claude Desktop / Claude Code |
| Start at login (macOS) |
| Rebuild the demo journal in |
Settings worth checking
Display timezone: the calendar groups trades by close time in this zone.
Broker server time: Auto handles "New York close" brokers (UTC+2 in winter, UTC+3 in summer). Choose Fixed if your broker's clock never changes.
Sessions: defined in UTC hours.
Revenge window, max trades per day, early-exit threshold: these tune the red flags.
My trading rules: Claude holds you to these in every review.
Your data lives in data/journal.db (SQLite) and data/screenshots/. Back up that folder and you've backed up your journal.
FAQ
Yes. It's MIT-licensed open source, with no subscription, trial or paywall. The AI coach uses the Claude plan you already have.
Yes. The EA reads the terminal's own account history, so it works with any broker or prop-firm account you can open in MetaTrader 5, on demo, live or challenge accounts. Hedging and netting accounts are both supported.
No. It only reads history and writes files to MT5's shared folder. The source is in mt5/TradeJournalSync.mq5.
Not yet. The EA is written in MQL5. An MQL4 version is on the roadmap, and contributions are welcome.
Everything stays on your computer in a local SQLite database. Nothing is uploaded. When you use the AI coach, Claude reads the journal through the local MCP server, on your own Claude account.
No. It works through Claude Desktop or Claude Code on your normal Claude plan.
Yes. Use "Log trade" in the web app, or just tell Claude about the trade.
That's the goal: an open-source trading journal you run yourself. It offers automatic MT5 import, a P&L calendar, a per-trade journal with screenshots, analytics and an AI coach, without a monthly fee.
Roadmap
MetaTrader 4 (MQL4) export EA
Light theme
CSV import from other platforms
Multi-currency account totals
Docker image
Ideas and pull requests are very welcome. See CONTRIBUTING.md.
Support the project
If this journal helps your trading, you can support its development with crypto ❤️
Asset | Network | Address |
USDT | Ethereum (ERC-20) |
|
USDT | Tron (TRC-20) |
|
ETH | Ethereum (ERC-20) |
|
Always double-check the network before sending: ERC-20 and TRC-20 are different networks. A ⭐ on GitHub also helps other traders find the project.
Contributing
Bug reports, feature ideas and pull requests are welcome. See CONTRIBUTING.md for the development setup (uv run pytest, npm run dev).
License and disclaimer
MIT © Syed Muhammad Ali Hassan Gillani.
This software is for journaling and education only. It is not financial advice, and trading carries a high risk of loss. MetaTrader is a trademark of MetaQuotes Ltd; Claude is a trademark of Anthropic. This project isn't affiliated with either.
Keywords: trading journal, MT5 trading journal, MetaTrader 5 journal, free trading journal, open source trading journal, forex trading journal, gold XAUUSD journal, trade log, trading diary, trading performance analytics, AI trading coach, Claude MCP, prop firm journal.
Available Tools
16 toolsannotate_tradeC
Add journal details (setup, emotions, mistakes, notes, rating) to a trade, usually one synced from MT5.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Appended to existing notes unless replace_notes is true | |
| setup | No | ||
| trade | No | Trade id, or "last" for the most recent trade (optionally narrowed by symbol/date) | last |
| rating | No | ||
| symbol | No | Instrument, e.g. EURUSD or XAUUSD (broker suffixes are ignored) | |
| on_date | No | Narrow 'last' to trades closed on this date | |
| emotions | No | Added to existing emotions unless replace_tags is true | |
| mistakes | No | Added to existing mistakes unless replace_tags is true | |
| replace_tags | No | ||
| followed_plan | No | ||
| replace_notes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It says nothing about merge-versus-overwrite behavior (append semantics live only in schema field descriptions), whether unknown trade IDs create records or error, what 'last' resolves to, or whether the write is idempotent — meaningful gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, which is good for scanning. It is arguably too terse for an 11-parameter tool, but nothing in it is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Eleven optional parameters, no annotations, and an output schema present, yet the description never explains the append-by-default semantics, the 'last' default for trade, or failure behavior — all load-bearing for correct invocation. It is under-specified 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 description merely re-lists field names (setup, emotions, mistakes, notes, rating) already present in the schema, and omits the trade selector, symbol/on_date narrowing, followed_plan, and both replace flags entirely. At 55% schema coverage those undocumented parameters get no help from either source.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — add journal details (setup, emotions, mistakes, notes, rating) to a trade — and hints at scope by noting the trade is 'usually one synced from MT5', which implicitly separates it from log_trade. It stops short of naming siblings explicitly, so an agent must infer the boundary with log_trade on its own.
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?
'Usually one synced from MT5' implies this is for enriching existing trades rather than creating them, which is useful context against log_trade. However, there is no explicit when-to-use/when-not guidance, no mention of what happens when the trade is not found, and no direction on when to prefer log_trade or get_trade first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_tradeB
Delete a manually logged trade (MT5 trades can't be deleted; they come back on sync).
| Name | Required | Description | Default |
|---|---|---|---|
| trade_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses that deleted MT5 trades reappear on sync, which is real behavioral context, but never states that deletion is irreversible, what happens to attached notes/feedback/tags, or whether any confirmation/permission is required for a destructive mutation.
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?
A single front-loaded sentence with the core action first and the scoping caveat in parentheses. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, and the MT5 caveat is helpful. But for a destructive, unannotated tool with an undocumented identifier parameter, the definition leaves gaps an agent would need filled before calling safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and there is one required parameter, trade_id, which the description does not explain at all — not its source, format, or whether it is the manual-trade identifier rather than an MT5 ticket. The description does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Delete a manually logged trade') and immediately narrows scope with the MT5 carve-out, which implicitly distinguishes it from sync_mt5 behavior. It never names a sibling explicitly, but the operation is 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?
It supplies an explicit exclusion ('MT5 trades can't be deleted') but offers no positive when-to-use criteria and no alternative for what an agent should do with MT5-sourced trades. Usage context is implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_tradesC
Search trades. Returns a compact list plus the total count.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | time, net_pnl, r_multiple, volume, holding; prefix - for descending | -time |
| limit | No | ||
| setup | No | ||
| period | No | Rolling window ending today. Ignored when date_from/date_to are given. | |
| source | No | ||
| status | No | all | |
| symbol | No | Instrument, e.g. EURUSD or XAUUSD (broker suffixes are ignored) | |
| date_to | No | End date (YYYY-MM-DD), inclusive | |
| emotion | No | ||
| mistake | No | ||
| outcome | No | ||
| date_from | No | Start date (YYYY-MM-DD), inclusive | |
| direction | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the safety profile, and 'Search' implies a read-only operation, which is reasonable. It also discloses the return shape (compact list plus total count), but does not explain whether limit truncates the list while total count reflects all matches, or how pagination beyond the first page works.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler, front-loaded with the core action. The return-shape sentence is mildly redundant given an output schema exists, but it costs little.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values needn't be detailed, but for a 13-parameter search tool with no annotations and thin schema descriptions, the definition is under-specified. Critical semantics such as list-vs-total behavior and filter interactions are left entirely unstated.
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 only 38% across 13 parameters, so the description should compensate, yet it mentions no parameters at all. It adds no meaning for the unenumerated filters (setup, emotion, mistake, source) or for how status/period interact with date_from/date_to.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search trades') that an agent can act on immediately. It does not distinguish itself from siblings like get_trade or get_performance, so the agent must infer that this returns a filtered list rather than a single record or an aggregate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no exclusions, and no routing among the 16 siblings. Nothing tells the agent to prefer get_trade for a known ID, get_performance for aggregates, or get_calendar for date-bucketed views.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_behavior_reportB
Behavioural red flags (revenge trading, overtrading, no/widened stops, early exits, sizing up after losses...) with cost.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Rolling window ending today. Ignored when date_from/date_to are given. | month |
| symbol | No | Instrument, e.g. EURUSD or XAUUSD (broker suffixes are ignored) | |
| date_to | No | End date (YYYY-MM-DD), inclusive | |
| date_from | No | Start date (YYYY-MM-DD), inclusive |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description bears the full burden; it does disclose the detection categories and that monetary cost accompanies them, which is useful context. However, it does not state that the operation is read-only, how flags are scored or thresholded, or how the period/date filters interact in practice.
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?
It is a single front-loaded sentence with no wasted clauses, and the most informative content (the specific flag categories) comes first. The trailing ellipsis and '...with cost' phrasing are slightly informal, but the definition is appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return structure need not be explained, and all four parameters are fully documented in the schema. What is missing is calling context: how this diagnostic report should be used relative to the sibling performance and coaching tools, and what the report fundamentally contains beyond a flag list.
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 period enums, symbol suffix handling, and date range precedence. The description adds no parameter meaning beyond that, 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 names a specific resource — behavioural red flags (revenge trading, overtrading, stops, early exits, sizing up after losses) — and adds that cost is reported. That is much more concrete than the tool name alone, though it never contrasts itself with siblings such as get_performance or get_coaching_context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It says nothing about when to call this versus get_performance, get_coaching_context, or find_trades, and gives no prerequisites or exclusions. The agent is left to infer that this is the diagnostic/behavioral counterpart to a plain performance report.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_calendarB
Daily P&L for a month (trading days only), weekly totals and the month summary.
| Name | Required | Description | Default |
|---|---|---|---|
| month | No | YYYY-MM, defaults to the current month |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description must carry the behavioral load itself. 'Daily P&L' and 'trading days only' imply a read-only report and disclose that non-trading days are excluded, but the description never states that it is side-effect free, what happens on empty months, or whether it's scoped to a user/account. Adequate but thin for a zero-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact line that front-loads the primary payload (daily P&L) before secondary aggregates. No wasted words, though the sentence fragment style leaves the read/query nature implicit.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values needn't be described, and the single parameter is fully documented in the schema. What remains missing is the read-only confirmation and any routing hint relative to the many sibling report tools, which matters given the crowded namespace.
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%, with the schema already documenting the YYYY-MM format and current-month default. The description adds nothing about the month parameter, so the baseline 3 applies even though the 'trading days only' note usefully frames how the month is interpreted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource ('calendar') and specifies the exact content returned: daily P&L per trading day, weekly totals, and a month summary. It doesn't explicitly contrast itself with get_performance or get_instrument_breakdown, but the output shape is distinct enough that an agent can identify it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus get_performance, get_instrument_breakdown, or get_coaching_context. The only usage hint is the implicit default month from the schema, so the agent must infer the triggering scenario (e.g., 'show me my daily P&L for March').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_coaching_contextA
Everything needed for a coaching review in one call: stats vs previous period, per-instrument verdicts and insights, breakdowns, behaviour flags, best/worst trades, journal notes, day notes, the user's trading rules and the previous report's action plan.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Rolling window ending today. Ignored when date_from/date_to are given. | week |
| symbol | No | Instrument, e.g. EURUSD or XAUUSD (broker suffixes are ignored) | |
| date_to | No | End date (YYYY-MM-DD), inclusive | |
| date_from | No | Start date (YYYY-MM-DD), inclusive |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden; it implies a read-only aggregate via 'Everything needed...' but never states it explicitly, nor does it mention cost/size of a fan-out call or whether anything is persisted. The period-ignored-over-date-range rule and broker-suffix normalization exist only in the schema, not the prose.
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?
One sentence, front-loaded with the value proposition before the content list. The itemized enumeration is dense but each element conveys distinct return content rather than filler; there is mild redundancy with the output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, yet the enumeration usefully signals breadth for selection purposes. With four optional params fully documented and no side effects implied, the main omission is any statement of read-only behavior or call weight, which matters for an aggregate fan-out tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all four optional params documented (defaults, date format, suffix handling), so the schema does the work. The description adds no param-level meaning beyond hinting that a comparison period is involved. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete composite deliverable ('everything needed for a coaching review in one call') and then enumerates the payload: stats vs previous period, per-instrument verdicts, breakdowns, behaviour flags, best/worst trades, notes, rules and prior action plan. That enumeration is what separates it from sibling aggregation tools like get_performance, get_instrument_breakdown and get_behavior_report. The verb is only implicit via the name, which keeps it out of the top band.
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?
'In one call' hints that this is the batch alternative to calling the individual breakdown/report tools, but the description never names those siblings or states when to prefer them. There are no exclusions, prerequisites, or guidance on period vs. explicit date ranges (which would matter since period is ignored when dates are supplied).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instrument_breakdownC
Per-instrument stats, verdict (edge/leaking/breakeven/unproven), best/worst sessions, insights and red flags.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Rolling window ending today. Ignored when date_from/date_to are given. | month |
| date_to | No | End date (YYYY-MM-DD), inclusive | |
| date_from | No | Start date (YYYY-MM-DD), inclusive |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it says nothing about read-only safety, side effects, or data requirements. It does disclose the analytical payload (verdict categories, red flags), which is useful, but it omits how verdicts are derived and whether the call is expensive or cached.
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 single sentence is compact and front-loads the key content categories with no filler. However, it is so terse that it reads as a label rather than a structured explanation, and the lack of a leading verb slightly weakens orientation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be explained, and parameters are fully documented. But with no annotations and no usage guidance, the definition is incomplete for distinguishing this analytical tool from overlapping siblings; an agent has no basis for choosing it over get_performance.
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% with three documented parameters, so the schema already explains the period window and date overrides. The description adds nothing about filtering semantics or default behavior beyond what the schema provides, making a 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 names the resource (per-instrument breakdown) and enumerates the output content (verdict, best/worst sessions, insights, red flags), so an agent can infer what it produces. But it is a noun-phrase fragment with no verb, and it does not distinguish the tool from siblings like get_performance or get_behavior_report, both of which plausibly overlap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives. The agent must guess whether to call this versus get_performance for instrument-level analysis. It also does not say whether it requires existing trade data or a minimum sample size for verdicts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_performanceC
Win rate, P&L, profit factor, expectancy, R, drawdown, streaks — optionally broken down by dimension.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Rolling window ending today. Ignored when date_from/date_to are given. | month |
| symbol | No | Instrument, e.g. EURUSD or XAUUSD (broker suffixes are ignored) | |
| date_to | No | End date (YYYY-MM-DD), inclusive | |
| group_by | No | Any of: instrument, direction, session, weekday, hour, setup, emotion, mistake, close_reason, hold, month, source | |
| date_from | No | Start date (YYYY-MM-DD), inclusive |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a read-only reporting operation through its metric list and 'get' name, but does not explicitly disclose read-only behavior, authentication requirements, scoping limits, or other behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence that front-loads the metrics returned. It is efficient, though its telegraphic style leaves some clarity on the table.
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 output schema exists and all five parameters are optional and fully documented in the schema, so the description is sufficient for invocation. However, with no annotations and no sibling differentiation, it does not fully establish when or why to choose this reporting tool over adjacent ones.
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 parameter meanings are already fully documented in the schema. The description adds only a high-level hint about optional dimensional breakdown corresponding to group_by, which is appropriate but not substantial 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 concretely lists the performance metrics returned (win rate, P&L, profit factor, expectancy, R, drawdown, streaks) and notes optional dimensional breakdowns. It is clear what the tool does, though it does not explicitly differentiate itself from siblings like get_instrument_breakdown or get_behavior_report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives no guidance on when to use this tool versus alternatives in the sibling set. The only usage hint is that results can be broken down by dimension, with no exclusions or selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tradeA
Full detail of one trade: prices, costs, R, MFE/MAE, deals, journal, and any behaviour flags it triggered.
| Name | Required | Description | Default |
|---|---|---|---|
| trade_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations at all, so the description carries the full behavioral burden; it discloses scope of returned data but never states that this is a read-only, side-effect-free lookup or what happens on a missing id. The enumeration of returned fields adds genuine context, but key operational traits are left implicit.
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?
A single front-loaded sentence with no filler; every listed item earns its place by telling the agent what payload to expect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't document return structure, and it still gives a useful content preview. It is nearly complete for a one-parameter read, missing only explicit read-only framing and not-found behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for trade_id, so the description must compensate; it only implies the parameter by saying 'one trade'. The meaning of trade_id is obvious enough in context but never spelled out (format, where to obtain it).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Full detail of one trade') and enumerates the exact content returned (prices, costs, R, MFE/MAE, deals, journal, behaviour flags). It is clearly a single-record fetch, implicitly distinct from find_trades, though no sibling is named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'One trade' implies you already have an identifier rather than searching, which is a reasonable usage signal. But there is no explicit when-to-use vs find_trades guidance, no preconditions, and no statement about behaviour when the id is invalid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tagsA
The user's setup, emotion and mistake vocabularies. Reuse these names when tagging.
| 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?
No annotations, so the description carries the burden; it implies a safe read but never says so, nor whether results are cached or user-scoped. For a zero-param read tool this is a modest gap, but it does clarify the three vocabulary categories returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero waste, with the resource identity front-loaded before the action guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and no parameters, the description only needs to say what the tool yields and how to use it — both are covered. It stops just short of tying itself to the tagging siblings by name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so baseline is 4; the description correctly adds no parameter noise and instead frames the content of the response.
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?
Names the specific resource it returns — the user's setup, emotion and mistake vocabularies — which is concrete and distinguishable from siblings like annotate_trade or log_trade. Lacks an explicit verb ("list"/"retrieve"), so it reads as a noun phrase rather than a clear action.
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?
"Reuse these names when tagging" implies this should be called before tagging operations such as annotate_trade, but it never names the sibling or states the condition explicitly. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
log_tradeA
Log a trade the user dictates that is NOT in MT5 (other broker, or not synced). Returns the trade and warnings.
| Name | Required | Description | Default |
|---|---|---|---|
| pnl | No | Money result before commission, if the user said it | |
| notes | No | ||
| setup | No | ||
| rating | No | Execution quality 1-5 | |
| symbol | Yes | Instrument, e.g. EURUSD | |
| volume | No | Lots | |
| emotions | No | ||
| mistakes | No | ||
| direction | Yes | long/buy or short/sell | |
| open_time | No | ISO datetime, e.g. 2026-10-26T09:30 (local time) | |
| stop_loss | No | ||
| close_time | No | ISO datetime (local time) | |
| commission | No | ||
| exit_price | No | Leave empty if the trade is still open | |
| entry_price | Yes | ||
| take_profit | No | ||
| followed_plan | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden, and it does disclose two real behaviors: the record is persisted and returned, and validation feedback comes back as "warnings." It does not say what triggers a warning (duplicate detection against MT5? inconsistent close time?), whether the write is reversible or editable, or that required fields must come from the user's dictation rather than being inferred.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler — the scoping condition is front-loaded and the return behavior is a compact second beat. Nothing here could be cut without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shape need not be explained, and the description correctly points at warnings. But for a 17-parameter mutation with no annotations, the definition says nothing about what happens on partial data, how the many optional trade-journal fields should be sourced from dictation, or what a warning implies for the caller.
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?
At 47% schema description coverage across 17 parameters, the description needs to compensate and adds nothing — no explanation of the journal metadata fields (setup, emotions, mistakes, followed_plan), the units for volume or stop_loss, or how pnl relates to entry/exit prices and commission. Only three parameters are documented in the schema at all, and the description mentions none of them.
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 (Log) and resource (a trade), plus a scope qualifier — trades the user dictates that are NOT in MT5, whether from another broker or unsynced. That qualifier alone separates it from the MT5-sync path and from annotate_trade/get_trade, so an agent can route without opening the schema.
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 negative condition "NOT in MT5 (other broker, or not synced)" plus "the user dictates" is a clear when-to-use signal. It stops short of naming the explicit alternative (sync_mt5) or stating what to do when a trade turns out to be in MT5, so it is not a full when/when-not/alternatives treatment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_ai_reportA
Save a coaching review so it shows in the web app (AI Coach page and each instrument's page). Every claim should be backed by numbers from the journal.
| Name | Required | Description | Default |
|---|---|---|---|
| report | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the downstream effect (the report becomes visible in the web app on two page types) and an authoring constraint, but says nothing about overwrite/upsert behavior, whether repeated saves duplicate, permissions, or limits on report size.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and its effect, then a single authoring constraint. Nothing redundant or padded.
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 write tool with no annotations, the description covers what happens and one quality rule, and an output schema exists so return values need not be explained. It is still thin on mutation semantics (create vs update), on how 'kind' relates to 'symbol'/'instruments', and on how the report content should be sourced.
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 single top-level parameter 'report' is undocumented in both the description and the schema, though nested fields carry their own descriptions. The description adds one meaningful content rule ('every claim should be backed by numbers from the journal') but no structural guidance about which sections to populate for which 'kind'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Save a coaching review') and adds the effect ('shows in the web app, AI Coach page and each instrument's page'), which is concrete. It does not explicitly differentiate from save_trade_feedback, the nearest sibling, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the visibility note (this is the way to surface a review in the app), and the 'backed by numbers' sentence hints at content expectations. There is no explicit when-to-use / when-not-to-use versus save_trade_feedback, and no prerequisite guidance such as whether a review must be generated first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_trade_feedbackB
Attach AI feedback to a single trade (shown on the trade's page).
| Name | Required | Description | Default |
|---|---|---|---|
| feedback | Yes | Coaching feedback on this trade | |
| trade_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a write operation but does not disclose whether existing feedback is overwritten, what permissions are required, or what happens if the trade_id is invalid. The note that feedback is shown on the trade's page is helpful but insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It immediately identifies the action, resource, and visibility scope.
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 two-parameter save tool with an output schema, the description covers the core action and display location. However, with no annotations and only 50% schema coverage, it leaves important behavioral details such as overwrite behavior, validation errors, and prerequisites unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: feedback has a schema description, while trade_id is undocumented but self-explanatory. The description adds some meaning by clarifying that the feedback is AI feedback attached to a single trade, but it does not explain format, length, or overwrite 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 states a specific verb and resource: attach AI feedback to a single trade. It also clarifies the effect is visible on the trade's page. It does not explicitly distinguish itself from sibling tools like annotate_trade or save_ai_report, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives such as annotate_trade, write_day_note, or save_ai_report. Usage is only weakly implied by the mention of AI feedback on a single trade, leaving the agent to infer the correct context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_trading_rulesB
Save the user's written trading rules; coaching reviews check behaviour against them.
| Name | Required | Description | Default |
|---|---|---|---|
| rules | Yes | The user's full trading plan/rules as text |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that the rules are later read by coaching reviews, which explains the persistence purpose. However, it omits whether saving replaces prior rules (overwrite vs append), whether a partial rules text is acceptable, and whether confirmation is needed.
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?
One sentence, zero filler, with the core action front-loaded and the rationale trailing. It is efficiently sized for a one-parameter tool, though the brevity leaves gaps that a second short clause could have closed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the single parameter is fully documented in the schema. What remains missing is behavioral: overwrite semantics and how the rules interact with the behavior/coaching reports. For a simple persistence tool this is adequate but not 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% with a single parameter already documented as 'The user's full trading plan/rules as text.' The description's phrasing ('written trading rules') adds no format, length, or completeness guidance beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: save the user's written trading rules. It also hints at downstream consumers (coaching reviews), which clarifies what the stored data is for. It doesn't distinguish itself from near-siblings like save_trade_feedback or save_ai_report, which also save user-authored text.
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: use when the user has written trading rules to persist. There is no explicit guidance on when to prefer this over save_trade_feedback or write_day_note, nor any precondition such as 'call only after the user has articulated a full plan.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sync_mt5B
Pull the latest trades from MT5 right now.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Re-read every file and rebuild all trades |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosure. It does not say whether the sync writes/overwrites local trade data, whether it is idempotent, how long it may take, or whether duplicates are created — significant gaps for a tool that mutates stored state.
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?
A single tight sentence with the action front-loaded and zero waste. It is efficient, though it borders on under-specification given the behavioral gaps.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be explained, and the parameter is fully documented. However, for a state-changing sync tool with no annotations, the description omits operational context an agent needs (source availability, side effects, duration).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single `force` parameter is already documented as 'Re-read every file and rebuild all trades'. The description adds no additional meaning about `force`, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Pull the latest trades from MT5') with temporal immediacy ('right now'), which distinguishes it from read-only siblings like find_trades and get_trade. It doesn't explicitly name those siblings, so an agent must infer the sync-vs-query distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Right now' implies the tool is for on-demand refresh, which hints at when to call it, but there is no explicit guidance on when to use this versus find_trades/get_trade, nor any stated preconditions (e.g., MT5 must be running) or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_day_noteB
Save the pre-session plan or post-session review for a day (text is appended to what is there).
| Name | Required | Description | Default |
|---|---|---|---|
| day | No | Defaults to today | |
| mood | No | One word, e.g. focused, tired, anxious | |
| rules_followed | No | ||
| pre_session_plan | No | ||
| post_session_review | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description usefully discloses that text is appended rather than overwritten, which is important mutation behavior for a tool with no annotations. It does not clarify whether mood or rules_followed are overwritten, what permissions are needed, or what the final note structure looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with the key append behavior front-loaded. Nothing is redundant, though it could be slightly more organized to cover the other note fields.
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?
A mutation tool with no annotations and five optional parameters needs more behavioral context than this. The append behavior for free text is covered and an output schema exists, but the roles of mood and rules_followed remain unclear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40%, so the description should compensate for undocumented parameters. It only indirectly references pre_session_plan and post_session_review, and says nothing about day defaulting to today, mood, or rules_followed.
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 and resource ('Save ... day note') and names the two main content fields, pre-session plan and post-session review. It is clear what operation is performed, though it does not explicitly distinguish itself from sibling save/log 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?
The mention of pre-session planning and post-session review implies when the tool is useful. However, there is no explicit guidance on when to choose this over other save tools (e.g., save_trade_feedback or save_ai_report), and no exclusions are stated.
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.
16 tool updates
v0.1.0- First observed
annotate_trade - First observed
delete_trade - First observed
find_trades - First observed
get_behavior_report - First observed
get_calendar - First observed
get_coaching_context - First observed
get_instrument_breakdown - First observed
get_performance - First observed
get_trade - First observed
list_tags - First observed
log_trade - First observed
save_ai_report - First observed
save_trade_feedback - First observed
set_trading_rules - First observed
sync_mt5 - First observed
write_day_note
TDQS
Scored across 16 tools
Most tools have clearly distinct resource+action targets: logging vs annotating vs deleting a trade, note writing, searching, single-trade detail, and various reporting dimensions. The main overlap is get_coaching_context, which bundles data also available via get_performance, get_instrument_breakdown, and get_behavior_report, so an agent might wonder when to use the bundle versus the individual reports. save_ai_report vs save_trade_feedback is also a mild boundary that descriptions mostly resolve (report vs per-trade feedback).
All names follow a consistent snake_case verb_noun pattern (log_trade, annotate_trade, delete_trade, get_performance, save_ai_report, sync_mt5, etc.). Verb choice is predictable and domain-appropriate, with no mixed conventions or cryptic abbreviations.
16 tools is slightly above the ideal 3-15 range but each appears to earn its place: core CRUD on trades, journaling, tagging, rules, and several targeted analytics views. The set is well-scoped for a trading journal rather than padded with redundant operations.
Core lifecycle is well covered: log/annotate/delete trades, sync MT5, day notes, rules, search/detail, and rich analytics plus coaching reports. Minor gaps exist: no way to edit a manually logged trade's core fields (only annotate or delete), no tag creation/management beyond list_tags, and no update operation for day notes or trading rules beyond overwrite/append.
Maintenance
Related MCP Connectors
MCP for Tradewink trading signals and watchlists. Not financial advice.
Trading journal with pattern detection: log trades by voice, query your own history.
Futures trading journal: performance, setups, prop-firm drawdown risk, tagging and screenshots.
Related MCP Servers
- ISC
- AlicenseNot gradedqualityCmaintenanceProvides AI-powered trading analytics and coaching by analyzing historical trades to identify strategies, emotional patterns, and behavioral mistakes via MCP tools.1MIT
- AlicenseAqualityDmaintenanceOfficial MCP Server for Indian Stock Market (NSE & BSE) equities, futures context, and option chains.6MIT
- AlicenseNot gradedqualityAmaintenanceProvides market intelligence tools for crypto, Korean market, US equities, options, and backtests, as well as personal trading journal access, through MCP.30 PyPIMIT