FlashAlpha MCP Server
Connect Claude, Cursor, Windsurf, or any MCP-compatible AI to live options market data.
https://lab.flashalpha.com/mcp
apiKey tool parameterhttps://lab.flashalpha.com/mcp-oauth
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
- Open Settings (gear icon) and navigate to MCP Servers.
- Click Add new MCP server.
- Set the name to
flashalphaand the URL tohttps://lab.flashalpha.com/mcp. - Select Streamable HTTP as the transport type.
- 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
- Open Cascade (the AI panel).
- Click the MCP icon in the toolbar.
- Select Add Server and enter the URL:
https://lab.flashalpha.com/mcp. - Set the transport to Streamable HTTP.
- 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 |
|---|---|
| Name | FlashAlpha |
| Server URL | https://lab.flashalpha.com/mcp-oauth |
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 ID | dcr_7f47b8381eee60f98fa9414ddab7af1f |
| Client Secret | Leave blank (public PKCE client — no secret) |
| Authorization Endpoint | https://flashalpha.com/oauth/authorize |
| Token Endpoint | https://flashalpha.com/oauth/token |
| Scopes | openid offline_access flashalpha.mcp |
| Token Auth Method | none (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.
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
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)
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.
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 |
Yes | Yes | Yes | Yes |
get_tickers |
Yes | Yes | Yes | Yes |
get_option_chain |
Yes | Yes | Yes | Yes |
get_option_quote |
— | — | Yes | Yes |
get_account |
Yes | Yes | Yes | Yes |
get_gex |
Single expiry | Single expiry | Full chain | Full chain |
get_dex |
— | Yes | Yes | Yes |
get_vex |
— | Yes | Yes | Yes |
get_chex |
— | Yes | Yes | Yes |
get_levels |
Yes | Yes | Yes | Yes |
get_exposure_summary |
— | — | Yes | Yes |
get_narrative |
— | — | Yes | Yes |
get_zero_dte |
— | — | Yes | Yes |
get_volatility |
— | — | Yes | Yes |
get_advanced_volatility |
— | — | — | Yes |
get_vrp |
— | — | — | Yes |
get_vrp_history |
— | — | — | Yes |
get_stock_summary |
Cached | Live | Live | Live |
calculate_greeks |
Yes | Yes | Yes | Yes |
solve_iv |
Yes | Yes | Yes | Yes |
calculate_kelly |
— | — | Yes | Yes |
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:
https://lab.flashalpha.com/mcp to your AI client.FAQ
Ready to build?
Get your free API key and start pulling live options data in 30 seconds.