MCP Server - Connect AI Assistants to Live Options Data | FlashAlpha
Docs MCP Server

FlashAlpha MCP Server

Connect Claude, Cursor, Windsurf, or any MCP-compatible AI to live options market data.

Self-hosted clients (Claude Desktop, Claude Code, Cursor, Windsurf, VS Code Copilot)
https://lab.flashalpha.com/mcp
Auth: apiKey tool parameter
Claude Connector Directory / OAuth-required hosts
https://lab.flashalpha.com/mcp-oauth
Auth: OAuth 2.1 + PKCE + DCR (no apiKey needed)
Protocol
Streamable HTTP (MCP 2025-06-18)
40 tools (23 live + 17 historical) Free tier available No SDK required

What is MCP?

The Model Context Protocol (MCP) is an open standard that lets AI assistants call external tools in a structured, type-safe way. Instead of pasting API docs into your prompt, MCP lets your AI discover available tools, understand their parameters, and call them directly.

The FlashAlpha MCP server exposes 40 tools: 23 live tools covering every endpoint in the Lab API plus 17 historical-replay tools (Alpha tier) that mirror the live ones with an at timestamp parameter. Your AI assistant can pull live stock quotes, gamma exposure profiles, volatility surfaces, greeks, dealer positioning narratives, run the real-time options screener, AND replay any of those analytics at any minute since 2018-04-16 - all within the conversation.

Setup Instructions

Add the FlashAlpha MCP server to your AI client. Choose your client below and follow the steps.

Claude Desktop

Open your claude_desktop_config.json file and add the FlashAlpha server:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "flashalpha": {
      "url": "https://lab.flashalpha.com/mcp",
      "transport": "streamableHttp"
    }
  }
}

Restart Claude Desktop. You will see the MCP tools icon (hammer) appear in the chat input area.

Claude Code CLI

Run a single command to register the server:

claude mcp add flashalpha --transport http https://lab.flashalpha.com/mcp

The server is now available in all Claude Code sessions. Use claude mcp list to verify.

Cursor

  1. Open Settings (gear icon) and navigate to MCP Servers.
  2. Click Add new MCP server.
  3. Set the name to flashalpha and the URL to https://lab.flashalpha.com/mcp.
  4. Select Streamable HTTP as the transport type.
  5. Click Save. The tools will appear in the Composer tool list.

Alternatively, add a .cursor/mcp.json file to your project root:

{
  "mcpServers": {
    "flashalpha": {
      "url": "https://lab.flashalpha.com/mcp",
      "transport": "streamableHttp"
    }
  }
}

VS Code (Copilot / Continue)

Add the server to your VS Code settings.json or workspace .vscode/mcp.json:

{
  "mcp": {
    "servers": {
      "flashalpha": {
        "url": "https://lab.flashalpha.com/mcp",
        "transport": "streamableHttp"
      }
    }
  }
}

For the Continue extension, add the server in your ~/.continue/config.yaml:

mcpServers:
  - name: flashalpha
    url: https://lab.flashalpha.com/mcp
    transport: streamableHttp

Windsurf

  1. Open Cascade (the AI panel).
  2. Click the MCP icon in the toolbar.
  3. Select Add Server and enter the URL: https://lab.flashalpha.com/mcp.
  4. Set the transport to Streamable HTTP.
  5. Save. FlashAlpha tools will be listed under the MCP section.

Or add to your ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "flashalpha": {
      "url": "https://lab.flashalpha.com/mcp",
      "transport": "streamableHttp"
    }
  }
}

Authentication

FlashAlpha exposes two MCP endpoints; the auth model depends on which one your client connects to.

/mcp — apiKey parameter (self-hosted clients)

For Claude Desktop, Claude Code, Cursor, Windsurf, VS Code Copilot and similar self-hosted MCP clients, connect to https://lab.flashalpha.com/mcp and pass your FlashAlpha API key as the apiKey tool parameter on each call. Most clients prompt for the key on first use and remember it for the session.

/mcp-oauth — OAuth 2.1 (Claude Connector Directory)

