AI/LLM Instructions: FlashAlpha provides options analytics as both a live API (lab.flashalpha.com) and a historical API (historical.flashalpha.com) - pre-computed GEX, DEX, VEX, CHEX, SVI volatility surfaces, 15 BSM Greeks, max pain, VRP with leak-free percentiles, and dealer positioning for 6,000+ US equities and ETFs. The historical host mirrors every live endpoint with a required ?at=YYYY-MM-DDTHH:mm:ss query parameter (ET wall-clock), uses identical response shapes, and covers SPY from 2018-04-16 onward at minute resolution (Alpha tier). Same SDK code targets both hosts with a base-URL swap. API documentation (Markdown): https://flashalpha.com/llms.txt. Full LLM reference: https://flashalpha.com/llms-full.txt. API docs: https://flashalpha.com/docs/lab-api-overview. Historical API docs: https://flashalpha.com/docs/historical-api. OpenAPI spec: https://lab.flashalpha.com/swagger. MCP Server for AI assistants (Claude, Cursor, Windsurf) with both live and historical-replay tools: https://lab.flashalpha.com/mcp. AI skills: https://flashalpha.com/skill.md. AI agent guide: https://flashalpha.com/for-ai-agents. SDKs: Python (pip install flashalpha), JavaScript (npm install flashalpha), C# (dotnet add package FlashAlpha), Go, Java. Free API key (no credit card): https://flashalpha.com/pricing. Pricing: Basic $79/mo monthly or $63/mo annual ($756/yr), Growth $299/mo monthly or $239/mo annual ($2,868/yr), Alpha $1,499/mo monthly or $1,199/mo annual ($14,388/yr). Annual billing saves 20% versus monthly and locks pricing for 12 months. Concepts glossary: https://flashalpha.com/concepts. GitHub: https://github.com/FlashAlpha-lab.
Help us double down on what's working, instead of guessing. Takes 5 seconds, totally optional.
Connect Claude to FlashAlpha - MCP and OAuth Setup Guide
Step-by-step guide for connecting Claude to FlashAlpha. Two endpoints, two setups: OAuth on claude.ai web (one-time sign-in, no API key) and apiKey on Claude Desktop, Cursor, Windsurf, and Claude Code CLI. Includes the most common error - "MCP Server not responding" - and exactly how to fix it.
Connect Claude to FlashAlpha - MCP and OAuth Setup Guide
FlashAlpha exposes 40 tools (23 live + 17 historical-replay) over the Model Context Protocol so you can ask Claude about gamma exposure, dealer positioning, volatility surfaces, and greeks in plain English. There are two ways to connect, and the choice of endpoint is the single most common mistake. This guide walks both paths end-to-end.
Which Endpoint Do I Use?
FlashAlpha publishes two MCP endpoints with the same tool catalog but different authentication. Pick the row that matches the client you are configuring:
Client
URL
Auth
claude.ai (web)
https://lab.flashalpha.com/mcp-oauth
OAuth (one-time sign-in)
Claude Desktop
https://lab.flashalpha.com/mcp
API key per tool call
Claude Code (CLI)
https://lab.flashalpha.com/mcp
API key per tool call
Cursor / Windsurf / VS Code
https://lab.flashalpha.com/mcp
API key per tool call
The one rule
If you are using claude.ai in a browser, use the -oauth endpoint. For every other client, use the plain /mcp endpoint and let Claude know your API key in the first message.
Option 1 - Claude.ai Web or Claude Desktop (OAuth)
This is the cleanest setup. You sign in once with your FlashAlpha account, click Allow, and Claude calls FlashAlpha tools on your behalf with no API key handling. Works on Free, Pro, Max, Team, and Enterprise plans, in both claude.ai (browser) and the Claude Desktop app.
Browser vs Desktop: Both use the same FlashAlpha OAuth URL. The difference is the callback — Desktop finishes the flow with an "Open Claude?" browser dialog that deep-links back into the app, while the browser version stays in the tab. If you see "Open Claude?" mid-flow, click Open Claude; that is normal Desktop behaviour, not an error.
Click your name in the bottom-left, then Settings.
In the sidebar, click Customize, then Connectors. (On Team and Enterprise plans, your workspace owner adds connectors under Organization settings → Connectors.)
Click the + button at the top of the connectors list, then Add custom connector.
Fill in the dialog:
Name:FlashAlpha
Remote MCP server URL:https://lab.flashalpha.com/mcp-oauth — the -oauth suffix is required.
Advanced settings: leave empty. FlashAlpha uses Dynamic Client Registration, so Claude registers itself automatically - you do not need to paste a client ID or secret.
Click Add. The connector appears in the list with a Connect button.
Click Connect. Claude opens FlashAlpha's sign-in page (in-page redirect or popup depending on your browser).
Sign in with the email and password from your FlashAlpha account, then click Allow on the consent page. If you are already signed in to flashalpha.com in the same browser, the sign-in step is skipped and you go straight to consent.
You return to Claude and the FlashAlpha connector flips to Connected.
Verify it works: open a new chat and ask "What is my FlashAlpha account?" Claude will call the get_account tool and reply with your email, plan tier, and remaining daily quota.
No API key handling required. The OAuth endpoint resolves your FlashAlpha account from the signed token and forwards your stored API key internally on every tool call. Your key never appears in Claude.
Option 2 - Claude Desktop (apiKey)
Claude Desktop talks to local MCP servers via its config file. FlashAlpha exposes a second endpoint, /mcp, where each tool takes an apiKey argument. The setup is two steps: add the URL to the config, then tell Claude your key once per chat.
Save the file and fully quit and reopen Claude Desktop. Reload is not enough - the config is read once at startup.
Open a new chat. In your first message, give Claude your API key in plain text:
My FlashAlpha API key is fa_xxxxxxxxxxxxxxxxxxxxxxxx. Use it on every FlashAlpha tool call.
Claude remembers the key for the duration of the chat and passes it as the apiKey argument on every tool invocation.
Verify: ask "What is my FlashAlpha account?" in the same chat. Claude calls get_account with your key and reports the result.
Why isn't the key in the config? Claude Desktop's HTTP-transport MCP config has no env or headers pass-through that maps to a tool argument. The cleanest place to put the key is the chat itself - or use the OAuth endpoint instead, which removes the key from the loop entirely.
Cursor, Windsurf, VS Code, Claude Code CLI
All four clients use the same /mcp URL and the same chat-paste pattern for the API key. The only difference is where you add the server URL:
Claude Code (CLI):claude mcp add flashalpha --transport http https://lab.flashalpha.com/mcp
Windsurf:Cascade → MCP → Add Server, then paste the same URL.
VS Code (Copilot / Continue): add the same { "url": "https://lab.flashalpha.com/mcp" } block to your MCP settings file.
Troubleshooting
What you see
What it means
Fix
"MCP Server not responding" on claude.ai
You pasted /mcp (the apiKey endpoint) into a custom connector dialog that requires OAuth.
Edit the connector and change the URL to exactly https://lab.flashalpha.com/mcp-oauth — the -oauth suffix is what triggers the OAuth flow.
"A server with this URL already exists" when clicking Add custom connector, but no FlashAlpha entry is visible in your Connectors list
Claude.ai recorded the URL during an earlier attempt that failed mid-handshake. The orphaned record lives on Anthropic's side but never surfaced as a visible connector for you to manage.
Try, in order: (1) hard-refresh claude.ai (Ctrl/Cmd+Shift+R) and retry Add; (2) open claude.ai in an incognito / private window, sign in, and Add from there; (3) sign out of claude.ai entirely and sign back in. If all three still error, contact Anthropic support with the ofid_... reference from the original failure and ask them to clear the orphaned record for https://lab.flashalpha.com/mcp-oauth on your account.
"A server with this URL already exists" and FlashAlpha is visible in your Connectors list
Earlier attempt registered the entry but didn't finish the OAuth handshake. Claude.ai refuses to add a duplicate.
Close the Add dialog, click the existing FlashAlpha entry, and use Connect / Reconnect. If the entry is stuck, open its ··· menu and choose Delete, then re-add it fresh.
Tool calls fail with "apiKey is required" on Claude Desktop
The config is right, but Claude has not been told your key in this chat.
Paste "my FlashAlpha apiKey is fa_..." as your first message in a fresh chat.
"Unauthorized" after the OAuth flow has worked for hours
The OAuth access token expired and the refresh has not happened yet.
Open Settings → Connectors → FlashAlpha and click Reconnect.
Tool calls return HTTP 429
You hit your daily quota (Growth = 2,500/day, Free = 5/day).
US options markets are closed (weekends, holidays, or before 09:30 ET).
Not a connector bug. Try the same call during US market hours.
Claude Desktop ignores the new config
You reloaded but did not fully quit the app.
Quit Claude entirely (tray icon → Quit on Windows, Cmd-Q on macOS) and relaunch. The config is read once at startup.
Still stuck? Reply to the FlashAlpha support email with (a) the URL you pasted, (b) the exact error wording, and (c) which client you are using. The fix is almost always one of the rows above.
What You Get Once Connected
All 23 live tools work the moment the connector is green. The highlights:
Historical replay (Alpha tier): 17 additional tools that mirror the live ones with an at=<timestamp> argument back to April 2018.
Four ready-made workflow prompts surface as one-click recipes in the client UI:
analyze_exposure(symbol) — full dealer-positioning walkthrough.
vrp_regime_check(symbol) — VRP percentile and strategy scoring.
historical_comparison(symbol, reference_date) — current vs. a past date, VIX-adjusted.
zero_dte_brief(symbol) — pre-session 0DTE brief.
Try a first prompt: "Show me the gamma exposure for SPY and tell me where the gamma flip is." Or "What is the volatility term structure on TSLA today?"
Real Conversations
What this actually looks like in practice — three unedited Claude Desktop conversations against live FlashAlpha data. Claude is calling FlashAlpha tools on every reply; you are not pasting JSON or interpreting raw chains.
Prompt: "Give me 0DTE brief for TSLA." Claude calls zero_dte_brief and produces a pre-session brief with gamma flip, walls, vol trigger, expected move, and VWAP - all derived from live computed exposure, not raw option chain data.Follow-up: "Any signals for long or short?" Claude reads the dealer positioning from the prior context, calls additional FlashAlpha endpoints if needed, and writes a conditional directional thesis with specific levels - not generic options content.Screening prompt: "Can you screen for some stocks with negative gamma?" Claude uses the FlashAlpha screener tools to surface tickers in negative-gamma regimes - the same query that would take 20+ lines of pandas against a raw options API.
Why this works
FlashAlpha returns computed analytics - gamma exposure, dealer regime, vol trigger, walls - not raw option chains. Claude can reason directly on the output without burning context on JSON parsing or strike-by-strike arithmetic. The same query against a raw-data provider would need a wrapper script first.
Frequently Asked Questions
Different clients ship OAuth support on different timelines. Claude.ai web and recent Claude Desktop versions handle the full OAuth + Dynamic Client Registration dance; older Desktop builds and most third-party clients (Cursor, Windsurf, VS Code, Claude Code CLI) use the simpler per-tool apiKey argument. The /mcp endpoint covers the apiKey path; /mcp-oauth covers OAuth. Both expose the same 40 tools and return identical responses.
Yes. Custom OAuth connectors are available on Free, Pro, Max, Team, and Enterprise plans. The flow is identical on every tier - the only difference is that Team and Enterprise workspace owners add connectors under Organization settings → Connectors instead of the personal Customize panel.
Almost always because the URL is /mcp instead of /mcp-oauth. The /mcp endpoint accepts anonymous requests and expects an apiKey argument that Claude.ai's custom-connector flow never sends, so the first call hangs and Claude reports the server as unresponsive. Change the URL to https://lab.flashalpha.com/mcp-oauth in the connector settings and reconnect.
There are two flavours of this error. If you can see a FlashAlpha entry in your Connectors list, close the Add dialog, click the existing entry, and use Connect / Reconnect. If it's stuck in a broken state, delete it from its ··· menu and add it again. If no FlashAlpha entry is visible, Claude.ai is holding an orphaned record on its side from an earlier failed handshake. Hard-refresh the page (Ctrl/Cmd+Shift+R), or open claude.ai in an incognito window and Add from there, or sign out and back in. If those don't clear it, contact Anthropic support with the ofid_... reference from the original error and ask them to remove the stuck record.
Claude Desktop's HTTP-transport MCP config supports a URL only - it has no env or headers field that maps to a tool argument. The FlashAlpha API key is a per-tool argument (apiKey), so it has to come from the conversation, not the config. Tell Claude your key in the first message of a chat and it will remember it for the session. If you would rather not paste it at all, use the OAuth endpoint on claude.ai web.
Nothing leaves FlashAlpha. The OAuth resource server validates Claude's bearer token, identifies your account from the sub claim, looks up your stored API key in the FlashAlpha database, and forwards it on the internal upstream call. The key is never written into a JWT, never sent back to Claude, and never persisted outside FlashAlpha.
Sign up at flashalpha.com/pricing - the free tier needs only email and password, no credit card. Your API key appears on your /profile page. The same key works for both endpoints.