Connect

The best MCP server for stock-market data

Not all markets MCP servers are the same. Some expose a handful of endpoints over a thin data layer; others are databases for agents with dozens of structured surfaces, daily refresh cycles, and the data-correctness details that actually matter for research. This guide explains what to evaluate and how ClawTerminal measures up across each criterion.

The short version

  • An MCP server is not a chatbot or a traditional API — it gives a reasoning model structured access to real data at query time. The model reasons; the server queries.
  • Evaluate a markets MCP server on five dimensions: coverage breadth, freshness, data integrity, tool design, and transport compatibility.
  • ClawTerminal covers ∼160 tools across SEC filings, XBRL fundamentals, prices, macro (FRED/EIA/World Bank/USDA/CFTC), crypto, prediction markets, openFDA, Congress STOCK Act trades, and lobbying — all through a single endpoint.
  • Free closed beta. Get a key and connect in under a minute.

What an MCP server is, briefly

The Model Context Protocol is an open standard from Anthropic that lets an AI assistant call external tools at runtime. An MCP server registers a set of callable tools. An MCP client — Claude Desktop, Claude Code, Cursor, ChatGPT — lets the model discover and invoke them. The model picks the right tool and arguments; the server executes the query and returns structured data; the model reasons over the result.

For markets research, this separation matters. The model is not being asked to recall a number from training data. It is calling a function that hits a real database. The step-by-step wiring for Claude Desktop and Claude Code is covered in a separate post; this one focuses on what makes a markets MCP server worth connecting to in the first place.

Criterion 1: coverage breadth

The first question is how much of the investable surface the server actually covers. A server that returns only price quotes is useful for a narrow slice of questions. A server built as a full markets terminal can chain surfaces in a single conversation: pull a 13F, check the price reaction to the 8-K, compare XBRL fundamentals, then cross-reference the FDA approval timeline.

SEC filings

The minimum credible filing coverage is: 8-K current reports, 10-K and 10-Q periodic filings, Form 4 insider transactions, Schedule 13D/13G beneficial ownership, Form 13F-HR institutional holdings, N-PORT fund holdings, DEF 14A proxy and executive compensation, and S-1/424B IPO prospectuses. Each of these is a distinct structured surface, not just a PDF fetch.

ClawTerminal ingests all of them. 8-Ks are semantically searchable over the full text, with per-item code indexing and price-reaction studies tied to the filing date. Form 4 rows are normalized — open-market buys can be clustered across officers and directors to surface coordinated accumulation. 13F holdings carry quarter-over-quarter deltas so you can ask what a manager added or exited without doing the diff yourself. The investing agent guide shows how these surfaces chain together in practice.

Fundamentals and prices

XBRL fundamentals from SEC companyfacts cover revenue, operating income, cash flow from operations, capital expenditure, balance sheet items, and shares outstanding for several thousand US issuers. The server correctly handles the duration-versus-instant distinction in XBRL — revenue is a duration concept with a start and end date; cash on the balance sheet is an instant. Getting that wrong produces garbage TTM aggregations.

Prices are split-adjusted daily OHLCV with dividends and splits tracked separately, sourced from a commit-cursored Dolt mirror and stored in columnar parquet queried via DuckDB. Market cap calculations use the same splits-adjusted close the price chart shows, so screener values are internally consistent.

Macro, alternative, and specialized data

Beyond equities, serious coverage means macro context. ClawTerminal includes FRED public-domain macro series, EIA energy data, World Bank commodity prices (gold, crude, grains, metals, fertilizers — monthly from 1960), and USDA NASS Quick Stats for US crop progress, condition and production. CFTC Commitment of Traders positioning data lets you query net speculative positioning on any major commodity or currency futures market.

On the alternative side: Hyperliquid perps — core crypto, Ventuals pre-IPO private equity perps (OPENAI, SPACEX, ANTHROPIC and others), trade.xyz traditional-asset perps (CL, GOLD, TSLA, NVDA and others), and centralized exchange spot pairs. OpenFDA drug approvals and recalls, with company event studies and market-adjusted CAR calculations around the approval date. US Congress STOCK Act trades from the House and Senate disclosure feeds. US Senate LDA lobbying filings. Prediction markets search across venues.

Coverage gap cost: every surface not in the server is a surface the model has to fabricate from training memory. For specialized data like FDA approval dates or congressional trade values, that fabrication is essentially always wrong. Coverage breadth is a data-integrity issue, not just a convenience issue.

Criterion 2: freshness

A dataset ingested once and never updated is a snapshot that decays in usefulness from the moment it was built. For markets research, the relevant question is whether yesterday’s SEC filings are in the database today — not whether the corpus was built six months ago.

