Bring live markets and Wiz into your AI chat.
Public tools work before sign-in: live markets, Market Track, macro mood, movers, Wiz bot reads, ranked opportunities, and the Wiz bots' paper results. OAuth starts only when you request account data or a private capability.
Choose your AI client
Install Wiz once. The same connector starts with public tools and adapts to your Starter, Pro, or Ultimate account after OAuth.
Choose your AI client
Wiz by TradingWizard in ChatGPT
Use live markets, macro mood, Market Track, movers, global bot reads, ranked opportunities, and Bot Fund performance without signing in. Connect your TradingWizard account only for private features; access follows your Free, Pro, or Ultimate plan.
- Public market tools while logged out
- OAuth for private account features
- Free, Pro and Ultimate access by plan
Trading involves risk. Bots trade a Demo account with simulated money. Real-money execution is not available to users.
Open Plugins
In ChatGPT Settings, open Apps & Connectors, choose Advanced settings, enable Developer mode, then open Plugins.
Add Wiz
Select the plus button, name it Wiz by TradingWizard, and paste the endpoint.
Ask a public question
Use the test prompt below. ChatGPT asks you to sign in only for your own bots, portfolio, or alerts.
https://www.tradingwizard.ai/api/mcp
Use Wiz by TradingWizard: what is moving right now, why, and which Wiz bots are closest to a trade?
One Wiz, four access levels
Signed out
- 10 public read-only tools
- Macro mood and Market Track
- Wiz bots and their paper results
Starter
- 20 tools in total
- Personal bots and timelines
- Scanner and strategy reads
Pro
- 67 tools in total
- Portfolio, alerts, and watchlists
- Supported paper controls
Ultimate
- All 71 Wiz tools
- Signals and deeper analysis
- Ultimate bot capabilities
What is MCP?
Model Context Protocol lets an AI client call approved tools from an external service. The Wiz endpoint is mixed-auth: public market and Wiz bot reads need no account, while private account tools trigger OAuth on the same connection.
https://www.tradingwizard.ai/api/mcpExample prompts
- “Use Wiz by TradingWizard: what is moving right now, why, and which Wiz bots are closest to a trade?”
- “Use Wiz by TradingWizard. What changed in Market Track today, and what do the Wiz bots think?”
- “Use Wiz by TradingWizard. Which Wiz bots are waiting right now, and what are they waiting for?”
- “Use TradingWizard to summarize my open paper positions and alerts. Do not change anything.”
Wiz tool reference
The catalog below is generated directly from the live MCP specification. It includes 71 current tools, plan access, and whether each tool reads or writes.
Browse all 71 toolsOpenClose
Account
get_accountFetch the authenticated TradingWizard user's plan tier, credit balance and daily-API usage. Use this to check whether a feature is gated before calling other tools.
get_creditsCheck the agent budget: remaining credits, plan, and how many of today's API requests are left before the daily rate limit. Call this to self-monitor before running a batch of tools.
get_memoryThe durable facts Wiz has learned about the signed-in user in their ACTIVE workspace (trading style, risk appetite, focus markets, decisions, lessons). Use to personalise answers or for 'what does Wiz remember about me'. Read-only and scoped to the user's own workspace.
Bots
get_botsList the user's personal trading bots. Optional `symbol` filter (e.g. "BTC" or "BTCUSDT") narrows to one symbol. Returns bot status, current bias/score, recent P&L, win-rate and last/next scan timestamps, plus `asOf` (when the server read the list), `limit` (the cap applied) and `truncated` (true when the account holds more bots than were returned — say so instead of treating the list as complete).
get_bot_timelineThe bot's merged activity timeline, newest first — the engine stream a human sees on the bot page: scan receipts (state, plain-language reason, plus verdict + trade-likelihood when present), life events (deploy, config_change and other lifecycle steps with their plain-language reason), and trade opens/closes (side, entry/exit, and realized pnlPercent on closes). `limit` caps rows (default 20, max 50); the web app has the full paginated view. Access matches the bot page: a private bot is visible only to its owner; a global fleet bot is public. A feature_run is private to the user who ran it and the bot owner. Setup levels (entry/stop/target/rrr and the level-bearing reasons) are included only for the owner, Pro+ callers, or fleet admins — stripped otherwise.
get_bot_one_statusRead the current public, paper-mode Bot One snapshot: market, timeframe, latest view and reason, level-free paper-position summary, and tracked paper results.
get_strategiesThe strategy lenses a bot can run — the six modules (Wiz plus five named technical lenses: Elliott Wave, Fibonacci, Cycle, MACD, MA Cross) with a plain-language description, the inputs each leans on, and the module it degrades to. Each carries an HONEST track record from real closed trades: status is 'proven' (with avgPnlPct + tradeCount), 'new' (no number yet — the lens hasn't earned one), or 'unproven' (a thin outlier we won't advertise). A lens changes what the analyst WEIGHS, never the odds — there is no fabricated per-strategy P&L. Pass a strategy id into deploy_bot or edit_bot to run a bot on that lens.
deploy_botDeploy a new autonomous trading bot for a symbol. ⚠️ PAID: deploying kicks off an AI scan (consumes Gemini compute + 1 credit; the first bot is free on Free plan). Ultimate-only via the agent API. Respects plan bot-limits. Paper mode by default. timeframe/risk default to the user's settings. strategyId selects the analysis lens (default Wiz — call get_strategies for ids); language sets the bot's output language.
set_bot_stateControl a bot by id: pause, resume, delete, or scan. pause/resume/delete are free; delete closes any open positions and restores follower balances. scan queues an immediate re-scan (⚠️ PAID Gemini compute) and is Ultimate-only + rate-limited — it runs on the next cron tick, not inline.
edit_botEdit a personal bot's BEHAVIOUR config in place. `botId` is required; pass ONLY the fields you want to change (each optional). strategyId — a lens id from get_strategies (wiz | elliott | fibonacci | cycle | macd | macross) or an alias (breakout | meanreversion | vwap, which resolve). riskLevel — Low | Medium | High. timeframe — 1m, 5m, 15m, 30m, 1H, 2H, 4H, 1D, 1W. thinkingEffort — auto | low | medium | high. language — auto, en, sv, de, es, fr, nl, zh, hi. customPrompt — free-text strategy instructions (≤500 chars; empty string clears them). tradeSizing — small | standard | large: the paper trade-size band (small ≈ half, large ≈ double the standard position size), applied from the next trade. Every REAL change writes a permanent config_change event to the bot's timeline (see get_bot_timeline) and takes effect from the bot's next scan; a no-op save changes nothing. A bot's symbol/market/asset are FIXED — deploy a new bot for a different market. Owner-only; timeframe can't change while a trade is open. Returns the fields that changed plus the reloaded bot.
list_proposalsThe caller's PENDING confirm-mode trade proposals — own only, freshest first. A bot in 'Ask me first' mode (executionMode: confirm) writes a proposal on an ENTER verdict INSTEAD of opening the trade; this is your decide queue. Each row carries the proposal id (pass to approve_trade / decline_trade), the bot + symbol + side, the staked setup (entry zone, stop, target — your own bot, so levels are always shown), the trade-likelihood score, the plain-language reason, and when it expires. Lapsed proposals are hidden. Approve opens the SAME paper trade the bot would have on auto (re-validated against the live price); pass records the honest road-not-taken. Nothing ever auto-approves.
approve_tradeApprove a PENDING confirm-mode proposal by id (from list_proposals). Re-validates against the LIVE price and, only if the market still sits in the staked entry zone, opens the SAME PAPER trade the bot would have opened on auto — through the identical executor path, no real money. A market that moved out of the zone expires the proposal ('this setup has moved') and opens nothing; an already-decided/expired/superseded proposal returns the honest per-status message. Exits stay automatic (SL/TP). There is NO auto-approve — a proposal only opens by this explicit call.
decline_tradePass on a PENDING confirm-mode proposal by id (from list_proposals). Records the honest 'You passed on this setup' on the bot timeline and opens nothing. Declining an already-resolved proposal returns the honest per-status message.
list_packsList the packs this user can see: the Wiz preset packs and any pack they made. Each carries its name, bot count, symbols, the combined result of its CLOSED paper trades over the window, and whether their Demo (paper) account copies its trades (the followed field). A pack with no closed trades reports no figure rather than zero. Paper only; the tool is unavailable while the feature is off.
get_packOne pack in full: its name, its bots with symbol, market and timeframe, the combined result of its CLOSED paper trades, and whether the user's Demo (paper) account copies its trades (the followed field). Get pack ids from list_packs. Paper only.
suggest_pack_nameSuggest three names for a pack, from the markets, timeframes and symbols in it. Pass packId for an existing pack or botIds for a set the user is about to group. Names only: nothing is created and nothing is renamed, the user picks one. Always answers with three names.
create_packMake a pack: a named group of the user's own bots and Wiz bots. A bot may sit in several packs. Making a pack changes no trading on its own: a pack takes effect only once the account copies its trades (follow_pack). How many packs an account may hold depends on its subscription plan.
follow_packCopy one pack's trades to the user's Demo account (PAPER money). The product calls this Copy trades; the tool keeps the name follow_pack, and following a pack means copying its trades. It is not following a bot, which is alerts only and places nothing. Every trade these bots open is then placed on their Demo account at sizeUsd and closed when the bot closes. For a pack the user made, their own bots outside it stand down; a Wiz pack leaves their own bots running. An account copies one pack at a time, so copying a second replaces the first. Positions that are already open are left to finish on their own. Paper only; there is no live option.
unfollow_packStop copying trades from the pack the user's Demo account copies (PAPER money). The product calls this Stop copying; the tool keeps the name unfollow_pack. The pack's bots stop trading on the account and any bots the pack paused come back. Positions that are already open are left to finish on their own. Takes no arguments: an account copies one pack at a time. Paper only.
get_global_botsBrowse a level-free snapshot of the public TradingWizard AI bot fleet: symbols, current bias, AI confidence, trade-likelihood and paper track record. Optionally filter by symbol.
follow_botFollow a GLOBAL fleet bot so the user is told about every trade it takes — its entry, stop, target and result, as a percentage. Nothing is opened in the user's account. `action` selects follow | unfollow. Get bot ids from get_global_bots.
get_fund_performanceVerified paper-results index of the Wiz bots (simulated money, not a fund), based at 100 across every verified global master bot. The current index level combines realized return from closed positions with mark-to-market unrealized return from open positions, weighting every bot equally at its real position exposure. Returns the canonical Total / Closed / Open percentages, 7d / 30d / all index-ratio periods, completeness and mark-freshness metadata, and complete verified series points. Percentages only: no currency values, account identifiers, trade identifiers, or GlobalPerformance fallback. `period`: 7d | 30d | all (default 30d).
Trades
get_tradesFetch the user's recent trades. `status` selects OPEN, CLOSED or PENDING (default: all three). `limit` caps the result count (default 25, max 100). Most recent first.
get_positions_liveMark-to-market view of all OPEN positions, marked to the current price (vs get_trades, whose pnl is a stored snapshot). Returns a tradeId per row plus the current price, the P&L and P&L % at that price, and the row's mode (paper = demo money), so an agent can monitor position health and decide what to close or modify. Paper positions are never called live. Includes a totalLivePnl across positions (the field names keep the word live for compatibility; it means marked now, not real money). `pendingOpenings` lists orders that are with the broker and are NOT positions yet: report them separately using each row's `line`, never as holdings, and never state a size or price for one beyond its confirmed values. When `pendingOpeningsUnavailable` is true the broker orders could not be read: say so, and never say none are outstanding.
Market data
get_market_priceFetch the current live price for a single stock, crypto, forex, futures, or index symbol. The asset class is inferred when `type` is omitted.
get_market_summaryUse this when the user asks about the current macro market picture. Returns crypto and stock Fear & Greed, altcoin season, BTC dominance, VIX, the US 10Y yield and daily change, market regime, AI signal, top movers and fleet sentiment. Every unavailable metric is null, and freshness metadata shows whether the four-hour macro ingest is healthy, stale or unknown.
get_marketsUse this when the user wants to browse or compare a market list instead of looking up one ticker. Returns the same real asset universe and live quote fields used by /wiz/markets for Top 100, crypto, stocks, ETFs, forex, indices or futures. Results are capped at 50 and missing prices stay null.
get_market_trackLatest TradingWizard Market Track events: price spikes, regime changes and AI calls with significance, sentiment and a short explanation. Optionally filter by symbols, market type or significance.
get_market_moversLatest verified public statements from influential market-movers (Trump, Elon, Powell, Cathie Wood, Saylor, Cramer…) that could move a stock, crypto or sector — with the affected ticker, sentiment, a 'how likely to move' score, the source, and how far the asset has moved SINCE the statement. Optionally filter by symbols.
get_us_filing_intelligenceWhat changed for ONE US stock or ETF in SEC filings: insider buying and selling (Form 4), recent company filings (8-K), and quarter over quarter institutional position changes (13F). Returns a short "what changed" list where every claim names the filing it came from, plus each part in its own envelope with provider, publication date, fetch date and freshness. Any part we could not check says so and is listed in `gaps`; it never comes back as "no activity". US stocks and ETFs only, because it reads SEC filings: crypto, currency pairs, futures, indices and non-US listings are refused with a reason rather than returned empty. Public-domain SEC EDGAR data. Ultimate plan only. Educational, read-only, and it never places a trade.
get_scannerCross-asset event scanner. `kind` selects "earnings" (upcoming earnings calendar, synced daily), "ipo" (upcoming IPOs by date, with a live fallback feed), "insider" (recent insider transactions from SEC Form 4 filings across a curated large-cap universe) or "all" (default). Sections with no data return empty arrays.
Analysis
get_chart_analysisFetch the most recent AI chart analysis for a symbol — verdict, confidence, entry/SL/TP levels, headline reasoning. Returns null when no analysis has been run yet. For a FRESH analysis, call run_analysis.
get_trade_setupGet a structured trade SETUP for a symbol BEFORE execution — bias (BUY/SELL/WAIT), entry zone, stop / invalidation, targets, confidence, risk:reward, reasoning, and warnings. The call idempotently creates or updates a private setup receipt for the authenticated user and returns its receiptUrl when available (it opens for the owner, and for others only after the owner shares it). It never places a trade. Educational only — no profit guarantee.
get_signalsTop trade signals across the global bot fleet right now — symbols where the AI conviction is highest. Use this when the user asks "what should I look at" without a specific ticker. Ultimate plan only.
get_bot_consensusHow the global bot fleet is currently biased on a symbol — a fast macro signal to validate or challenge your own conviction without running a fresh analysis. Returns bullish/bearish/neutral counts, the net consensus, and a confidence %.
run_analysisTrigger a FRESH AI chart analysis for a symbol on demand (vs get_chart_analysis, which only returns the cached one). ⚠️ PAID: runs the Gemini engine (consumes a credit + Gemini compute). Ultimate-only via the agent API. Synchronous — can take up to ~2 min; if your client times out, the analysis still completes (recover it with get_analysis_status or get_chart_analysis). After it completes, call get_trade_setup for the structured setup.
get_analysis_statusCheck a chart analysis by analysisId, or the latest for a symbol — returns its status (processing/completed/failed) and the full analysis when ready. Use to poll a run_analysis that your client may have timed out on.
get_ranked_opportunitiesThe live public scanner board: symbols the global AI bot fleet is watching, ranked by trade-likelihood. Returns symbol, bias, likelihood, confidence, fleet coverage and scan freshness without actionable price levels.
watch_setupStart watching a setup receipt so TradingWizard tracks its outcome — target hit, stopped out, or invalidated — and alerts the user when it resolves. Pass the receiptId (the 24-char id inside get_trade_setup's receiptUrl, /r/<id>) or the receiptUrl itself. This closes the loop on get_trade_setup: fetch the setup, act (or not), then watch how the call plays out. Plan-capped concurrent watches (Free 1 / Pro 10 / Ultimate unlimited).
Portfolio
get_portfolioSnapshot of the user's portfolio — total equity, virtual cash balance, open exposure, win-rate, daily and all-time P&L, and per-holding AI verdicts.
get_watchlistList the user's watchlists — saved symbol groups (name, icon, symbols, default flag). Use this to discover which symbols the user cares about before scanning or analysing.
get_holdingsList the user's imported Portfolio holdings — the real assets they track (symbol, quantity, average cost, currency, horizon, broker source). NOT the paper account: use get_portfolio for paper equity and positions. Holdings are analysis context only; Wiz never trades them.
add_portfolio_holdingsAdd holdings to the user's Portfolio: each row needs `symbol` and a non-zero `quantity`; optional avgCost, currency (default USD), assetType, assetName, horizon (default position). Upserts by symbol, so re-adding a manual symbol updates it. Confirm the rows with the user before calling — this edits their real portfolio record. Caps: 100 rows per call, 250 holdings total. Wiz never trades holdings.
update_portfolio_holdingUpdate one Portfolio holding's quantity, avgCost, horizon, or assetType. Identify it by `id` (from get_holdings) or by `symbol` when unambiguous. Synced holdings (connected venues) are read-only and refuse edits. Confirm the change with the user before calling.
remove_portfolio_holdingRemove one holding from the user's Portfolio, by `id` (from get_holdings) or by `symbol` when unambiguous. This deletes the row — confirm with the user before calling. Synced holdings (connected venues) cannot be removed here.
get_performance_statsThe user's own trading analytics over a window of CLOSED trades — win rate, profit factor, expectancy per trade, average and largest win/loss, total realized P&L, and max drawdown of the realized equity curve. `days` sets the window (default 90, max 365, 0 = all-time) — use days=30 for monthly stats. Optional `source` filter: paper | bot | live | imported. Use for "what's my win rate", "how did I trade this month", "am I profitable".
Alerts
get_alertsList the user's price/indicator alerts. Optional `symbol` filter. Shows condition, target value, timeframe, delivery channels and active state.
create_price_alertCreate a price, indicator, or Wiz Swing Rank alert for a symbol. Conditions: price_above, price_below, rsi_above, rsi_below, rsi_oversold, rsi_overbought, ma_cross_above, ma_cross_below, swing_rank_reaches, volume_spike. Swing Rank is Pro/Ultimate and needs `value` 1-3. Delivery defaults to in-app + email. Plan-capped (Free 3 / Pro 10 / Ultimate unlimited) and rate-limited. Notifications only — does NOT auto-trade.
update_alertUpdate an existing alert by id — change its value, condition, timeframe, delivery, cooldown, or pause/resume it via `active`. Re-activating respects the plan cap.
delete_alertDelete an alert by id. Frees a slot against the plan cap.
Watchlist
add_to_watchlistAdd a symbol to a watchlist. Targets the list by `listId` or `listName`, else the user's default list. Idempotent (no duplicates).
remove_from_watchlistRemove a symbol from a watchlist (by listId/listName, else the default list).
create_watchlistCreate a new watchlist with an optional name, icon (emoji) and starting symbols. Plan-capped (Free 3 / Pro 10 / Ultimate unlimited).
delete_watchlistDelete a watchlist by id. If it was the default, the oldest remaining list is promoted to default.
Execution
execute_paper_tradeOpen a PAPER (simulated) market trade — no real money. Fills at the live market price (you cannot set the entry; a >2% move or no feed is rejected, like a real broker). Deducts from the virtual balance. Provide an optional analysisId to attribute the trade to a chart analysis. Free across plans; paper only.
close_positionClose an OPEN paper position by tradeId (get the id from get_positions_live). Closes at the live price. Pass partialPercent (0-100) to scale out; omit for a full close. A position a bot or a Pack runs closes in full only, so a partialPercent on it is refused. Bot positions also settle followers. Closing a bot's own decision record adds nothing to virtualBalance: that record never used any of it.
modify_positionEdit the stop-loss, take-profit(s) or trailing-stop on an OPEN paper position by tradeId. A level is set when present, cleared with null, untouched when omitted. New levels are validated against the live price (you can move a stop to break-even+ but not set one that would trigger immediately).
place_limit_orderPlace a PAPER (simulated) LIMIT order at YOUR exact entry price — the execution counterpart to get_trade_setup's entryZone (execute_paper_trade is market-only). A BUY limit below / SELL limit above the live price waits until price reaches the level (funds are reserved up-front, Binance-style); a limit already at/past the live price fills immediately at market and the response says so. Optional stop/target are validated for side and sane distance (a dropped-k typo like "BTC at 107" is rejected with a units hint). Cancel an unfilled order with cancel_pending_order. Paper only — no real money.
cancel_pending_orderCancel one of the user's PENDING (unfilled) paper limit orders by tradeId and refund the funds reserved at placement. Find pending orders via get_trades with status=PENDING. Has no effect on OPEN positions — use close_position for those.
list_recurring_buysList the user's recurring buys: asset, demo dollars per run, how often, what the budget has left, status, and when the next buy is due. Paper only. Returns an empty list for an account with none. Only available where recurring buys are switched on.
create_recurring_buySet up a schedule that buys a set amount of ONE asset with the user's DEMO money, daily, weekly or monthly, through the ordinary paper order engine. It is not a bot: it reads nothing and decides nothing, it buys the amount on the day or reports why it did not. An optional budget finishes the plan once it is spent. How many plans an account may hold depends on its subscription plan. Paper only; there is no live option. Only available where recurring buys are switched on.
pause_recurring_buyPause one of the user's recurring buys, or resume a paused one with resume=true. A paused plan buys nothing and keeps everything it has already bought. Find plan ids with list_recurring_buys. Paper only. Only available where recurring buys are switched on.
stop_recurring_buyStop one of the user's recurring buys for good. Stopping is FINAL and cannot be resumed; the buys it already made stay in the user's ledger. Use pause_recurring_buy when they may want it back. Paper only. Only available where recurring buys are switched on.
list_dca_botsList the user's DCA bots: asset, demo dollars per buy, how often, how many buys so far, status, and when the next buy is due. Paper only. Returns an empty list for an account with none. Only available where DCA bots are switched on.
create_dca_botSet up a DCA bot that buys a set amount of ONE asset with the user's DEMO money every day, week or month, through the ordinary paper order engine, exactly as the app's DCA sheet does. It makes no prediction: it buys on the day or reports why it did not. An optional totalBuys stops it after that many buys. It counts against the plan's bot limit. Paper only; there is no live option. Only available where DCA bots are switched on.
pause_dca_botPause one of the user's DCA bots, or resume a paused one with resume=true. A paused bot buys nothing; a resumed one starts from the next slot and never catches up on missed buys. Find bot ids with list_dca_bots. Paper only. Only available where DCA bots are switched on.
stop_dca_botStop one of the user's DCA bots for good. Stopping is FINAL and cannot be resumed; the buys it made stay in the user's ledger and nothing is sold. Use pause_dca_bot when they may want it back. Paper only. Only available where DCA bots are switched on.
list_grid_botsList the user's grid bots: asset, price range, steps, demo dollars per step, budget cap, how much is committed now, completed round trips and their realised result, and status. Paper only. Returns an empty list for an account with none. Only available where grid bots are switched on.
create_grid_botSet up a grid bot exactly as the app's grid sheet does: a price range on ONE US-dollar-priced asset cut into steps, with one PAPER limit buy on each step below the market and a take-profit one step above it, using the user's DEMO money. spacing is arithmetic (even steps, the default) or geometric (percentage steps); maxTotalUsd caps what is in the market at once and defaults to every step. It counts against the plan's bot limit and its waiting-order allowance. Paper only; there is no live option. Only available where grid bots are switched on.
pause_grid_botPause one of the user's grid bots, or resume a paused one with resume=true. Pausing cancels its waiting buy orders first; positions it holds keep their take-profit and nothing is sold. Find bot ids with list_grid_bots. Paper only. Only available where grid bots are switched on.
stop_grid_botStop one of the user's grid bots for good. Its waiting buys are cancelled and it cannot be resumed; positions it already holds keep their take-profit and nothing is sold. Use pause_grid_bot when they may want it back. Paper only. Only available where grid bots are switched on.
Advanced fallback
OAuth is the normal setup. Use an API key only when an older or generic MCP client cannot complete OAuth. Keep the key out of project files and source control.
Show CLI and API key fallbackOpenClose
TradingWizard CLI
Node 18+ is required. Setup opens browser authorization and configures supported local clients.
npm install -g @tradingwizard/cli wiz setup
Raw HTTP check
Copy the API key only from Settings → TradingWizard Agent. If it is ever exposed, write to us from Settings → Help and we rotate it.
curl -X POST https://www.tradingwizard.ai/api/mcp \
-H "Authorization: Bearer <YOUR_API_KEY>" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Ready to connect Wiz?
Open Wiz settings to manage OAuth access and advanced fallback credentials.
Every bot is a paper bot with demo money. Nothing here places a real order.
Create my free bot