Connect Claude to a live options-analytics API over MCP (the 2-endpoint gotcha) FlashAlpha ships two MCP endpoints with the same 40-tool catalogue but different authentication, and picking the wrong one is the most common setup failure. The claude.ai web client and current Claude Desktop builds require the OAuth-based `-oauth` endpoint, while Claude Code, Cursor, Windsurf, and VS Code use the plain `/mcp` endpoint with an API key passed per tool call. Users who paste the wrong URL into claude.ai will see "MCP Server not responding" because the browser flow never sends the `apiKey` argument that the `/mcp` endpoint expects. FlashAlpha ships two MCP endpoints with the same tool catalogue but different auth, and picking the wrong one is the single most common setup failure. This walks both paths and the errors you will actually hit. FlashAlpha exposes 40 tools over the Model Context Protocol 23 live, 17 historical-replay , so you can ask Claude about gamma exposure, dealer positioning, volatility surfaces and Greeks in plain English instead of hand-rolling REST calls. Same tools on both. Different authentication. Match the row to 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-oauth current builds or https://lab.flashalpha.com/mcp | OAuth, or API key on older builds | | 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: claude.ai web and current Claude Desktop builds use the -oauth endpoint and OAuth sign-in. The CLI and editor clients Claude Code, Cursor, Windsurf, VS Code use the plain /mcp endpoint and you hand Claude the key in your first message. If your Desktop build is old enough that OAuth fails, fall back to /mcp and the apiKey path below.Cleanest setup. Sign in once, click Allow, and Claude calls tools on your behalf with no key handling. Works on Free, Pro, Max, Team and Enterprise. FlashAlpha https://lab.flashalpha.com/mcp-oauth . The -oauth suffix is required.On Desktop the only difference is the callback: you get an "Open Claude?" browser dialog that deep-links back into the app. Click Open Claude . That is expected, not an error. Verify with a new chat: "What is my FlashAlpha account?" Claude calls get account and returns your email, tier and remaining quota. Your API key never appears in Claude on this path. The OAuth resource server resolves your account from the bearer token and forwards your stored key on the internal upstream call only. Here each tool takes an apiKey argument. Two steps: register the URL, then tell Claude the key once per chat. Claude Desktop config: ~/Library/Application Support/Claude/claude desktop config.json %APPDATA%\Claude\claude desktop config.json { "mcpServers": { "flashalpha": { "url": "https://lab.flashalpha.com/mcp" } } } Save, then fully quit and reopen Claude Desktop. A reload is not enough; the config is read once at startup. First message in a fresh chat: My FlashAlpha API key is fa xxxxxxxxxxxxxxxxxxxxxxxx. Use it on every FlashAlpha tool call. Claude holds the key for the session and passes it as apiKey on every call. Other clients, same /mcp URL and same chat-paste pattern: Claude Code CLI claude mcp add flashalpha --transport http https://lab.flashalpha.com/mcp flashalpha , URL https://lab.flashalpha.com/mcp . { "url": "https://lab.flashalpha.com/mcp" } to your MCP settings.Why is the key not in the config? Claude Desktop's HTTP-transport MCP config only supports a URL. There is no env or headers pass-through that maps to a tool argument, and the key is a per-tool argument. So it comes from the conversation, or you skip it entirely with the OAuth endpoint. "MCP Server not responding" on claude.ai. You pasted /mcp into a custom-connector dialog that needs OAuth. The /mcp endpoint expects an apiKey argument the browser flow never sends, so the first call hangs. Edit the connector URL to exactly https://lab.flashalpha.com/mcp-oauth and reconnect. This is the one nearly everyone hits. "A server with this URL already exists" but nothing shows in your Connectors list. Claude.ai recorded the URL during an earlier handshake that failed mid-flow. Try, in order: hard-refresh Ctrl/Cmd+Shift+R and retry Add; open claude.ai in an incognito window and Add from there; sign out and back in. If all three still error, send Anthropic support the ofid ... reference from the original failure and ask them to clear the orphaned record. "A server with this URL already exists" and FlashAlpha is visible. Close the dialog, click the existing entry, use Connect / Reconnect . If stuck, delete from the ... menu and re-add. "apiKey is required" on Desktop. Config is fine, Claude just has not been told the key in this chat. Paste it as your first message. "Unauthorized" after hours of working. Token expired before refresh. Settings then Connectors then FlashAlpha then Reconnect . HTTP 429. Daily quota hit Free 5/day, Basic 100, Growth 2,500, Alpha unlimited . Reset is midnight UTC, or upgrade. "no data" on get gex, get levels, get volatility. Markets are closed. Not a connector bug. Retry during US market hours. Desktop ignores the new config. You reloaded instead of quitting. Cmd-Q on macOS, tray then Quit on Windows, then relaunch. All 23 live tools work immediately. Highlights: get gex , get dex , get vex , get levels , get exposure summary , get narrative get volatility , get stock summary , calculate greeks , solve iv get stock quote , get tickers , get option chain , get account at=