ClawTerminal runs a cron-based ingestion chain. SEC filings (8-K, Form 4, 13F, N-PORT, 13D/G, DEF 14A) are polled from EDGAR on a daily schedule. Prices are updated daily from a commit-cursored Dolt source. FRED and EIA macro are synced daily. Congress trades are scraped daily from the Capitol Trades disclosure feed. openFDA checks the upstream export date and re-downloads only when the source has advanced.

The word “daily” matters because the surfaces that drive the most time-sensitive analysis — insider transactions, 8-Ks, FDA events — all have signal that decays fast. An 8-K filed at market open and not in the database until next week is not useful for price-reaction research.

Criterion 3: data integrity

This is where most thin wrappers fail silently. Returning a number is not the same as returning a correct number. The correctness details that matter most for markets data:

What to look forWhy it mattersHow ClawTerminal handles it
Split-adjusted prices A stock that did a 10-for-1 split shows an apparent 90% drop in raw prices. Screener P/E ratios, returns, and market cap all require the adjusted series. Split events tracked separately; all OHLCV queries apply the adjustment factor. Market cap = shares × split-adjusted close.
XBRL duration vs instant Revenue is a flow (duration); cash is a stock (instant). Mixing them produces nonsense TTM aggregations. Duration and instant concepts routed through separate aggregation paths. get_fundamentals enforces the distinction per concept.
Nullable ratios P/E with a negative or zero denominator should be NULL, not a large negative number that looks like a valid value. All ratio columns are NULL on non-positive denominators. No garbage values in screener results.
Congressional trade values STOCK Act disclosures report a value range, not an exact amount. Treating the range maximum as precise overstates position size. Values stored as bucket midpoints; documented as such in the tool response. Never quoted as exact figures.
13F staleness Institutional 13F filings are due 45 days after quarter end. The most recent quarter in the database is always at least 45 days stale. list_holdings returns the as-of quarter date. Tools don’t pretend current-quarter positions are known.
Insider transaction dedup Form 4 amendments can create double-counting. Both derivative and non-derivative tables must be normalized. Rows keyed on (accession, txn_idx); outlier rows with per-share price above $1M or total value above $1T quarantined via a quality flag rather than silently dropped.

None of these are exotic requirements. They are the minimum necessary for the numbers coming back from the server to be usable in actual research rather than illustrative demos.

Criterion 4: tool design

A server with 160 tools creates a different set of problems than a server with 5. The model’s tool list is part of its context. Flooding it with 160 tool schemas bloats the context window and can degrade reasoning quality. A well-designed server solves this with a lean mode and a tool-discovery layer.

The resolve-entity-first pattern

Markets data has a pervasive identifier ambiguity problem. “Apple” could be a ticker (AAPL), a CIK (320193), a CUSIP, an ISIN, or a company name match in a free-text field. Every deeper tool that takes a company identifier should be preceded by a universal resolver that canonicalizes the input.

ClawTerminal ships a resolve_entity tool that accepts any of: ticker, CIK, company name, CUSIP, ISIN, accession number, or holder name — and returns the canonical form. The model calls this first; downstream tools receive clean identifiers and produce correct results. Without this, the same company can come back from different tools under different IDs and the model conflates or misses the match.

Tool discovery for 160+ tools

The full tool surface is too large to list in every session. ClawTerminal solves this with three meta-tools: search_tools accepts a plain-language description and returns the tools that match by cosine similarity over a prebuilt embedding index; get_tool_schema returns the full JSON schema for any named tool; invoke_tool calls any registered tool by name and arguments JSON. The model can discover what it needs by intent, inspect the schema, and invoke — without needing 160 schemas in context at once. In lean mode, only a ~20-tool static core plus these three meta-tools appear in the tools/list response. Everything else is reachable on demand.

Consistent empty-result conventions: most ClawTerminal tools return [] or {} on no data; a small number (notably get_prices) return {"error": "..."}. Both shapes are documented and consistent within each tool, so the model can distinguish “no data” from an actual error without guessing.

Criterion 5: access and transport

The practical test is whether the server actually works across the clients researchers use. The MCP ecosystem has fragmented slightly: Claude Desktop and Claude Code use HTTP transport with a Bearer header; ChatGPT’s connector dialog and Claude Desktop’s custom connector field cannot set custom Authorization headers; Cursor and Codex have their own configuration conventions.

ClawTerminal handles this with two route patterns. The standard route is https://mcp.clawterminal.ai/mcp with a Authorization: Bearer sk-live-… header — this works for Claude Desktop (JSON config), Claude Code (claude mcp add), Cursor, Codex, and any custom Python or curl client. For GUI clients that cannot set headers, a URL-embedded-key route at https://mcp.clawterminal.ai/k/<sk-live-…>/mcp with auth set to “none” passes the key via Caddy, which strips the prefix before forwarding. The URL is the credential in that case — treat it like a password.

