MCP Reference
The TradeWave MCP server exposes 17 tools (6 flagship + 11 primitives) for detected seasonal patterns, ML scoring, chart data, and the published daily-pick record. ChatGPT and Claude authorize a TradeWave account. Other developer clients can use OAuth when compatible or the developer bearer-authentication path. Access follows the account or developer credential used for the connection.
A research partner, not a black box. TradeWave supplies a seasonal + 62-feature-ML statistical edge and the timing only. It is blind to fundamentals, valuation, news, catalysts, macro/rates, analyst views, earnings dates, and the live price. It is designed to pair with the assistant's own web, news, and reasoning tools: TradeWave gives the seasonal/ML edge, the assistant extends it with fundamentals/news/macro, and the two synthesize one view. Every card carries a research hand-off, and the describe_tradewave tool self-documents the method. Tools use progressive disclosure - a one-line decision by default, full receipts / the Trend Chart data on request.
Seasonal patterns only. The same contract as the REST API applies. No raw prices or OHLCV data is ever returned. Seasonal tools are available to every connected plan. ML access follows the credential used to connect: TradeWave-account connections use web-plan entitlements, while developer-key connections use API-plan quotas. If ML is unavailable or its daily allowance is spent, the tool returns a graceful stub instead of failing.
Flagship tools
Start here. These six do the synthesis for you - rank, explain, brief, and compare seasonal setups in one call.
The workhorse. Scans one or more markets and returns the strongest seasonal setups right now as ranked decision cards - headline, direction, edge score, entry window, and a research hand-off. Use when the user asks what to trade or when to enter.
Inputs: markets (plural - a list or CSV of market ids/names), window (e.g. "now"), direction (long | short), min_win_rate, min_years, min_days, max_days, min_avg_return, min_median_return, min_sharpe, pe_cycle, years, min_winning_years, rank_by, limit, view
Maps to: GET /v1/scan
Deep-dives one named ticker - the best current seasonal setup plus alternative setups, full receipts, and a ready-to-place ticket. Use when the user asks about a specific symbol.
Inputs: symbol (required), market, direction, days_out, entry_date, pe_cycle, years, period, reverse, view, include_chart
Maps to: GET /v1/analyze/{symbol}
Returns today's AI daily pick as a full Pattern Card WITH its live, forward-tested track record - the strongest proof TradeWave can offer (the pick is made in advance, then scored later). Use when the user asks for "today's pick", "the trade of the day", or wants to see proof the seasonal patterns work before trusting them.
Inputs: none
Maps to: GET /v1/daily-pick
The one-call morning briefing: today's daily pick (decision view), the live forward-tested track-record summary with the last five outcomes, and the top setups entering their seasonal window now. Use on "good morning", "my briefing", or any open-ended start-of-day prompt. Sections degrade gracefully - a partial briefing beats no briefing.
Inputs: none
Maps to: GET /v1/daily-pick + GET /v1/daily-pick/track-record + GET /v1/scan (composed, fetched in parallel)
The zero-input starting point. Returns what is seasonally in play right now across the caller's in-scope markets - a fast "what should I be looking at today" overview.
Inputs: none required (optional markets (plural), min_win_rate, view)
Maps to: GET /v1/scan with window=now
Puts two or more setups side by side on the same yardstick - edge score, win rate, Sharpe, avg/median return, ML basis - so the assistant can reason about which is stronger. Use when the user is choosing between candidates.
Inputs: symbols (required, a list of ticker symbols, e.g. ["GLD", "SLV", "GDX"]), market (optional, applied to every symbol), view
Maps to: GET /v1/analyze/{symbol} (per symbol)
Primitive tools
Lower-level building blocks for clients that want to compose their own flow.
Returns the 15 active TradeWave markets and which are within the caller's tier scope. Use this to discover what markets are available before fetching opportunities.
Inputs: none
Maps to: GET /v1/markets
Reports the caller's identity and entitlements as resolved from the authenticated TradeWave account or developer key - plan, in-scope markets, ML allowance, and remaining quota. Use it after connecting to confirm what the current connection can access.
Inputs: none
Maps to: GET /v1/me
Self-documents the method: what TradeWave measures (seasonal + 62-feature ML), what it is blind to (fundamentals, news, macro, live price), and how the assistant should pair it with its own research tools. Call this once so the model frames TradeWave correctly as a research partner.
Inputs: none
Maps to: static method description
Lists the tradeable symbols in a market.
Inputs: market (market id, e.g. "2")
Maps to: GET /v1/markets/{market_id}/symbols
Find the best seasonal trade setups for a market and date window, ranked by historical edge. Use when the user asks what to trade, when to enter, or which symbols have a strong seasonal tendency.
Inputs: market (required), from, to, direction (long | short), min_win_rate (0-1), limit
Returns: ranked list - symbol, direction, entry date, holding period, Sharpe ratio, avg/median return %, win rate. ML fields are included only when the connected TradeWave account or developer key has ML access and the market is ML-eligible (ids 0-4, 11); otherwise they are null.
Maps to: GET /v1/opportunities
A security's top seasonal patterns throughout the year, ranked by Sharpe ratio - the list the wave viewer shows in its pattern dropdown. Coverage: per-symbol patterns exist for market ids 0, 1, 2, 7, and 9 only (DOW 30, NASDAQ 100, S&P 500, Futures & Commodities, FOREX Liquid); any other market returns a clear error - use find_best_opportunities to scan those instead.
Inputs: symbol (required), market (required), pe_cycle, years, min_winning_years, min_days, max_days, min_avg_return, min_sharpe
Maps to: GET /v1/securities/{symbol}/patterns
Returns aggregate seasonal pattern statistics for a symbol - win rate, average/median profit, Sharpe ratio, and related percentages. No price series is returned.
Inputs: market (required), symbol (required), pe_cycle, years, period, reverse
Maps to: GET /v1/patterns/{market_id}/{symbol}
Returns The Trend Chart DATA (not an image) for a seasonal setup - a single year-averaged, normalized 0-100 seasonal index curve (seasonal_curve, one {date, index} point per day). It is the typical within-year shape (where it rises, peaks, fades), NOT per-year cumulative price paths, and the index is never a price. Agents can reason over the shape. Raw prices are intentionally not exposed.
Inputs: market (required), symbol (required), entry_date, days_out, direction, years, pe_cycle, period, reverse
Maps to: GET /v1/seasonal-chart
Runs the ML model on a list of opportunities and returns ml_score, win_prob, pred_return, and pred_mfe for each. Availability and daily allowance follow the connected TradeWave account's web plan or the developer key's API plan. If ML is unavailable or the daily allowance is spent, the response returns a graceful upgrade stub instead of failing.
Inputs: list of {symbol, date, days_out, direction}
Maps to: POST /v1/score
Returns today's ML-selected featured opportunity. The daily pick is the top ML-scored setup published each morning before market open.
Inputs: none
Maps to: GET /v1/daily-pick
Returns the verifiable, time-stamped win/loss record of all past daily picks - this is the live, forward-tested track_record.win_rate, distinct from the seasonal historical_win_rate and the per-instance ml_win_prob. Use this to show the AI's historical performance to the user.
Inputs: none
Maps to: GET /v1/daily-pick/track-record
Connecting to MCP clients
Client setup screens change independently of the MCP protocol. Use the TradeWave MCP setup guide for the current, numbered ChatGPT and Claude instructions and a connection test.
- ChatGPT, Claude.ai, and Claude Desktop: add
https://mcp.tradewave.ai, complete the TradeWave sign-in flow, and enable TradeWave in the conversation. - Other clients: use the remote Streamable HTTP connection with OAuth when the client supports it. If the client cannot complete OAuth, use the developer-key fallback below.
Developer-key fallback for other clients
This fallback is only for developer clients that cannot complete TradeWave sign-in. ChatGPT and Claude users should follow the setup guide above.
- Create a TradeWave developer API key.
- Configure the MCP server as
https://mcp.tradewave.aiand sendAuthorization: Bearer <your-key>if the client supports headers. - If the client only supports local stdio servers, run
mcp-remoteas the bridge:
npx -y mcp-remote https://mcp.tradewave.ai \
--header "Authorization: Bearer <your-key>"
Keep the key in the client's secure configuration. Do not paste it into a chat message.
Tier behavior in MCP
OAuth consumer connections mirror the TradeWave web subscription:
- Explorer: Dow 30, 10 results per call, no permanent ML scores. An active signup trial receives Strategist scope until the same seven-day cutoff.
- Navigator: Dow 30, NASDAQ 100, and S&P 500, 25 results per call, no permanent ML scores. The first MCP connection receives one seven-day Analyst-scope teaser.
- Analyst: all U.S. stock groups plus ETFs, 100 results per call, 100 ML scores/day.
- Strategist: all 15 markets, 500 results per call, unlimited ML scores on eligible U.S. stock and ETF markets.
BYOK connections follow the standalone REST API ladder:
- Free: S&P 500 stocks only, 3 results per call, 5 ML scores/day.
- Dev: 6 U.S. stock and ETF markets, 100 ML scores/day.
- Pro/Business: all 15 markets, unlimited ML scores on eligible markets.
score_opportunitiesscores up to the daily allowance and returnsml_remaining_today. When the daily limit is already spent it returns a graceful{"requires":"upgrade","reason":"ml_daily_limit"}stub - the agent can surface this to the user without crashing.