For the public Claude Connector Directory and other hosts that require OAuth-authenticated remote MCP servers, connect to https://lab.flashalpha.com/mcp-oauth. The client performs Dynamic Client Registration (RFC 7591), an authorization-code + PKCE flow against https://flashalpha.com/oauth, and presents the access token as a Bearer header on every MCP request. No apiKey tool parameter is needed — the server resolves your account from the OAuth identity and forwards the API key internally for upstream calls.

OAuth discovery: https://lab.flashalpha.com/.well-known/oauth-protected-resource (RFC 9728) advertises the authorization server, the flashalpha.mcp scope, and the supported bearer transport. Token issuance and JWKS live under https://flashalpha.com/oauth/.

Connecting from clients that need static OAuth credentials

Some MCP-capable hosts (Grok's Custom Connector at the time of writing, and a few enterprise tools) expect you to paste a pre-issued Client ID / Client Secret / Authorization Endpoint / Token Endpoint into a form, rather than performing Dynamic Client Registration automatically. Our server supports both modes.

Grok — exact field values

Grok's Custom Connector flow uses two screens. Make sure you put the right URL on each:

Screen 1 — "Custom Connector" (Name + Server URL):

Field Value
NameFlashAlpha
Server URLhttps://lab.flashalpha.com/mcp-oauth
Common mistake: Server URL is the MCP host (lab.flashalpha.com/mcp-oauth), NOT the OAuth authorize endpoint. If you paste flashalpha.com/oauth/authorize here, OAuth will succeed but the connector will fail to fetch tools afterwards because Grok will try to speak MCP to the auth endpoint.

Screen 2 — "OAuth Credentials Required":

Field Value
Client IDdcr_7f47b8381eee60f98fa9414ddab7af1f
Client SecretLeave blank (public PKCE client — no secret)
Authorization Endpointhttps://flashalpha.com/oauth/authorize
Token Endpointhttps://flashalpha.com/oauth/token
Scopesopenid offline_access flashalpha.mcp
Token Auth Methodnone (PKCE only, recommended)

Hit Save & Connect. Browser redirects to flashalpha.com/oauth/login — sign in with your FlashAlpha credentials, click Allow on the consent screen, and Grok takes over. All 40 FlashAlpha MCP tools become available in any conversation.

The published dcr_7f47b8381eee60f98fa9414ddab7af1f client is a shared public PKCE client whitelisted for Grok's https://grok.com/connectors-oauth-exchange-code/ callback. Each user authorizes it independently — your access token is bound to your FlashAlpha account, not to the shared client_id. This mirrors how every "Sign in with Google" button works (one app, many users).

Other hosts that ask for static OAuth credentials

If the host shows you its own callback URL (not Grok's), register a dedicated client first via curl, then paste the new client_id into the host's form:

curl -X POST https://flashalpha.com/oauth/register \
  -H "Content-Type: application/json" \
  -d '{
    "client_name": "my-host-connector",
    "redirect_uris": ["PASTE_HOST_CALLBACK_URL_HERE"],
    "grant_types": ["authorization_code", "refresh_token"],
    "response_types": ["code"],
    "token_endpoint_auth_method": "none",
    "scope": "openid offline_access flashalpha.mcp"
  }'

The response includes client_id (dcr_…); save it. Then paste into the host's form: same MCP Server URL, Authorization Endpoint, Token Endpoint, Scopes, Token Auth Method none as the Grok table above. DCR-issued clients persist forever — register once, paste forever.

The rest of this page documents the /mcp + apiKey flow because that's what self-hosted clients use. Tool semantics, tool names, and parameter shapes are identical between the two endpoints — only the auth differs.

Don't have a key? Create a free account at flashalpha.com and copy your API key from the profile page. No credit card required.

When your AI assistant calls a FlashAlpha tool, it will pass your API key as the apiKey parameter automatically. On first use, the AI will ask you for the key. Most clients remember it for subsequent calls within the same session.

Available Tools

The MCP server exposes 40 tools in four groups: live market data (5), live exposure analytics (9), live volatility & pricing (9), and historical replay (17, Alpha tier — mirror the live ones with a required at timestamp parameter). Each live tool maps directly to a Lab API endpoint; historical tools map to the matching endpoint on historical.flashalpha.com. Tool names below are the exact strings clients send via tools/call — copy them verbatim. The screener is REST-only at POST /v1/screener (no MCP tool yet).

Market Data

Tool Description Plan
get_stock_quote Real-time stock quote: bid, ask, mid, last, last_update Free
get_tickers List all supported ticker symbols with name and exchange Free
get_option_chain Option chain metadata: expirations + strikes for a symbol Free
get_option_quote Full option quote with bid/ask/mid, BSM greeks, IV, OI, volume (filterable by expiry/strike/type) Growth
get_account Plan info, rate limits, remaining quota Free

Exposure Analytics

Tool Description Plan
get_gex Gamma exposure by strike: net GEX, gamma flip, call/put walls (single expiry on Free; Basic+ for ETFs & indexes; Growth+ for full chain) Free
get_dex Delta exposure by strike: net DEX, directional bias Basic
get_vex Vanna exposure by strike: sensitivity to IV changes and spot moves Basic
get_chex Charm exposure by strike: delta decay over time per dealer position Basic
get_levels Key levels: gamma flip, call wall, put wall, highest-OI strike, 0DTE magnet (Basic+ for ETFs & indexes) Free
get_exposure_summary Aggregated exposure metrics: net GEX/DEX/VEX/CHEX, regime, dealer hedging estimate (+/-1% spot scenarios), zero-DTE breakout Growth
get_narrative Verbal plain-English market narrative composed from the live exposure state Growth
get_zero_dte 0DTE-specific analytics: pin risk score, expected move (intraday-shrinking), gamma acceleration, charm regime, theta decay, top strikes Growth

Volatility & Pricing

Tool Description Plan
get_volatility IV-RV spreads, realized vol, skew profiles, term structure, GEX by DTE, theta decay, hedging scenarios, liquidity Growth
get_advanced_volatility Per-expiry SVI parameters, forward prices, total variance surface, butterfly/calendar arbitrage flags, variance swap fair values, greeks surfaces (vanna/charm/volga/speed) Alpha
get_vrp VRP dashboard: 4-window spreads, z-score, percentile, directional VRP, term structure, GEX-conditioned regime, strategy scores, dealer flow risk, warnings, macro context Alpha
get_vrp_history VRP time series for backtesting (rolling z-score, percentile, regime over a chosen window) Alpha
get_stock_summary Composite snapshot: price, volatility, exposure, options flow, macro context Free (cached) / Auth (live)
calculate_greeks Full BSM Greeks from inputs: first-order (delta/gamma/theta/vega/rho), second-order (vanna/charm/vomma), third-order (speed/zomma/color/ultima) Free
solve_iv Implied volatility from an option's market price (Newton-Raphson) Free
calculate_kelly Kelly-criterion optimal position size for an option given inputs and an edge estimate Growth

Historical Replay (Alpha tier)

These 17 tools hit historical.flashalpha.com and take a required at parameter: YYYY-MM-DDTHH:mm:ss for minute resolution (ET wall-clock, no trailing Z) or YYYY-MM-DD which defaults to 16:00 ET session close. Response shapes are identical to their live counterparts (modulo a few documented divergences — see the OpenAPI spec). Currently-backfilled symbols: SPY, QQQ, META, AMZN, NVDA, SPX. Other symbols backfill on demand (~48h for liquid US equities/ETFs). Call get_historical_coverage first to confirm a symbol's window before replaying.

Tool Description Plan
get_historical_gex Replay gamma exposure by strike at any minute since April 2018 Alpha
get_historical_dex Replay delta exposure by strike Alpha
get_historical_vex Replay vanna exposure by strike Alpha
get_historical_chex Replay charm exposure by strike Alpha
get_historical_levels Replay gamma flip, call/put walls, 0DTE magnet at a specific minute Alpha
get_historical_exposure_summary Replay full exposure summary with regime, hedging estimates, top strikes Alpha
get_historical_narrative Replay verbal narrative with regime commentary Alpha
get_historical_zero_dte Replay 0DTE pin risk, expected move, gamma acceleration for intraday analysis Alpha
get_historical_max_pain Replay max pain, pain curve, dealer alignment, pin probability at any minute since 2018-04-16 Alpha
get_historical_volatility Replay ATM IV, realized vol, IV-RV spreads, skew, term structure Alpha
get_historical_advanced_volatility Replay SVI parameters, forward prices, total variance surface, arbitrage flags, variance swap fair values, greeks surfaces Alpha
get_historical_vrp Replay VRP dashboard with leak-free percentiles/z-scores (date-bounded in SQL — no future leakage) Alpha
get_historical_surface Replay IV surface grid (SVI-calibrated, EOD-stamped) Alpha
get_historical_stock_quote Replay stock bid/ask/mid at a specific minute Alpha
get_historical_option_quote Replay option chain (flat array of contracts) with greeks, IV, OI at a specific minute. Filter by expiry/strike/type. Includes svi_vol and svi_vol_gated fields Alpha
get_historical_stock_summary Replay comprehensive stock summary (price, IV, VRP, exposure, flow, macro). Macro entries wrap each series in {value, change, change_pct} Alpha
get_historical_coverage Inventory: which symbols are backfilled, date ranges, and gaps. No at parameter Alpha

Tool Reference

Tool naming. The canonical names sent to tools/call are the snake_case strings shown in the tables above (e.g. get_gex, get_max_pain, get_historical_max_pain). Section headings below use the readable PascalCase form for navigation only — your client must send the snake_case names verbatim or the call will fail with a tool-not-found error. The screener is REST-only at POST /v1/screener (no live MCP tool yet); every other live analytic has a matching MCP tool.

Full parameter details for each tool. All tools accept apiKey (string, required) as the first parameter - omitted from the tables below for brevity.

GetStockQuote

Fetch a real-time stock quote including price, change, volume, and market cap.

Parameter Type Required Description
symbol string Yes Ticker symbol (e.g. SPY, AAPL, TSLA)

Returns: Price, change, change percent, volume, previous close, 52-week high/low, market cap, name, and exchange.

GetTickers

List all ticker symbols supported by FlashAlpha.

Parameter Type Required Description
query string No Search filter - matches against symbol and name

Returns: Array of ticker objects with symbol, name, and exchange.

GetOptionChain

Retrieve the full option chain for a symbol with bid, ask, IV, greeks, and open interest.

Parameter Type Required Description
symbol string Yes Underlying ticker symbol
expiration string No Filter to a single expiry (yyyy-MM-dd)

Returns: Array of option contracts with strike, expiration, type (call/put), bid, ask, last, IV, delta, gamma, theta, vega, open interest, and volume.

GetAccount

Check your current plan, rate limits, and API usage statistics.

Parameter Type Required Description
No additional parameters - only apiKey is required.

Returns: Plan name, daily request limit, requests used today, requests remaining, and account email.

GetGex

Gamma exposure (GEX) profile by strike for a symbol. Identifies hedging pressure zones, gamma flip, and call/put walls.

Parameter Type Required Description
symbol string Yes Underlying ticker symbol
expiration string No Filter to a single expiry (yyyy-MM-dd). Growth plan required for all expirations.

Returns: Net GEX, gamma flip strike, call wall, put wall, strike-by-strike GEX array, and day-over-day changes.

GetDex

Delta exposure (DEX) profile by strike. Shows net directional dealer exposure and put/call walls.

Parameter Type Required Description
symbol string Yes Underlying ticker symbol
expiration string No Filter to a single expiry (yyyy-MM-dd)

Returns: Net DEX, call wall, put wall, strike-by-strike DEX array, and day-over-day changes.

GetVex

Vanna exposure (VEX) profile by strike. Measures sensitivity of delta to implied volatility changes.

Parameter Type Required Description
symbol string Yes Underlying ticker symbol
expiration string No Filter to a single expiry (yyyy-MM-dd)

Returns: Net VEX, strike-by-strike VEX array, and sensitivity metrics.

GetLevels

Key support and resistance levels derived from options exposure data.

Parameter Type Required Description
symbol string Yes Underlying ticker symbol

Returns: Gamma flip, call wall, put wall, key gamma strike, HVL (Highest Volume Level), and zero-gamma level.

GetExposureSummary

Aggregated exposure metrics for a symbol including net GEX, DEX, VEX, put-call ratio, and skew.

Parameter Type Required Description
symbol string Yes Underlying ticker symbol

Returns: Net GEX, net DEX, net VEX, gamma flip, call wall, put wall, put-call ratio, IV skew, and market regime classification.

GetNarrative

AI-generated plain-English market narrative based on current exposure data. Requires the Basic plan or above.

Parameter Type Required Description
symbol string Yes Underlying ticker symbol

Returns: A structured narrative with market regime, key levels, dealer positioning summary, and actionable insights.

GetVolatility

Volatility analysis including IV rank, IV percentile, historical volatility, term structure, and skew.

Parameter Type Required Description
symbol string Yes Underlying ticker symbol

Returns: IV rank, IV percentile, 30-day IV, HV (20/60/120), term structure data, and put-call IV skew.

GetStockSummary

Comprehensive summary combining quote, exposure, volatility, and key levels in one call.

Parameter Type Required Description
symbol string Yes Underlying ticker symbol

Returns: Stock quote, net GEX/DEX/VEX, gamma flip, call/put walls, IV rank, IV percentile, HV, and key support/resistance levels.

CalculateGreeks

Calculate option greeks from inputs using the Black-Scholes model.

Parameter Type Required Description
underlyingPrice number Yes Current price of the underlying asset
strikePrice number Yes Option strike price
daysToExpiration number Yes Calendar days until expiration
volatility number Yes Implied volatility as a decimal (e.g. 0.25 for 25%)
riskFreeRate number No Risk-free interest rate as a decimal (default: 0.05)
optionType string No call or put (default: call)

Returns: Theoretical price, delta, gamma, theta, vega, and rho.

SolveIV

Solve for implied volatility given an option's market price using iterative root-finding.

Parameter Type Required Description
underlyingPrice number Yes Current price of the underlying asset
strikePrice number Yes Option strike price
daysToExpiration number Yes Calendar days until expiration
optionPrice number Yes Market price of the option
riskFreeRate number No Risk-free interest rate as a decimal (default: 0.05)
optionType string No call or put (default: call)

Returns: Implied volatility as a decimal, plus the theoretical price at the solved IV.

Screener (REST-only — no MCP tool)

The multi-factor options screener is currently REST-only at POST /v1/screener. There is no live MCP tool wrapping it (the tools/list response from https://lab.flashalpha.com/mcp does not include run_screener). If your AI agent needs to run the screener, have it issue a POST to the REST endpoint directly with its API key in the X-Api-Key header. Full spec, filter tree shape, formulas, and tier limits: Live Screener docs.

Example Prompts

Copy any of these into your AI assistant after connecting the MCP server. Replace YOUR_API_KEY with your actual key on first use - most clients remember it afterwards.

1. "What's the current gamma exposure profile for SPY? Show me the gamma flip, call wall, and put wall."
2. "Get me a full summary of TSLA - price, GEX, DEX, IV rank, and key levels."
3. "Compare the volatility profiles of AAPL and MSFT. Which one has higher IV rank and what's the term structure look like?"
4. "Calculate the greeks for a SPY 580 call expiring in 14 days with 20% IV."
5. "I see a NVDA 950 call trading at $12.50 with 21 days to expiry. What implied volatility does that imply?"
6. "Show me the key support and resistance levels for QQQ based on options exposure data."
7. "Get the option chain for AMD expiring this Friday. Which strikes have the highest open interest?"
8. "Generate a market narrative for SPY. What's the dealer positioning telling us about the next few days?"
9. "Run the screener for symbols where the regime is negative_gamma AND dealer_flow_risk is at least 50. Sort by dealer_flow_risk descending."
10. "Screen for harvestable VRP setups: positive_gamma regime, vrp_regime=harvestable, dealer_flow_risk≤40, harvest_score≥65 — top 10 by harvest_score."
11. "Find 0DTE call candidates: days_to_expiry=0, contract type C, delta≥0.3, OI≥1000. Show the full contract data."

Rate Limits & Plans

MCP tool calls consume the same rate limits as REST API requests. Each tool call counts as one request.

Plan Daily Requests Tools Available Price
Free 5 Core MCP tools: get_stock_quote, get_gex (single expiry), get_levels, get_stock_summary (cached), get_tickers, get_option_chain, get_account, calculate_greeks, solve_iv $0
Basic 100 Everything in Free + ETFs & index symbols (SPY, QQQ, SPX, VIX, RUT) + get_dex, get_vex, get_chex, get_max_pain (max pain analysis with dealer alignment + pin probability + multi-expiry calendar). $79/mo monthly or $63/mo annual ($756/yr)
Growth 2,500 Everything in Basic + get_exposure_summary, get_narrative, get_volatility, get_zero_dte, get_option_quote, calculate_kelly, full-chain GEX. (Screener is REST-only at POST /v1/screener.) $299/mo monthly or $239/mo annual ($2,868/yr)
Alpha Unlimited Everything in Growth + get_advanced_volatility, get_vrp, get_vrp_history, SVI surfaces, no cache, full ~250-symbol screener universe (REST), AND all 17 historical-replay tools (get_historical_*) for point-in-time backtesting since 2018-04-16 $1,499/mo monthly or $1,199/mo annual ($14,388/yr)

View all plan details on the pricing page. Upgrade at any time from your profile.

Tool Access by Plan

Tool Free Basic Growth Alpha
get_stock_quote YesYesYesYes
get_tickers YesYesYesYes
get_option_chain YesYesYesYes
get_option_quote YesYes
get_account YesYesYesYes
get_gex Single expirySingle expiryFull chainFull chain
get_dex YesYesYes
get_vex YesYesYes
get_chex YesYesYes
get_levels YesYesYesYes
get_exposure_summary YesYes
get_narrative YesYes
get_zero_dte YesYes
get_volatility YesYes
get_advanced_volatility Yes
get_vrp Yes
get_vrp_history Yes
get_stock_summary CachedLiveLiveLive
calculate_greeks YesYesYesYes
solve_iv YesYesYesYes
calculate_kelly YesYes
Historical replay (Alpha tier only — all 17 mirror the live ones with a required at parameter)
get_historical_gex, get_historical_dex, get_historical_vex, get_historical_chex, get_historical_levels, get_historical_exposure_summary, get_historical_narrative, get_historical_zero_dte, get_historical_max_pain, get_historical_volatility, get_historical_advanced_volatility, get_historical_vrp, get_historical_surface, get_historical_stock_quote, get_historical_option_quote, get_historical_stock_summary, get_historical_coverage Yes

Technical Details

Property Value
Protocol Model Context Protocol (MCP) 2025-06-18
Transport Streamable HTTP (streamableHttp)
Server URL https://lab.flashalpha.com/mcp
Server Technology ASP.NET Core on .NET 10
Response Format JSON (MCP tool result content)
Typical Latency 50 - 200ms depending on tool and data freshness
Sessions Stateless - no session management required
Authentication Per-tool apiKey parameter (no HTTP header auth needed)
TLS Required (HTTPS only)
CORS Enabled for all origins

The MCP server wraps the same Lab API endpoints. If you already use the REST API, MCP provides identical data - the tools are simply a structured interface for AI assistants. No SDK or library installation is needed on your end.

Get Started

Three steps to get live options data in your AI assistant:

1
Sign Up
Create a free account at flashalpha.com and copy your API key.
2
Add the MCP URL
Add https://lab.flashalpha.com/mcp to your AI client.
3
Ask Your AI
Try "What's the gamma exposure for SPY?" and watch it pull live data.
Ready to connect your AI to live markets?
40 tools total: 23 live + 17 historical replay (Alpha). Free tier: 5 requests/day. No credit card required.
View Plans

FAQ

The tool returns an error message indicating you've reached your daily limit. Your AI assistant will see this and inform you. Limits reset at midnight UTC.
Yes. Both use the same API key and share the same rate limits. A tool call via MCP and a REST request both count as one request.
Any client implementing the Model Context Protocol specification, including Claude Desktop, Claude Code, Cursor, VS Code (with Copilot or Continue), Windsurf, and others. The ecosystem is growing rapidly.
No. The MCP server is hosted by FlashAlpha. You only need to add the server URL to your client configuration - there is no local package, SDK, or binary to install.

Ready to build?

Get your free API key and start pulling live options data in 30 seconds.