Trading journal with pattern detection: log trades by voice, query your own history.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Connect TradeOnyx to Claude, ChatGPT, Gemini or any other MCP-capable assistant. Log trades by voice, have the assistant read your journal back to you, and let it ground its answers in your actual trading history instead of guessing.
TradeOnyx is a trading journal with pattern detection: it imports trades from 40 brokers and runs 28 detectors over your own history to surface what repeats in your trading. This repository documents its MCP server. It contains no product code.
49 tools Β· JSON-RPC 2.0 over HTTP Β· hosted in Germany
Transport is HTTP with JSON-RPC 2.0. Authentication is a Bearer token in the
Authorization header. The server implements initialize, tools/list and
tools/call, and speaks protocol version 2025-06-18.
An unauthenticated call answers honestly rather than hanging:
Tokens carry 256 bits of entropy. Treat one like a password: it grants the same access to your journal that you have.
Any client that speaks MCP over HTTP works. For a client configured through a JSON file, the shape is:
Assistants that support remote MCP connectors directly (Claude's Connectors, for example) can add the endpoint through their own UI, including an OAuth flow, so no token needs to be pasted by hand.
A few things people actually use it for:
49 tools. 45 need an active connector trial, Pro or Pro Plus; the 4 bulk aggregations need Pro Plus. The Plan column below says which.
Daily tool-call caps, counted per UTC day and shown in the app:
| Plan | Calls per day |
|---|---|
| 7-day trial | 30 |
| Pro | 150 |
| Pro Plus | 2000 |
A call over the cap comes back as a normal tool result with isError: true,
naming the cap and when it resets, so an assistant can say what happened
instead of failing silently. It is HTTP 200: a cap is a business rule, not a
malformed request, and the specification's own worked example of a tool
execution error is an upstream rate limit.
Two levels, and which one you get tells you whether the fix is in your arguments or in the data:
-32602 and
data.code = "invalid_arguments". That covers an unknown tool, an argument
name the tool does not accept, a value outside a declared enum, and a
value past a declared maxLength / maxItems / maximum. Everything in
that list is declared in the inputSchema you already hold, so a client
can correct it without asking.isError: true and a
message in content: a row that does not exist, a value the database will
not store, a plan that does not include the tool, the daily cap.Both are HTTP 200, because the transport requires exactly one JSON object per request. Values past a declared bound are refused, not shortened: a 5000 character note is rejected with the limit named rather than stored as its first 2000 characters, so what you keep is what you sent.
| Tool | Plan | Description |
|---|---|---|
account_list | Trial / Pro | List the user's trading accounts (id / name / type / is_active / FIFO-vs-LIFO). The is_active flag points at the dashboard's active account, which... |
settings_get | Trial / Pro | Read the account-level limits the discipline checks and the weekly digest enforce: capital, risk per trade, daily and weekly loss limits, monthly goal, whether overnight positions are allowed, timezone. Percentages come back as percentages plus risk_per_trade_amount in the account currency. Read-only: these cannot be changed through the connector, and risk_per_trade on the strategy tools is a per-strategy annotation that does not move this budget. |
| Tool | Plan | Description |
|---|---|---|
attachment_upload_link_create | Trial / Pro | Mint a single-use, 10-minute-TTL browser-upload link for a screenshot. Use this when the user shares an image blob you cannot encode or URL β commo... |
| Tool | Plan | Description |
|---|---|---|
broker_sync_trigger | Trial / Pro | Manually trigger a sync on an existing broker connection (Bybit, Alpaca, Binance, etc.). Pulls latest fills, FIFO-pairs Buy/Sell legs, persists rou... |
| Tool | Plan | Description |
|---|---|---|
briefing_get | Trial / Pro | Read the cached daily AI briefing for a market category (gbpusd, eurusd, forex, general, crypto). Returns {briefing: null} if no briefing has b... |
| Tool | Plan | Description |
|---|---|---|
econ_analysis_get | Trial / Pro | Read the cached AI analysis for one economic-calendar event by event_id. Returns {analysis: null} when no AI run exists for the event. Includes... |
econ_analysis_list | Trial / Pro | List recent cached economic-event AI analyses, newest first. Optional symbol filters by case-insensitive substring on pairs_affected. Returns u... |
| Tool | Plan | Description |
|---|---|---|
journal_attachment_list | Trial / Pro | List every screenshot attached to one of the user's journal entries. Returns id, public URL, caption, mime type and uploaded_at for each attachment. |
journal_attachment_upload | Trial / Pro | Attach a screenshot to one of the user's journal entries. PREFERRED PATHS (in priority order): 1. If the user shared an HTTPS URL of the image (Tra... |
journal_entry_get | Trial / Pro | Read the journal entry for a specific date (or null if none). |
journal_entry_list | Pro Plus | List journal entries within a date range. Pro Plus only. |
journal_entry_search | Trial / Pro | Search the user's own journal entries by words or phrases. Multiple words are ANDed; wrap a phrase in double quotes to match it in order. Searches... |
journal_entry_upsert | Trial / Pro | Create or update the journal entry for a date. Required: date (YYYY-MM-DD). Pass any subset of the six markdown sections β others are left unchange... |
journal_planned_playbook_clear | Trial / Pro | Drop every planned-playbook for a calendar day. Idempotent β returns removed_count=0 if nothing was planned. Returns journal_id=null if the... |
journal_planned_playbook_set | Trial / Pro | Set the morning-plan playbooks for a calendar day. Replaces the existing set atomically β idempotent on re-call. Creates the JournalEntry if one do... |
| Tool | Plan | Description |
|---|---|---|
market_heat_get | Trial / Pro | Read the cached AI market-heat read (hot / neutral / cold) for a category and date. Companion to briefing_get β heat reads the calendar pressure (h... |
| Tool | Plan | Description |
|---|---|---|
news_analysis_get | Trial / Pro | Read the cached AI analysis for one news headline by news_id. The analysis cache is global (shared across users), so you may see analyses written b... |
news_analysis_list | Trial / Pro | List recent cached news analyses, newest first. Optional symbol filters by case-insensitive substring on the pairs_affected column (e.g. 'EURUS... |
| Tool | Plan | Description |
|---|---|---|
pattern_narrative_get | Trial / Pro | Read the weekly cross-pattern Onyx-Engine AI narrative for the caller. One artefact per (user, ISO-week); the cache rotates automatically on Monday... |
pattern_recos_get | Trial / Pro | Read the weekly cross-detector action-recos for the caller. Sister of pattern_narrative_get β same cache rotation, but the output is a strict list... |
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/tradeonyx)<a href="https://allmcps.com/mcp/tradeonyx"><img src="https://allmcps.com/api/badge/tradeonyx?style=directory" alt="TradeOnyx on AllMCPs" /></a>