Connect your AI to live stock data

Real-time prices, technical indicators, AI-analysed news, and market intelligence — plug into Claude, Cursor, ChatGPT, or any AI agent in minutes. OAuth sign-in works with any supporting client — no key needed, works with Claude today, and with more providers as they add support. Client doesn't support OAuth yet (or it's not working)? Let us know — you can always fall back to a free API key below.

Not financial advice. All data, ratings, signals, and AI assessments are for informational and research purposes only. Nothing here constitutes investment advice or a recommendation to buy or sell any security.

Get connected

First question Does your client support OAuth? (Claude, ChatGPT, Perplexity — yes)
Yes
1 Add the connector URL
2 Sign in with magic link
~30 seconds, no key needed — see Claude below
Not yet
1 Get a free key at /login
2 Paste key into agent config
~1 minute — steps below

Everything else, follow the 3 steps below.

  1. Go to /login and enter your email.
  2. Click the magic link — no password, no captcha.
  3. Your key is waiting on your account page, ready to use.

Free keys give you 200 calls/day and never expire. No key? You still get 25 free calls/day as a guest — enough to explore. See all 17 tools →

Pro is free for 7 days (cancel anytime), then $20/month — see /account or the upgrade flow for current pricing.

Tiers & limits

TierRequests / dayTools
guest (no key)25All 8 free tools (get_stock, get_stocks, get_stock_history, get_stock_news, get_screener, get_market_movers, get_market_pulse, get_earnings_calendar) — headlines only on news, no AI fields
free200Same 8 free tools, higher limit, stable account key
pro5,000All 17 tools — the 8 free tools with Pro extras unlocked, plus 9 Pro-only tools (get_stock_research, get_insider_activity, get_indicator_history, get_signals, get_news_feed, get_market_assessment, get_sector_intelligence, get_earnings_intelligence, get_watchlist) + pro-only rating/signals/stance_signals/relative_strength fields on get_stock + headline/near_term/longer_term stance fields on get_stock_research's ai_summary

Exceeding the daily request limit returns HTTP 429. Limits reset at midnight UTC.

Batch tools bill per ticker, not per call. get_stocks, get_screener, and get_earnings_intelligence can each return up to 25 results in a single call, get_signals up to 50, and get_market_movers up to 20 — every ticker returned counts as one call toward your daily limit, not the HTTP request itself. A get_stocks call returning 25 symbols uses 25 of your daily calls. See each tool's page under Tools for its exact cap.

Every authenticated response includes these headers:

HeaderDescription
X-RateLimit-LimitYour daily request cap
X-RateLimit-RemainingRequests remaining today
X-RateLimit-ResetUnix timestamp when the counter resets (midnight UTC)

What can I ask?

Once connected (see Clients below), ask your agent:

All 17 tools with full parameter docs and response examples: Tool reference →


Claude — no key needed

