MCP Server

What is the MCP server?

The Quant Data MCP server lets Claude, Cursor, and any other Model Context Protocol client query our data in plain English. Paste one URL and your existing API key into your client's config, and every REST endpoint becomes a tool the model can call on your behalf.

The Model Context Protocol is an open standard that lets large language models invoke tools the same way you would call a REST endpoint. When you ask the model a market question, it reads the catalog of available tools, picks the right one, fills in its parameters, and shows you the answer alongside the structured data it pulled.

Our server is hosted, so there is nothing to install, nothing to run locally, and no separate credential to manage. Your Quant Data API key is the only thing your client needs. If you have never used our REST API, the MCP is often the fastest way to start. If you already use REST, the MCP gives you a conversational front-door to the exact same data without writing more glue code.

Why connect it

Four representative workflows that work well as conversations with a model holding all of our tools.

Open-ended market research
Ask "what is unusual in tech today?" and let the model fan out across gainers, order flow, and dark-pool prints, then narrow into the names that pop. Iterate on the same thread when something interesting shows up rather than re-running queries by hand.
Gainers / LosersOrder FlowDark FlowEquity Prints
Automated morning prep
Walk the model through your morning checklist: drift on the index, the day's biggest blocks, IV percentile on a watchlist of ten symbols, then a heat map on the two names that need a closer look.
Net DriftIV RankHeat MapOrder Flow Consolidated
Embed in your own assistant
Plug Quant Data into the assistant that lives inside your team's workflow tool. Sales-team chatbots, internal research copilots, and customer-facing assistants all speak MCP and can hold the catalog alongside their other tools.
ClaudeCursorCustom agents
Learn the REST API by example
Have the model write the request body for you. Describe the query in English, ask the model to call the tool, then ask for the equivalent curl or Python so you can drop it into your own code.
PrototypingOnboardingDocumentation

Server details

Where to point your client, how authentication works, and how quota is shared with the REST API.

Endpoint

https://api.quantdata.us/mcp

Streamable HTTP, hosted on the same domain as the REST API. Point any MCP-capable client at this URL and you are connected.

Authentication

Each request carries your Quant Data key in the Authorization header using the Bearer scheme. The MCP does not store keys, does not maintain sessions, and does not issue tokens of its own. Generate or rotate keys from the API keys page in your dashboard.

Quota and billing

MCP tool calls draw from the same per-user request quota as direct REST calls. One tool call equals one request against your bucket. You can mix MCP and REST traffic on the same key without splitting subscriptions or paying twice.

Errors

When something is off (a missing key, an unknown ticker, a malformed filter, a tripped rate limit) the server surfaces the same RFC 9457 problem detail you would see on the REST side, with the field names and remediation hints intact so the model can correct itself on the next turn.

Connect your client

Pick your client below and open it for the exact config. Any other client that speaks streamable HTTP works the same way: point it at the URL, set the Authorization header, and restart the client so the tool list refreshes.

Generate or copy an API key
Open the API keys page and click Create API key. The full key is shown only once at creation; copy it into your secrets store before navigating away. Treat the key like a password.
Paste the config into your client
Each client has a slightly different config file or command, but the three values are always the same: the URL https://api.quantdata.us/mcp, the Authorization header carrying your key, and a name for the server. Snippets for each client are in the accordion below. In every snippet, replace <YOUR_API_KEY> with the real key you copied in step 1 before saving.
Restart and verify
Restart the client so the tool catalog loads. Ask the model to run qd_ping; a short "server is alive" reply confirms that the URL and the key both work.
Claude Desktop

Open Settings → Developer → Edit Config and merge this object into your claude_desktop_config.json. Quit and reopen the app for the change to take effect.

