BroTrades developer & agent resources
Machine-readable endpoints published by BroTrades, and how to use them.
Endpoints
- /llms.txttext/plain
What the product is, when an agent should use it, and the main public pages.
- /sitemap.xmlapplication/xml
Every public URL, with last-modified dates.
- /robots.txttext/plain
Crawl rules, including a named allow-list for AI crawlers.
- /md/text/markdown
The markdown twin of any public page. Also served on the normal URL when the request sends Accept: text/markdown.
- /developerstext/html
This index.
- /mcpMCP (Streamable HTTP)
Remote MCP server for a signed-in user's OWN journal. OAuth 2.1 bearer required; the user approves each assistant and can revoke it in Settings.
- /.well-known/oauth-protected-resource/mcpapplication/json
RFC 9728 metadata for /mcp: the resource identifier and its authorization server.
Content negotiation
Core public pages have a markdown twin. Ask for it either way:
curl -H "Accept: text/markdown" https://brotrades.com/pricing curl https://brotrades.com/md/pricing
Both answer Content-Type: text/markdown; charset=utf-8 and Vary: Accept. HTML pages advertise their twin with an RFC 8288 link header.
There is no public REST API
BroTrades does not publish a REST API, an OpenAPI document or webhooks. Everything public is a page, the sitemap, or one of the files above. This is stated plainly so an agent does not spend requests probing for endpoints that do not exist.
MCP server for a user's own journal
https://brotrades.com/mcp is a remote MCP server (Streamable HTTP, stateless) that serves one thing: the journal of the user who connected it. Add it as a connector in ChatGPT or Claude; the assistant sends you to BroTrades to sign in and approve it.
- Auth: OAuth 2.1 with PKCE through BroTrades's Supabase Auth (dynamic client registration supported). An unauthenticated request gets
401withWWW-Authenticatepointing at/.well-known/oauth-protected-resource/mcp. - Clients: ChatGPT and Claude, and no others. The consent screen approves only their official OAuth callbacks; any other client is declined — including local tools that redirect to
localhost, such as Claude Code or the MCP Inspector. - Access: an approved assistant can read your trades and statistics and add trades to your journal. It can never place, close or change orders on an exchange, see your exchange API keys, or move money.
- Revocation: Settings → Connected assistants. A revoked assistant is refused within a minute.
- Limits: 60 tool calls a minute and 20 writes an hour per user (a logged trade or an imported statement); ChatGPT's composer @-mention search has its own 30 a minute.
- Journal home:
journal_homecomes with an interactive card (an MCP App, served asui://brotrades/home.v1.htmlbehind the same bearer): P&L per currency, one candle per day, win rate, R and the latest trades. It fetches nothing itself; its period switch calls the tool again through the assistant. In ChatGPT it is also an app in the sidebar. - Statement import:
preview_importreads a broker statement you share — an attachment, a file opened with BroTrades in ChatGPT (served asui://brotrades/import.v1.html), or pasted text — and writes nothing. Only you import it, with the card's button (confirm_import, which the model is not shown). At most 3 MB per statement in chat; a TradingView backtest goes to the Backtesting page instead. - Log a trade:
log_trade_previewshows a trade you describe on a card (served asui://brotrades/log-trade.v1.html) with its R:R, the money at risk and your TradingView snapshot, and writes nothing. It refuses a target on the wrong side of entry, warns about a stop at or past entry (a trailed stop) but still lets you confirm it, and says if you logged the same trade in the last 10 minutes. Only the card's Confirm button saves it, throughlog_tradeand the assistant's own approval prompt. - @-mentions: in ChatGPT Desktop, typing after @BroTrades in the composer searches your trades (
search_mentions) and attaches one as abrotrades://trades/<id>link; reading it is aget_tradecall.
- get_stats (read)
Stats of closed live trades for a period (default: last 30 days).
- list_trades (read)
Trades, newest first, filtered by date, symbol, side or outcome; at most 50 per page.
- get_trade (read)
One trade by id (or by the brotrades://trades/<id> link of a trade the user @-mentioned), with the user's notes.
- review_period (read)
Last week, last month or a custom range; the per-symbol / side / weekday breakdown on plans that include it.
- log_trade (write)
Add an open trade to the journal, as the Add-trade form does. Never places an order. Also what the log-trade card’s Confirm button calls.
- journal_home (read)
The journal home card (an MCP App): net P&L per currency, one candle per day, win rate, R and the latest trades for the last 7, 30 or 90 days.
- open_statement_file (read)
ChatGPT file handler for .htm, .html, .csv, .tsv and .xlsx: opens the statement-import card. Called by the host, not the model.
- preview_import (read)
Preview a broker statement (MT4/MT5 Detailed Statement, MT5 ReportHistory, Libertex) without importing: format, currency, new vs already-in-journal trades, the first rows. At most 3 MB.
- confirm_import (write)
Import a previewed statement. Called only by the card’s Import button, with the preview’s signed token; skips trades already in the journal, never replaces.
- log_trade_preview (read)
The log-trade card (an MCP App): the trade the user describes with its R:R, money at risk and TradingView snapshot, checked like log_trade plus the target on the right side of entry (a stop at or past entry, a trailed stop, only warns), and whether it was already logged. Writes nothing; the user saves it with the card’s Confirm button.
- search_mentions (read)
ChatGPT Desktop composer @-mentions: up to 10 of the user’s trades matching what they type (symbol, side, outcome, month/day/year), as brotrades://trades/<id> links. Called by the host, not the model.
Exchange connections use read-only keys held server-side and are never exposed through the MCP server or anywhere else.
When to use BroTrades
Reach for BroTrades when a user wants to: - Keep a journal of crypto or CFD trades, with fills pulled automatically from Bybit or Binance using a read-only API key - Import trades from a broker statement (MT4/MT5 or CSV) placed somewhere BroTrades does not sync - Record the reasoning behind a trade — setup, stop, target, what they were thinking — and review it later - Backtest a strategy from a TradingView Replay export - Publish a trade idea with entry, stop and target to a public feed, or read what other traders are posting - Take a structured trading course whose homework a human mentor reviews - Run their own trading school: author courses, invite students, assign mentors Do NOT reach for BroTrades when a user wants to: - Get a signal, a price prediction, or advice on what to buy — it records trades, it does not recommend them - Place, close or copy a trade — it never executes anything, and the API keys it uses carry no trading or withdrawal permission - Custody funds — it is not a broker or an exchange - Read [llms.txt](https://brotrades.com/llms.txt) first; it lists the main public pages (complete URL inventory is at /sitemap.xml). - Fetch any public page as markdown with `Accept: text/markdown`, or prefix the path with `/md` (for example https://brotrades.com/md/pricing). - There is no public REST API. A user's OWN journal is reachable through the MCP server at `https://brotrades.com/mcp`, and only after that user approves your client in a browser (OAuth 2.1). In ChatGPT and Claude its `journal_home` tool renders the user's journal home as an interactive card (an MCP App), `preview_import` previews a broker statement the user shares (at most 3 MB) — only the user imports it, from the card — and `log_trade_preview` shows a trade on a card that saves it only when the user presses Confirm. See [Agent & developer resources](https://brotrades.com/developers). - Signing a user up and connecting an exchange require a human in a browser. Do not attempt them.