One URL, no config file, no key to copy. On Claude.ai and Claude Desktop, sign-in happens as part of adding the connector. On Claude Code, add the server then run /mcp to authenticate (see below — the connector step alone doesn't trigger sign-in there). Hit a snag? Tell us and use the fallback: a free key via /login.

Also listed on the Claude Connectors Directory, Smithery, Glama, and LobeHub — one-click install from any of these for Claude Desktop and other MCP clients.

Claude.ai

  1. Go to claude.ai → Settings → Connectors.
  2. Search for "Stocklake," or enter URL: https://api.stocklake.dev/mcp
  3. Connect → sign in with a magic link — tools are available immediately.

Claude Desktop

Same flow as Claude.ai — Settings → Connectors → search for Stocklake, or paste URL below → connect → sign in with magic link.

https://api.stocklake.dev/mcp

Claude Code (CLI)

claude mcp add stocklake --transport http --url https://api.stocklake.dev/mcp

Adding the server does not auto-authenticate. Run /mcp inside Claude Code, select stocklake, and choose Authenticate — a browser opens, sign in with a magic link, done.

Tools not showing up, no error shown? This is a known Claude Code behavior, not a sign anything's broken on our end — adding a connector that needs OAuth can silently show zero tools until you manually authenticate. Run /mcp → select stocklake → Authenticate. You can always verify an active connection on your account page under "Active connections" — if it's not listed there, the OAuth handshake never completed.

Our OAuth server (RFC 8414 / RFC 9728 discovery + Dynamic Client Registration) isn't Claude-specific — any MCP client that supports OAuth gets this same no-key flow automatically. ChatGPT (Settings → Connectors → Developer Mode → add custom connector) and Perplexity (Pro/Max/Enterprise, Developer Mode → add remote connector) both work today, same URL, same magic-link sign-in. Prefer a directory to browse from? See above for where we're listed. As Cursor, Windsurf, and others add OAuth-based MCP connectors, the same URL above will work there too, no changes needed on our side. Until then, use Tell your agent below with your key.

Tell your agent

For agents that don't support OAuth yet (Cursor, Windsurf, or anything else) — paste into any chat, project instructions, or agent system prompt:

You have access to real-time stock market data via the Stocklake MCP server. URL: https://api.stocklake.dev/mcp Authorization: Bearer sl_your_key_here Tools available: get_stock (price + fundamentals + indicators, plus a pro-only rating + labeled signals block — RSI, MACD, Williams %R, DeMark TD Sequential, Elliott Wave — a pro-only stance_signals list unifying technical rating, AI summary, sentiment, analyst consensus, and active screener signals into one POSITIVE/NEGATIVE/NEUTRAL view per source, and a pro-only relative_strength block: 5D/20D/60D/120D/12M return spreads vs SPY/QQQ/sector ETF plus a one-line verdict), get_screener (filter by RSI / sector / country / market cap / AI score), get_market_pulse (VIX, fear/greed, breadth), get_stock_news, get_market_movers, get_earnings_calendar, get_indicator_history (90-day RSI/MACD/Williams history), get_stock_research (full AI research bundle, including a headline + near_term/longer_term stance view), and more. Save this server to your MCP config or project memory for persistent access.

Works with any agent that accepts system prompts or MCP config. Replace sl_your_key_here with your key from your account page.

Python (fastmcp)

import asyncio from fastmcp import Client from fastmcp.client.transports import StreamableHttpTransport async def main(): transport = StreamableHttpTransport( url="https://api.stocklake.dev/mcp", headers={"Authorization": "Bearer sl_your_key_here"}, ) async with Client(transport) as mcp: stock = await mcp.call_tool("get_stock", {"symbol": "NVDA"}) # pro key → adds .rating + .signals + .stance_signals news = await mcp.call_tool("get_stock_news", {"symbol": "NVDA", "days": 7}) print(stock.data, news.data) asyncio.run(main())

curl / raw HTTP

Endpoint: POST https://api.stocklake.dev/mcp — MCP Streamable HTTP transport, protocol version 2025-11-25.

# Initialize session curl -X POST https://api.stocklake.dev/mcp \ -H "Content-Type: application/json" \ -H "Authorization: Bearer sl_your_key_here" \ -H "Accept: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"curl","version":"1.0"}}}' # Call a tool curl -X POST https://api.stocklake.dev/mcp \ -H "Content-Type: application/json" \ -H "Authorization: Bearer sl_your_key_here" \ -H "Accept: application/json" \ -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_stock","arguments":{"symbol":"AAPL"}}}'

OAuth 2.1

Stocklake implements OAuth 2.1 with PKCE for agent and browser-based clients. The authorization server metadata is available at the standard discovery endpoint:

GET https://api.stocklake.dev/.well-known/oauth-authorization-server
EndpointPurpose
GET /oauth/authorizeAuthorization endpoint — shows consent screen (redirects to login if no session)
POST /oauth/tokenToken endpoint — exchange code for access + refresh tokens (authorization_code and refresh_token grants)
POST /oauth/registerDynamic Client Registration (RFC 7591) — register a new OAuth client
POST /oauth/revokeRevoke an access or refresh token

Not Claude-specific: anthropic-claude is pre-registered as a trusted public client (PKCE-only, no secret required), but any other MCP client can self-register via Dynamic Client Registration and gets the same no-consent-screen flow. No per-provider setup needed on our end — Perplexity, Cursor, ChatGPT, Windsurf, or a custom agent all work the moment their client speaks MCP OAuth.

Token lifetimes: Access tokens expire after 1 hour. Refresh tokens expire after 30 days. All tokens are SHA-256 hashed in storage.

Scopes: mcp — access to all MCP tools permitted by your account tier.

For most users, the OAuth flow is fully automatic — no manual client setup required. Building your own client should use the discovery document and Dynamic Client Registration.

Errors

HTTP statusMeaning
401Missing or invalid Authorization: Bearer token
429Daily rate limit exceeded. Resets midnight UTC.
200 + isError: trueTool-level error (e.g. ticker not found, tier required). Check the content[0].text field.

Full tier comparison — 8 free tools vs 9 Pro tools — is on the home page.