claude_desktop_config.json
{
  "mcpServers": {
    "quantdata": {
      "type": "http",
      "url": "https://api.quantdata.us/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}
Claude Code

Run this once from any terminal. The -s user flag makes the server available across every project on your machine; use -s local instead if you only want it inside the current repository.

claude mcp add
claude mcp add --transport http -s user quantdata https://api.quantdata.us/mcp \
  --header "Authorization: Bearer <YOUR_API_KEY>"
ChatGPT

Custom MCP connectors live behind ChatGPT's Developer Mode. Open Settings → Connectors → Advanced settings and toggle on Developer Mode, then add a custom connector with the values below. Developer Mode is in beta and available on ChatGPT Plus, Pro, Business, Enterprise, and Education plans (not Free). ChatGPT's connector flow is OAuth-first, so if the form does not surface a custom-header field, use Quant Data through one of the other clients in this list while OpenAI continues to evolve the UI.

ChatGPT custom connector
Name              Quant Data
MCP Server URL    https://api.quantdata.us/mcp
Authentication    Custom header   ← only if the form exposes one
Header name       Authorization
Header value      Bearer <YOUR_API_KEY>
Cursor

Add the block to ~/.cursor/mcp.json (global) or .cursor/mcp.json at the root of your project (per-repo), then restart Cursor.

.cursor/mcp.json
{
  "mcpServers": {
    "quantdata": {
      "url": "https://api.quantdata.us/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}
VS Code (Copilot Chat)

Create .vscode/mcp.json at the root of your workspace and add the block below. Reload the window so Copilot Chat picks it up. The same shape works in your user settings if you want the server available across every workspace.

.vscode/mcp.json
{
  "servers": {
    "quantdata": {
      "type": "http",
      "url": "https://api.quantdata.us/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}
Windsurf

Open Windsurf Settings → Cascade → MCP Servers and add a custom server, or edit ~/.codeium/windsurf/mcp_config.json directly. After saving, quit Windsurf completely and reopen it: closing the editor window alone does not reload MCP servers.

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "quantdata": {
      "serverUrl": "https://api.quantdata.us/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}
Cline

In VS Code, open the Cline sidebar, click the MCP Servers tab, then Configure MCP Servers. Paste the block into Cline's cline_mcp_settings.json and save; Cline will reload the server automatically.

cline_mcp_settings.json
{
  "mcpServers": {
    "quantdata": {
      "type": "streamableHttp",
      "url": "https://api.quantdata.us/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}
Gemini CLI

Add the block to ~/.gemini/settings.json (user-wide) or .gemini/settings.json inside a project (per-repo), then restart Gemini CLI. The /mcp slash command lists the servers it has loaded so you can confirm Quant Data is connected.

~/.gemini/settings.json
{
  "mcpServers": {
    "quantdata": {
      "httpUrl": "https://api.quantdata.us/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}
Goose

Add the entry to ~/.config/goose/config.yaml (or run goose configure and pick Add Extension → Remote Extension (Streaming HTTP)). Restart any open Goose sessions so the new extension loads.

~/.config/goose/config.yaml
extensions:
  quantdata:
    enabled: true
    type: streamable_http
    name: quantdata
    uri: https://api.quantdata.us/mcp
    timeout: 300
    headers:
      Authorization: Bearer <YOUR_API_KEY>
Any other client

Any MCP client that supports streamable HTTP works. The shape of the config is consistent across them: a transport, the URL, and a header bag. If yours expects a flat object rather than a server map, the values below are everything you need.

Generic streamable-HTTP MCP config
{
  "transport": "streamable-http",
  "url": "https://api.quantdata.us/mcp",
  "headers": {
    "Authorization": "Bearer <YOUR_API_KEY>"
  }
}

The tool catalog

Twenty REST endpoints are mirrored as MCP tools, named qd_get_<concept> in snake_case. The twenty-one tools below cover the order-flow, exposure, statistics, volatility, and price-history surfaces, plus a small health-check helper. The newer REST-only endpoints (open-interest, max-pain, dark-pool levels, exchange notifications, market map, news articles) are reachable through the REST API today and will pick up MCP wrappers in a future release. The model sees a detailed description for each tool below, so you almost never need to name one by hand: describe what you want and the model picks for you.

Time-series and tape
  • qd_get_net_drift

    Per-bucket bullish vs. bearish premium delta over time.

  • qd_get_net_flow

    Per-bucket call and put activity, in premium or volume.

  • qd_get_interval_map

    Time-bucketed Greek exposure across the option chain.

  • qd_get_volatility_drift

    Per-minute ARV, average ATM IV, and the underlying stock price.

  • qd_get_option_price_over_time

    OHLC and volume bars for one specific option contract.

  • qd_get_stock_price_over_time

    OHLC bars for the underlying stock of one ticker.

  • qd_get_dark_flow

    Time-series of dark-pool notional flow for one ticker.

  • qd_get_order_flow_consolidated

    Paginated tape of consolidated blocks, sweeps, and splits.

  • qd_get_order_flow_unconsolidated

    Paginated tape with one row per exchange leg.

  • qd_get_equity_prints

    Paginated tape across lit and dark venues.

Snapshots and exposure
  • qd_get_heat_map

    Strike × expiration grid of any single option metric.

  • qd_get_exposure_by_strike

    Greek-weighted exposure grouped by strike.

  • qd_get_exposure_by_expiration

    The same data, aggregated favoring expiration.

  • qd_get_volatility_skew

    Per-strike implied-volatility curve at a point in time.

  • qd_get_term_structure

    Vol-skew enriched with delta and moneyness classification.

Aggregates and health
  • qd_get_gainers_losers

    Per-ticker rollup of bullish vs. bearish premium.

  • qd_get_market_share

    Per-exchange split across equity calls, puts, and index options.

  • qd_get_contract_statistics

    Premium, trades, and volume rolled up by contract type.

  • qd_get_contract_trade_side_statistics

    Adds an aggressor-side partition to the above.

  • qd_get_iv_rank

    Rolling-window IV percentile context per ticker.

  • qd_ping

    Health check that confirms the server is reachable and dispatching tool calls.

Each tool exposes the same parameters as its REST counterpart: convenience filters such as tickers, strikePrices, and expirationDates, the filter expression DSL for boolean composition, time selection through sessionDate or a timeRange, pagination via size and searchAfter on the tape tools, and field projection with includes and excludes.

How a tool call flows

The MCP and the REST API are the same surface reached two different ways.

Your client sends a tool invocation
When the model decides to call a tool, your client sends a streamable HTTP request to https://api.quantdata.us/mcp with your API key in the Authorization header and the tool arguments in the body.
The server hands the request to the REST API
The MCP layer translates the tool arguments into the corresponding REST request body and forwards it to the matching /v1 endpoint. Your key flows through unchanged, so authentication, the rate limit, and request-tracking all behave identically to a direct REST call.
The result returns to your conversation
The REST response (or an RFC 9457 problem detail if something went wrong) is handed back to your client, which surfaces it to the model. The model then writes the answer, asks a follow-up tool call, or both.

Because the MCP is stateless, each tool call is independent. Your client may run several in parallel, and none of them share session state on our side. If your conversation has the model fan out across twelve ticker queries at once, you will see twelve quota draws and twelve usage events.

Asking good questions

The model picks tools by reading their descriptions and matching them to the way you phrased the question. A few habits make that match noticeably better.

Habits that improve tool selection
  • Name the underlying analyst concept. Phrases like "net call drift on SPX", "the GEX wall at $440", or "dark-pool prints over $5M" map directly to the tool descriptions and help the model pick the right endpoint on the first try.
  • Anchor the time window. "During today's session", "between 9:30 and 10:00 ET on Monday", or "over the last five trading days" lets the model pick a sensible sessionDate or timeRange without guessing.
  • Cap the result size on the table-shaped tools. "Pull the top fifty consolidated trades" trims the response payload, keeps the conversation snappy, and avoids spending tokens on rows the model will not use.
  • Ask follow-ups by name. "Now pull the heat map for the same ticker on the same date" reuses the prior context and keeps the model on the right surface instead of re-deriving it.

None of this is required: the model will still produce useful answers on vague prompts. Specific phrasings, named time windows, and a sense for which tool family fits the question all reduce wasted tool calls.

Where to go next