GWTRADEDeveloper documentationDownload spec ↓

GWTRADE / Client features

Feature API

Read-only market analytics, research and your own trading data through the feature tools available in Connect AI.

MCP endpoint https://gwtrade.app/mcp
Last reviewed

Getting started

Read market analytics through the same read-only feature tools available in Connect AI. Start with market_brief for an overview, then use a focused tool for details.

Connect

In the desktop app, open Settings → Connect AI to connect a supported AI client. For your own code, create an MCP key in the Advanced section and keep it in your environment. An MCP key is different from your desktop sign-in token.

Endpoint: https://gwtrade.app/mcp. Code examples use Authorization: Bearer with your MCP key. AI clients that support sign-in can use their normal connection flow.

Discover available features

tools/list returns the tools available to your membership on the connected service, with their current input schemas. Features can vary with data availability. Use those schemas for supported values, defaults and limits.

export MCP_KEY='YOUR_MCP_KEY'
curl --fail-with-body --silent --show-error 'https://gwtrade.app/mcp' \
  -H "Authorization: Bearer $MCP_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

The feature catalog below describes inputs and the information you receive. These tools read analytics; they do not place trades or modify your account.

Examples

Call a feature with tools/call, its name, and an arguments object. Keep keys in your own environment. The documentation page does not send requests on your behalf.

Futures quote · curl

curl --fail-with-body --silent --show-error 'https://gwtrade.app/mcp' \
  -H "Authorization: Bearer $MCP_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_quote","arguments":{"symbol":"ES"}}}'

Market brief · Python

Set MCP_KEY in your environment first. This uses Python's standard library:

import json
import os
from urllib.request import Request, urlopen

request = Request(
    "https://gwtrade.app/mcp",
    data=json.dumps({
        "jsonrpc": "2.0", "id": 3, "method": "tools/call",
        "params": {"name": "market_brief", "arguments": {"symbol": "NQ"}}
    }).encode(),
    headers={
        "Authorization": "Bearer " + os.environ["MCP_KEY"],
        "Content-Type": "application/json",
        "Accept": "application/json, text/event-stream"
    },
)
with urlopen(request, timeout=45) as response:
    print(json.load(response))

Headlines · JavaScript

Node.js 22+, with MCP_KEY in the environment:

const response = await fetch("https://gwtrade.app/mcp", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.MCP_KEY}`,
    "Content-Type": "application/json",
    Accept: "application/json, text/event-stream",
  },
  body: JSON.stringify({
    jsonrpc: "2.0", id: 4, method: "tools/call",
    params: { name: "get_headlines", arguments: { limit: 5 } },
  }),
  signal: AbortSignal.timeout(45_000),
});
if (!response.ok) throw new Error(`${response.status}: ${await response.text()}`);
const reply = await response.json();
if (reply.error || reply.result?.isError) throw new Error(JSON.stringify(reply));
console.log(reply.result.content);

More feature calls

Use one of these as the JSON body of a tools/call request:

{"jsonrpc":"2.0","id":5,"method":"tools/call","params":{"name":"get_gex_levels","arguments":{"symbol":"NQ","category":"zero"}}}
{"jsonrpc":"2.0","id":6,"method":"tools/call","params":{"name":"get_wheel_candidates","arguments":{"strategy":"CSP","profile":"balanced","limit":5}}}
{"jsonrpc":"2.0","id":7,"method":"tools/call","params":{"name":"get_my_trades","arguments":{"period":"week","limit":10}}}

Using results

Reading a result

Successful calls return MCP content blocks. Feature results are JSON encoded inside a text block. Check isError before treating that text as analytics. A protocol error can appear in the top-level error field.

as_of and data_age_sec describe the observation's freshness. A result can represent the last session when markets are closed. Follow the tool's notes, units and missing-value indicators; a missing value is not zero. A truncated result contains a reduced list or text.

Symbols and dates

Use discovery tools such as list_gex_symbols, search_option_symbols, search_sentiment_symbols and get_scenario_instruments to choose supported instruments. Futures tools commonly accept ES and NQ; some options tools map them to their index. Follow each tool's returned notes and input schema. Date strings are usually YYYY-MM-DD; the schema identifies the applicable session and timezone.

Errors and retries

An invalid or revoked key returns HTTP 401; expired access can return 403. For 429, wait for Retry-After. A tool can instead return isError for an invalid argument, unavailable data or a feature warming up. Follow the error's instructions and use bounded retry backoff.

Personal data

get_my_trades and get_my_trading_stats use the member attached to your connection. They return your own account data. Community leaderboard results are public summaries; positioning is anonymous and appears only for markets with at least three participating members.

Market overview

Inputs below are optional unless marked required. Use tools/list for the current input schema.

market_brief

A combined market read: price, session range, gamma levels, structure, major events and headlines.

Inputs: symbol (string)

Quotes & liquidity

Inputs below are optional unless marked required. Use tools/list for the current input schema.

get_quote

Latest futures price, bid/ask, spread and the last minute of buy/sell trade flow.

Inputs: symbol (string)

get_order_book_summary

Resting liquidity, book imbalance, the largest bid/ask walls and recent pull/stack activity.

Inputs: depth (integer, 5–200, default 20), pull_stack_seconds (integer, 10–300, default 60), symbol (string)

get_book_depth_history

How bid/ask depth and imbalance changed through the futures session.

Inputs: bucket_min (integer, 5, 15, 30 or 60, default 15), hours (integer, 0–24, default 0 = since the 18:00 New York open), symbol (string)

get_liquidity_levels

Prices where large resting orders persisted, with size, duration and distance from the current market.

Inputs: hours (integer, 0–168, default 0 = since the session open), min_minutes (integer, 1–1440, default 15), symbol (string), top (integer, 1–25, default 10)

get_session_ohlc

Session, overnight and regular-hours open/high/low/last, plus session and regular-hours VWAP.

Inputs: symbol (string), vwap_path (boolean, default False)

get_desk_levels

The ES or NQ Desk’s key levels and session VWAP in futures points, with distance from price.

Inputs: symbol (string)

Dealer gamma & Greeks

Inputs below are optional unless marked required. Use tools/list for the current input schema.

list_gex_symbols

Available dealer-gamma symbols and expiry categories. Use this before choosing a symbol.

Inputs: None.

get_gex_levels

Dealer gamma levels, zero gamma and the strongest call/put strikes for the selected expiry category.

Inputs: category (zero|one|full, default zero), date (string), strikes (integer, 1–25, default 8), symbol (string, default NQ_NDX)

get_gex_greeks

Per-strike gamma, delta, vanna, charm and volume; optionally the expiry’s implied-volatility smile.

Inputs: expiry (zero|one|latest|next, default zero), include_iv (boolean, default False), metric (all|volume|delta|gamma|vanna|charm, default all), strikes (integer, 1–25, default 8), symbol (string, default NQ_NDX)

get_gex_greeks_history

How one dealer greek changed per strike during a selected session.

Inputs: day (string), expiry (zero|one|latest|next, default zero), metric (volume|delta|gamma|vanna|charm, default gamma), step_min (integer, 1–60, default 15), strikes (integer, 1–15, default 6), symbol (string, default NQ_NDX)

get_gex_ranked_levels

Ranked gamma and net-open-interest levels, with optional paths showing how the levels moved during the session.

Inputs: step_min (integer, 1–60, default 15), symbol (string, default NQ; NQ / NDX → NQ_NDX, ES / SPX → ES_SPX, QQQ), trails (boolean, default True)

get_gex_orderflow

Dealer greek orderflow: gamma, convexity, vanna, charm and aggregate delta exposure.

Inputs: symbol (string, default NQ_NDX)

get_options_flow_gamma

Trade-based dealer gamma by strike: the hot strike, positive/negative totals and expiry breakdown.

Inputs: symbol (string, default SPX; ES → SPX, NQ → NDX), top (integer, 1–25, default 8)

get_daily_gamma_index

Daily 0DTE call/put gamma, the net-to-total gamma index and delta exposure for SPX, NDX, SPY or QQQ.

Inputs: date (string: YYYY-MM-DD, New York, within the last 30 days; default today), symbol (string, default SPX; NDX, SPY, QQQ; ES → SPX, NQ → NDX)

SPX gamma map

Inputs below are optional unless marked required. Use tools/list for the current input schema.

get_gamma_map_dates

Available SPX participant groups, current market date and selectable forward sessions.

Inputs: None.

get_gamma_levels

Daily SPX call/put walls, zero/max gamma and other key dealer-gamma levels.

Inputs: None.

get_gamma_surface

A summary of the SPX gamma, charm or delta-pressure surface for a participant group.

Inputs: actor (mm|bd|procust|cust|firm, default mm), date (string, default today), greek (gamma|charm|delta, default gamma), levels_n (integer, 3–25, default 10)

get_net_gex_by_strike

Intraday 0DTE SPX gamma exposure by strike near spot for a participant group.

Inputs: actor (mm|bd|procust|cust|firm, default mm), top_n (integer, 1–25, default 8)

get_net_gex_timeline

The selected participant group’s total 0DTE SPX gamma exposure through today’s session.

Inputs: actor (mm|bd|procust|cust|firm, default mm), step_min (integer, 1–60, default 10)

get_net_oi_by_strike

Market makers’ net 0DTE SPX open interest near spot, split into call and put legs.

Inputs: strikes (integer, 3–25, default 10)

get_gamma_condors

Iron-condor-shaped positions inferred from same-day SPX open interest.

Inputs: None.

Options & key levels

Inputs below are optional unless marked required. Use tools/list for the current input schema.

get_0dte_chain

Same-day-expiry option chain, ATM volatility and nearby strikes, live or at a selected session minute.

Inputs: at (string), date (string), strikes (integer, 1–30, default 10), ticker (string, default SPX), top (integer, 1–15, default 5)

get_0dte_volume

Same-day-expiry call/put volume by strike, live or at a selected session minute.

Inputs: at (string), date (string), strikes (integer, 1–30, default 10), ticker (string, default SPX), top (integer, 1–15, default 5)

get_gex_confluence

Cross-asset gamma-wall confluence across SPX, NDX, QQQ and SPY.

Inputs: at (string), date (string)

get_gex_walls

0DTE call wall, put wall and gamma flip, with distance from price.

Inputs: date (string), ticker (string, default SPX)

get_options_key_levels

Daily call/put/hedge walls, key gamma/delta strikes and the implied one-day move, with distance from spot.

Inputs: symbol (string, default SPX)

search_option_symbols

Find supported option symbols by prefix, including their last price and exercise style.

Inputs: limit (integer, 1–25, default 10), query required (string)

get_iv_term_structure

ATM implied volatility across expirations, including 30-/90-day IV and term-structure shape.

Inputs: points (integer, 4–40, default 12), symbol (string, default SPX)

Options flow

Inputs below are optional unless marked required. Use tools/list for the current input schema.

get_large_options_flow

Large 0DTE option trades filtered by ticker, premium, side, moneyness, sweeps and spreads.

Inputs: date (string), hide_spreads (boolean, default False), limit (integer, 1–30, default 10), min_premium (number, 0–1000000000), moneyness (any|otm|near2|near1, default any), side (all|bought|sold, default all), sweeps_only (boolean, default False), ticker (string, default SPX)

get_options_delta_flow

Intraday options delta flow for the selected supported symbol.

Inputs: symbol (string, default SPX)

get_flow_alerts

Recent options-flow alerts, including positive/negative surges and closing activity.

Inputs: top (integer, 1–30, default 10)

get_options_tape_analytics

A summary of options-print imbalance, directional flow and the most significant prints.

Inputs: symbol (string, default SPX), top (integer, 1–15, default 5)

Dark pool activity

Inputs below are optional unless marked required. Use tools/list for the current input schema.

get_dark_pool_levels

The largest clustered off-exchange levels from the last three QQQ/SPY sessions.

Inputs: symbol (string), top (integer, 1–10, default 10)

get_dark_pool_history

Off-exchange levels across a chosen historical session window.

Inputs: date (string), sessions (integer, 1–20, default 3), symbol (string, default QQQ), top (integer, 1–20, default 10)

get_dark_pool_activity

When QQQ/SPY off-exchange activity occurred, with notional totals and the busiest intervals.

Inputs: date (string), hours (regular|extended, default regular), interval (5m|15m, default 5m), symbol (string, default QQQ), top (integer, 1–20, default 5)

get_dark_pool_blocks

The largest and most recent QQQ/SPY off-exchange prints of at least $5 million.

Inputs: date (string), min_usd (number, at least 5,000,000, default 5,000,000), symbol (string, default QQQ), top (integer, 1–50, default 10)

News & research

Inputs below are optional unless marked required. Use tools/list for the current input schema.

get_headlines

Latest market headlines, with timestamps and age, optionally filtered by words.

Inputs: limit (integer, 1–100, default 20), query (string)

search_news_articles

Search full news articles by text, ticker, sentiment, topic and recency.

Inputs: limit (integer, 1–50, default 20), query (string), sentiment (any|bull|bear, default any), since_hours (integer, 1 to the retention in hours), tickers (list), topics (list)

get_news_article

Read an article by its ID, including text, tickers, sentiment and topics.

Inputs: id required (integer)

get_news_impact

SPX’s five-minute price reaction after today’s headlines matching selected keywords.

Inputs: keywords (list), limit (integer, 1–50, default 15)

get_market_summary

The latest options-market research summary, trading context and key levels.

Inputs: limit (integer, 1–5, default 1)

get_release_brief

Pre-release and follow-up reads of major economic events, including actual/forecast/previous values.

Inputs: day (string: today or YYYY-MM-DD, New York), include_x_posts (boolean, default False), limit (integer, 1–10, default 3), when (all|recent|upcoming, default all)

Calendar & trading hours

Inputs below are optional unless marked required. Use tools/list for the current input schema.

get_economic_calendar

Scheduled economic releases and earnings, filtered by country, days and importance.

Inputs: country (string), days (integer, 0–14, default 2), earnings (boolean, default True), min_importance (high|medium|all, default medium)

get_market_status

Current regular-session state of NYSE, Nasdaq and the London Stock Exchange.

Inputs: None.

get_session_hours

An exchange’s session times on a selected date and its next trading dates.

Inputs: date (string), market (nyse|nasdaq|lse, default nyse), next (integer, 0–20, default 5)

get_market_holidays

Exchange holidays and special hours within a date range.

Inputs: from (string), limit (integer, 1–200, default 50), markets (string, default core), status (closed|early_close|all, default all), to (string)

list_exchanges

Find exchanges covered by the trading calendar.

Inputs: query (string)

Structure & auction

Inputs below are optional unless marked required. Use tools/list for the current input schema.

get_market_structure

Top-down ES/NQ price structure, bias, trend, key levels and primary scenario across timeframes.

Inputs: symbol (string, default NQ; ES, SPX and SPY → ES, NDX and QQQ → NQ)

get_stock_structure

Top-down stock/ETF price structure across 4-hour, 1-hour, 30-minute and 15-minute bars.

Inputs: symbol required (string)

get_market_auction

ES/NQ volume and TPO profiles, value areas, auction context and nearby key levels.

Inputs: days (integer, 0–60, default 0), history (integer, 0–20, default 0), symbol (string, default NQ; ES, SPX and SPY → ES, NDX and QQQ → NQ)

get_market_stability

SPX’s short-horizon stability gauge based on dealer gamma positioning.

Inputs: None.

Sentiment & rotation

Inputs below are optional unless marked required. Use tools/list for the current input schema.

get_options_sentiment

Options sentiment for selected tickers, including IV rank and risk-reversal rank.

Inputs: lookback (integer, 0–30, default 5), symbols (list)

get_options_sentiment_history

Daily options-sentiment readings over the chosen lookback.

Inputs: lookback (integer, 1–30, default 20), symbols (list)

list_sector_groups

Available sectors and sub-industries, with group IDs and member counts.

Inputs: kind (sector|sub_industry|all, default sector), query (string)

scan_sector_sentiment

Rank a sector or sub-industry by IV rank, risk reversal, volatility spread or skew.

Inputs: group required (string), limit (integer, 1–30, default 15), order (desc|asc, default desc), sort_by (iv_rank|rr_rank|iv_minus_rv|call_skew|put_skew, default iv_rank)

search_sentiment_symbols

Find tickers by ticker prefix or company name for sentiment analysis.

Inputs: indexes_only (boolean, default False), limit (integer, 1–25, default 10), query required (string)

get_rrg_quadrants

Relative strength and momentum versus a benchmark, including each symbol’s rotation quadrant.

Inputs: benchmark (string), period (daily|weekly|monthly, default weekly), symbols (list)

Scenarios

Inputs below are optional unless marked required. Use tools/list for the current input schema.

get_scenario_instruments

Instruments and historical date coverage available for scenario analysis.

Inputs: None.

get_scenario_odds

Historical-analog probabilities and expected ranges over the selected horizon.

Inputs: anchor (close|open, default close), asof (string), horizon (1, 5, 10 or 20 sessions; default 1), lookback (integer, 60–2500, default 1260), matches (integer, 5–300, default 100), method (regime|recent|weekday, default regime), symbol (string)

get_scenario_analogs

The historical matching windows behind a scenario, with returns and price excursions.

Inputs: anchor (close|open, default close), asof (string), horizon (1, 5, 10 or 20 sessions; default 1), lookback (integer, 60–2500, default 1260), matches (integer, 5–300, default 100), method (regime|recent|weekday, default regime), symbol (string), top (integer, 1–30, default 10)

get_scenario_levels

Statistical range levels across 1-, 5-, 10- and 20-session horizons.

Inputs: anchor (close|open, default close), symbol (string)

Wheel candidates

Inputs below are optional unless marked required. Use tools/list for the current input schema.

get_wheel_candidates

Cash-secured-put or covered-call candidates for a chosen risk profile and earnings policy.

Inputs: limit (integer, 1–30, default 10), policy (advisory|exclude_known_events|require_checked_window|context_score, default advisory), profile (conservative|balanced|aggressive, default balanced), strategy (CSP|CC, default CSP)

get_wheel_detail

One ticker’s wheel candidates, volatility, trend, support/resistance and event context.

Inputs: policy (advisory|exclude_known_events|require_checked_window|context_score, default advisory), symbol required (string)

Company relationships

Inputs below are optional unless marked required. Use tools/list for the current input schema.

get_supply_chain

A company’s profile and its customers, suppliers and other business relationships.

Inputs: per_role (integer, 1–25, default 10), ticker (string)

search_companies

Find companies in the business-relationships dataset by ticker or name.

Inputs: limit (integer, 1–25, default 10), query required (string)

My trades & community

Your personal trade and statistics tools use your authenticated membership. Community tools return public summaries or anonymous aggregates.

get_my_trades

Your own closed trades and, optionally, open positions and working orders.

Inputs: account (all|live|prop|demo|real, default all; real = live), include_open (boolean, default True), limit (integer, 1–100, default 25), outcome (all|win|loss|scratch, default all), period (today|week|month|all, default week), symbol (string)

get_my_trading_stats

Your own trading statistics by period and account kind, with an optional prior-period comparison.

Inputs: account (all|live|prop|demo|real, default all; real = live), compare_previous (boolean, default False), period (today|week|month|all, default week)

get_community_leaderboard

The community’s public leaderboard, filtered by period, account kind and ranking.

Inputs: account (all|live|prop|demo|real, default all; real = live), board (score|net|pf|winrate|consistency, default score), limit (integer, 1–50, default 15), period (today|week|month|all, default week)

get_community_positioning

Anonymous aggregate positioning for markets with at least three participating members.

Inputs: symbol (string)