How to Connect Market Data to Claude with MCP
A step-by-step guide to giving Claude (or any MCP client) live, sourced market data: get a key, add the MCP server, and start asking in plain language.

The short version
Connecting market data to Claude takes one command. Mint an API key (new accounts get free credits), then run claude mcp add --transport http arkolith https://arkolith.com/api/mcp --header "Authorization: Bearer YOUR_KEY" in Claude Code. Claude immediately gains tools over SEC filing data: 13F holdings (1,824 Q1 2026 filers, 1.87M positions, $53.7T reported) plus 51,000+ insider transactions, every figure traceable to its source filing. Prefer code? The same key works against the REST API.
Three steps
1. Get a key
Sign up and open your credits page to mint an API key. New accounts get free credits, so you can test the whole flow before paying anything. Treat the key like a password:
- Keep it out of the repo.
claude mcp addstores the header in local client config, which is fine. Committed files, shared prompts, and screenshots are how keys leak; in code, load it from an environment variable. - One key per surface. Separate keys for your interactive agent and your server-side scripts mean a leak revokes one surface, not both.
- Rotation is cheap. Revoke, mint again, re-run the add command. Nothing else changes.
Calls are metered in credits, weighted by tool cost: an entity search costs less than a full holdings history. Balance and per-key usage live on the same page.
2. Add the MCP server to Claude
In Claude Code, register the server once. It speaks the Model Context Protocol over HTTP, authenticated with your key:
claude mcp add --transport http arkolith \
https://arkolith.com/api/mcp \
--header "Authorization: Bearer YOUR_KEY"
That's it. Claude now sees Arkolith's tools (search, fund lookups, holdings, and more) and can call them on demand. New to MCP? Start with What is an MCP server?.
Two details worth knowing:
- Scope. Registration defaults to the project where you ran the command. Pass
--scope userto make it machine-wide, or commit a.mcp.jsonso teammates inherit the setup without touching keys. - Verify before you ask. Run
/mcpand confirmarkolithshows as connected with its tool list. A failed handshake surfaces here in two seconds, not as a confusing refusal mid-conversation.
If you want the full setup path with screenshots and account steps, use the MCP quickstart. This post is the short version for Claude Code users who already know where their API key lives.
3. Ask in plain language
Now you can ask things like "Which funds added to their position in Apple last quarter?" and the agent will pick the right tools, chain them, and answer with sourced figures plus links you can verify.
A real multi-step run: you ask "Did Berkshire's reported portfolio get more or less concentrated over the last two quarters? Cite the filings." A well-behaved agent will:
- Call the search tool to resolve "Berkshire" to the correct filer. Name matching in SEC data is messy: parent entities, similar fund names, stale legal names.
- Pull the two most recent quarters of reported holdings for that filer.
- Compute top-position weights itself from the returned values. The arithmetic happens in the agent; the inputs come from filings.
- Answer with both filings' accession numbers attached, so you can click through to EDGAR and check.
Step 1 is the part most people skip, and where silent errors are born: a model guessing identifiers from training data produces confidently wrong joins that look plausible. Forcing resolution through a tool is what makes the rest of the chain trustworthy. To eyeball what the agent should be seeing, the same portfolio is browsable on the Buffett fund page.