Full setup instructions for every client are on the setup page, including a one-line skill you can paste into any assistant to skip the JSON configuration entirely.

Architecture: why it’s a database, not a chatbot

The framing matters for understanding what you are connecting to. ClawTerminal is explicitly architected as a database for AI agents. Raw SEC documents land in Cloudflare R2 object storage. Structured rows — normalized filing metadata, insider transactions, 13F holdings, fundamentals, macro series — live in Postgres with pgvector for hybrid BM25+semantic search. Prices are columnar parquet files in R2, queried at runtime via an in-memory DuckDB instance that ATTACHes Postgres and reads R2 with the S3 httpfs extension. No data is generated on demand; all of it is ingested, validated, and stored before the model ever asks for it.

This is the right architecture for research because it separates the data layer from the reasoning layer cleanly. The model does not generate numbers; it retrieves them. If a tool returns a bad number, the problem is in the ingestion pipeline, where it can be diagnosed and fixed. If a chatbot generates a bad number, the problem is in the model weights, where it cannot.

The community layer — the Ideas board with trade ideas scored automatically against SPY, Watchlists with automated scans, and Portfolios with full risk analytics — is built on the same structured foundation. Ideas get entry prices auto-snapped to the last adjusted close before posting, and are scored at horizon end via the same price series that feeds every other tool.

Real data still needs judgment. Getting the right number back from a tool does not make the interpretation of that number correct. 13F holdings are 45 days stale. Congressional trade values are range midpoints. Insider clusters carry IPO and PIPE noise. FDA CIK resolution is best-effort and partial by design. The server documents all of these limitations in tool responses. The analysis is still yours to do. Our playbook posts walk through the filters that matter for each surface.

What the connected experience looks like

Once wired up, the interaction is plain English. A few examples of how the tool chain fires under the hood:

  • “Which biotech insiders have been buying heavily in the last 30 days?” → cluster_insider_buys filters to SIC 2836, sorted by open-market purchase value.
  • “Show me Berkshire’s latest 13F changes.” → resolve_entity canonicalizes the name, then fund_holding_changes diffs the two most recent quarters.
  • “What FDA approvals happened in oncology this year?” → list_drug_approvals filtered by therapeutic area and date range, with the company CIK for any equity lookup that follows.
  • “Which senators traded tech stocks in Q1?” → recent_congress_trades filtered by asset class and sector, anchored on disclosure date.
  • “Screen for US small-caps with Sharpe above 1.5 and free cash flow positive.” → screen_equities with a multi-rule filter over the equity screener table, which combines XBRL fundamentals, price-derived ratios, and trailing risk metrics.

You do not need to know the tool names to get these answers. ClawTerminal’s search_tools meta-tool lets the model find the right capability by intent. And because all 160+ tools share a single endpoint and a single Bearer key, none of these surfaces require a separate credential or a separate connection.

Frequently asked questions

What data does a markets MCP server cover?

A serious markets MCP server should cover SEC filings (8-K, 10-K, 10-Q, Form 4, 13D/G, 13F, N-PORT, DEF 14A, S-1/424B), XBRL fundamentals, split-adjusted prices and dividends, macro series (FRED, EIA, World Bank, USDA), CFTC COT positioning, crypto perps and spot pairs, prediction markets, openFDA drug approvals and recalls, US Congress STOCK Act trades, and lobbying data. ClawTerminal covers all of these through a single endpoint.

Is ClawTerminal free?

ClawTerminal is currently in free closed beta. Sign in with a magic link, verify your email, and your sk-live key is shown immediately. No cost during the beta period.

Which AI clients can connect?

Any client that speaks the HTTP MCP transport: Claude Desktop, Claude Code, Cursor, OpenAI Codex and ChatGPT (via the URL-embedded-key route). The server uses standard Bearer authentication, and a URL-embedded-key variant handles GUI clients that cannot set custom headers. Step-by-step instructions for each client are on the setup page.

How is this different from a finance API or a chatbot?

A finance API returns data but has no reasoning layer. A chatbot reasons but has no live data. A markets MCP server sits between them: it gives a reasoning model like Claude structured access to real, database-backed data at query time. The model decides when to call which tool; the server executes the query and returns structured results. ClawTerminal is explicitly designed as a database for agents, not a chatbot.

Connect your AI to real markets data

Free closed-beta key, one MCP endpoint, 160+ tools across SEC, fundamentals, macro, crypto, FDA, Congress and more.