Prefer code? Use the REST API
The same data is available over a plain REST API. Pass your key as a bearer token:
# Your remaining credits
curl -H "Authorization: Bearer YOUR_KEY" \
https://arkolith.com/api/v1/funds
# Search across funds, managers, and holdings
curl -H "Authorization: Bearer YOUR_KEY" \
"https://arkolith.com/api/v1/search?q=berkshire"
Both surfaces share one backend and one credit wallet, so the same number always agrees across them. Choosing between them is a workflow question, not a data question:
| Situation | Use |
|---|---|
| Interactive research inside Claude Code or another agent | MCP |
| A script, scheduled job, or backend service | REST |
| A product feature your users touch | REST, with MCP for internal debugging |
| Not sure yet | MCP first, the fastest way to validate a question |
The longer version of that decision is in MCP vs REST API. Full endpoint reference, rate limits, and field notes live in the API docs.
What the tools can honestly answer
Connecting a data server is pointless if you do not know what it can answer truthfully. Arkolith's core is SEC EDGAR disclosure data, and the thing to internalize is each filing's reporting lag, because the lag defines what "current" means:
| Filing | Who files it | Deadline | What that means for your agent |
|---|---|---|---|
| 13F | Institutional managers over the $100M threshold | 45 days after quarter end (2026: Feb 17, May 15, Aug 14, Nov 16) | Quarterly snapshots of long positions, never live positioning |
| Form 4 | Officers, directors, large holders | 2 business days after the transaction | The freshest signal in the set |
| Form 3 | Newly registered insiders | 10 days | Establishes a baseline stake, not a trade signal |
| Form 5 | Insiders, annual catch-up | 45 days after fiscal year end | Late or exempt transactions, usually small |
| 13D | Activist owners | 5 business days | Stake disclosures with stated intent attached |
When a user asks "what is Berkshire holding right now?", the honest answer is "as of the last reported quarter", and a good agent says so. Holdings questions are quarterly; insider questions can be days fresh. Conflating the cadences is how this data gets over-read.
Two edge cases bite people who treat filings as a clean time series. First, amendments: a filer can restate a quarter weeks after the original filing, so yesterday's answer can legitimately differ from today's. Second, 13F scope: short positions are invisible, and option legs need careful reading because a large reported put position is a bearish bet, not a long.
What to ask first
Start with questions that force the agent to fetch data instead of speaking from memory:
| Prompt | What Claude should do |
|---|---|
| "Search for Berkshire Hathaway" | Resolve the entity through the search tool |
| "Show funds that reported Nvidia exposure" | Pull sourced holdings from 13F data |
| "Find recent insider activity for this issuer" | Use Form 4 data instead of guessing |
| "Give me the source for that number" | Return the filing URL, timestamp, and source record |
Good test prompts are narrow: one issuer, one fund, one filing. Once tool calls work, climb one rung at a time: a two-filer comparison such as "Compare Berkshire and Scion's largest reported positions and cite the filings", then a question spanning two datasets, like "are insiders buying the names large funds added last quarter?" Each rung adds one tool call, so when something breaks you know which link failed.
Troubleshooting
- Claude says it cannot see the tool. Re-run the MCP add command, check the server name, and confirm status with
/mcp. - It works in one project but not another. That is scope, not breakage; re-add with
--scope userto make it machine-wide. - Claude says unauthorized. Check the header is exactly
Authorization: Bearer YOUR_KEYwith no stray whitespace. If the key is suspect, mint a fresh one from the credits page. - Calls fail after working earlier. Check your credit balance first; an exhausted wallet looks like a generic tool failure from inside the chat.
- The answer has no citation. Add a standing rule to your project instructions: "Use Arkolith tools for every market-data number and cite source, timestamp, and URL." Standing rules beat per-message reminders.
- You are building an app, not a chat workflow. Use REST from your code and reserve MCP for the assistant. Both surfaces share the same backend.
When MCP is better than copy-paste context
Copying a filing summary into a prompt works once. It fails when the user asks a follow-up, when the data changes, or when the model needs to compare several entities. Staleness is the quiet killer: a pasted snapshot ages the moment a new quarter or an amendment lands, and nothing in the chat tells the model its context is stale. A tool call returns the current record, so the same question keeps producing the right answer next month, and your team can reproduce the lookup through REST.
It also keeps onboarding cleaner. Instead of pasting CSV rows into every new chat, you connect the server once, keep the key scoped to the account, and let the agent call the data layer only when the question needs it, leaving the context window free for reasoning.
Why every result is sourced
Each datapoint Arkolith returns carries its source, timestamp, and a canonical URL. That is deliberate: it lets your agent cite primary evidence instead of hallucinating a number, and it gives you (or an auditor) a way to verify any claim. Provenance is the product.
In practice, every holdings row and insider transaction traces to the accession number of its filing, when it was filed, and where the raw document lives on EDGAR. For a trading desk that is the difference between "the model said so" and a claim a compliance reviewer can verify in one click. For agent builders it is cheap insurance: silent hallucinations turn into checkable statements that fail loudly.

Frequently asked questions
Does this cost money?
You start with free credits. After that it is usage-based: you pay for the calls you make, with no per-seat licenses. See pricing.
Which clients work?
Any MCP-compatible client. Claude Code is the most common; the same server works wherever MCP is supported.
What data can I query today?
SEC EDGAR 13F institutional holdings and insider transaction data are live now, with more real-world sources rolling out. Browse what's there on the funds directory.
How fresh is the data Claude sees?
As fresh as the filings allow. 13F holdings follow the quarterly cycle with a 45-day deadline, so a position reported in mid-May reflects the quarter ended in March. Form 4 filings land within 2 business days of the trade. The agent always reads the latest filed state, including amendments.
Can the agent cite where a number came from?
Yes. Every datapoint carries provenance back to its SEC EDGAR source filing, so an agent can attach the accession number to any figure it quotes. That audit trail is the difference between a grounded answer and confident recall.
Ready? Get a key, follow the MCP quickstart, and connect Arkolith to your agent in a few minutes.
Keep reading

WhaleWisdom API Alternative: 13F Data With MCP
A WhaleWisdom API alternative should preserve SEC 13F source links, accepted dates, comparable filings, and agent-ready retrieval paths.

13F Database: How to Search Institutional Holdings
A 13F database lets you search institutional holdings by manager, issuer, ticker, CUSIP, filing period, and accepted date without treating delayed filings as live trades.

How to Track Institutional Ownership Changes
Track institutional ownership changes by separating quarterly 13F position changes from faster Form 4 insider signals and keeping every claim tied to a filing.