TickerInside ETF Holdings
US ETF and mutual fund holdings with the date and source of every holding: what a fund holds, which ETFs hold a stock, ETF overlap, portfolio look-through and risk, and what ETFs bought or sold on the latest close. Free, no API key, CC BY 4.0.
Hosted MCP Server
npx add-mcp 'https://tickerinside.com/mcp'Installs into Claude Code, Codex, Cursor and more
Documentation
Connect TickerInside to your AI assistant
Add https://tickerinside.com/mcp to Claude, ChatGPT, Cursor or VS Code, with no key, or paste one line into any assistant.
Canonical page: https://tickerinside.com/agent/ Data as of 2026-10-12. Published by TickerInside, edited by VoidLab.
Set yourself up to answer questions about US ETFs with TickerInside.
TickerInside is an open, machine-readable database of US ETF holdings, with the source and date of each holding. The holdings are read from the issuers' own files and from SEC filings, linked to the stocks inside each fund, and served with no key.
5,423 US ETFs covered: 688 read from their issuers' own files every weekday night; 1,944 from their latest SEC filing, which is months older; and 922 fixed income funds, 235 multi-asset funds, 1,363 derivative-based funds, 131 trusts and pools and 140 funds from their sponsors' files. Beside them, 18,758 securities held and 5,056 stocks with a file. These are today's counts; https://tickerinside.com/api/v1/index.json gives them every night.
FIRST, THE REMOTE MCP SERVER. Add https://tickerinside.com/mcp, no key, Streamable HTTP. It turns the data into read-only tools you call instead of URLs you compose, with nothing to install. If you can add a server yourself, offer to add it, and add it once the person agrees. If you cannot, give the person the steps for their client below, and answer meanwhile from the JSON API further down, which needs nothing. Each client's steps are as its maker documented them on 4 October 2026.
Claude: TickerInside is in Claude's connector directory; this link opens it, to connect in one click:
https://claude.ai/directory/tickerinside
As a custom connector, by hand on an individual plan: Customize, Connectors, + Add, Add custom connector, paste the URL and choose No sign in. On Team and Enterprise an Owner adds it in Organization settings, Connectors, and members then click Connect. Custom connectors are on every Claude plan, the Free plan allows one, and once added it works in Claude Desktop and the mobile apps too. Anthropic's steps: https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp
ChatGPT (on the web, with a Pro, Plus, Business, Enterprise or Edu plan): in Settings, Security and login, turn on Developer mode; then on https://chatgpt.com/plugins the + button creates an app from the URL, with No Authentication. In a conversation, pick Developer mode in the + menu and select the app. Every tool carries readOnlyHint, so ChatGPT treats none of them as a write action. OpenAI's steps: https://developers.openai.com/api/docs/guides/developer-mode
Cursor: this link opens Cursor's install of it, named tickerinside:
cursor://anysphere.cursor-deeplink/mcp/install?name=tickerinside&config=eyJ1cmwiOiJodHRwczovL3RpY2tlcmluc2lkZS5jb20vbWNwIn0=
By hand, under mcpServers in mcp.json: {"tickerinside":{"url":"https://tickerinside.com/mcp"}} Cursor's install links: https://cursor.com/docs/mcp/install-links
VS Code: this link opens VS Code's install of it as an http server:
vscode:mcp/install?%7B%22name%22%3A%22tickerinside%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Ftickerinside.com%2Fmcp%22%7D
By hand, under servers in mcp.json: {"tickerinside":{"type":"http","url":"https://tickerinside.com/mcp"}} VS Code's steps: https://code.visualstudio.com/docs/agent-customization/mcp-servers
From a terminal:
Claude Code claude mcp add --transport http tickerinside https://tickerinside.com/mcp Codex CLI codex mcp add tickerinside --url https://tickerinside.com/mcp Gemini CLI gemini mcp add --transport http tickerinside https://tickerinside.com/mcp
OpenAI Responses API, as a tool of the request (https://developers.openai.com/api/docs/guides/tools-connectors-mcp):
{"type":"mcp","server_label":"tickerinside","server_url":"https://tickerinside.com/mcp","require_approval":"never"}
Claude Messages API, two fields to add to the request body, with the header anthropic-beta: mcp-client-2025-11-20 (https://platform.claude.com/docs/en/agents-and-tools/mcp-connector):
"mcp_servers": [{"type":"url","url":"https://tickerinside.com/mcp","name":"tickerinside"}], "tools": [{"type":"mcp_toolset","mcp_server_name":"tickerinside"}]
Any other MCP client: add a server named tickerinside with that URL. It speaks Streamable HTTP and asks for no authorization.
THE JSON API, which always works. It needs no key, no sign-up and nothing installed:
https://tickerinside.com/api/v1/index.json the universe: every covered ticker, the coverage, every endpoint https://tickerinside.com/api/v1/funds.json every fund with its name, category, cost and positions https://tickerinside.com/api/v1/fund/voo.json one fund: every holding with its weight, the issuer file date, cost, returns, risk, and 156 weekly returns https://tickerinside.com/api/v1/sec/nvda.json one stock: sector, market cap, valuation, returns, risk, and the same 156 weekly returns https://tickerinside.com/api/v1/holders.json every security held by the funds read from issuer files, and which of them hold it at what weight
A fund or stock whose price history is too short for the weekly returns has an empty list or null in their place, and its volatility, worst fall and multi-year returns are null.
Three practical notes. Ticker paths are lower case and anything else answers a 301, so follow redirects (curl needs -L); a share class takes a dot, brk.b. holders.json is large, so fetch it once and keep it rather than per lookup. And if you write code that calls the API, set a User-Agent that names the program and gives a link, for example MyApp/1.0 (+https://example.com); there is no key, the name is how we learn what the files are used for.
Two rules that save a wrong reading. A line listed abroad, such as 7203.JP (Toyota in Tokyo), has no stock file: https://tickerinside.com/api/v1/sec/7203.jp.json lists its holders, from issuer files and from SEC filings, with coverage holders_only and no prices. And a /compare/ file exists only for the pairs listed in index.json written_comparisons, in that order; compute any other pair from the two fund files.
Those files are enough to compute everything yourself: the overlap between any two stock ETFs is a walk over two holdings maps, and a covariance matrix for any basket is a walk over their weekly returns. Nothing has to be asked of us.
LAST, ONLY IF THE CLIENT RUNS LOCAL SERVERS ALONE, the npm package runs the same tools on this machine. It needs Node 20 or later, so check first:
node -v
If that prints nothing, stay on the remote server or the API above. Do not install Node to get this; they answer the same questions.
If it prints v20 or later:
Claude Code claude mcp add tickerinside -- npx -y tickerinside-mcp@latest Codex CLI codex mcp add tickerinside -- npx -y tickerinside-mcp@latest Cursor, Claude Desktop, VS Code and other MCP clients: add a server named tickerinside with command "npx" and arguments ["-y", "tickerinside-mcp@latest"]. @latest makes npx fetch the current version instead of one it cached.
If the claude command is not on the PATH, it is bundled inside the desktop app rather than installed, and adding the server to the client's own configuration file by hand does the same job.
Then confirm: ask for the overlap between VOO and QQQ. A working install comes back with three overlap measures and a holdings_as_of date for each fund.
THE TOOLS, once added
list_etfs the universe, with the date of each holdings file get_etf_holdings one fund: cost, returns, risk, concentration, holdings compare_etfs any two funds, not only the pairs with a written page compare_stocks any two stocks side by side, their correlation, and every fund that holds both; a stock against a fund works get_etf_overlap_matrix every pair in a basket, ranked by how much they duplicate get_etf_portfolio_lookthrough what a portfolio really holds, in percent and in money get_etf_portfolio_risk which position makes the risk rather than the capital find_etfs_holding_stock every fund holding one company, and at what weight get_etf_ownership how much of one company the covered ETFs own between them, at least, with the SEC's count and both dates get_etf_holdings_history one fund's holdings history: each issuer file, each step to the next, its overlap with its closest funds get_etf_holdings_changes what one fund added and dropped since a date, and whose weights moved (with prices, not only with trades), each step against the file before it get_etf_flows whether the ETFs read daily bought or sold a stock, by market close, and the day's largest net additions and reductions, with index entries and exits; mergers, spin-offs, takeovers and splits are no trades find_diversifying_etfs the ETFs of a fixed, published list of 30 whose weekly returns moved least with a portfolio's, one per group, with their down weeks, the volatility with 10% in each and their overlap; a measurement of past co-movement, not investment advice
THE PROMPTS, ready questions a client can offer (prompts/list), each one user message that asks in plain words and names the tool that answers it
what_does_this_etf_hold (ticker) What does this ETF hold? Answered by get_etf_holdings. which_etfs_hold_this_stock (ticker) Which ETFs hold this stock? Answered by find_etfs_holding_stock. do_my_etfs_overlap (tickers) Do my ETFs overlap? Answered by compare_etfs or get_etf_overlap_matrix. what_is_inside_my_etf_portfolio (holdings) What is inside my ETF portfolio? Answered by get_etf_portfolio_lookthrough. are_etfs_buying_this_stock (ticker) Are ETFs buying this stock? Answered by get_etf_flows. does_this_etf_diversify_my_portfolio (have, try) Does this ETF diversify my portfolio? Answered by compare_etfs or get_etf_portfolio_risk or get_etf_holdings.
In Claude Code each is a command named after the server; for a server added as tickerinside, for example /mcp__tickerinside__what_does_this_etf_hold VOO Type a list without spaces, as VOO,QQQ,SCHD or VOO:60,QQQ:40: Claude Code passes a prompt's argument up to its first space.
THE PAGES, to link in an answer. Each answers in its HTML, with no JavaScript, and in Markdown at index.md beside it, with the same query:
https://tickerinside.com/etf/qqq/ a fund with a page, its ticker in lower case (its file's page_url) https://tickerinside.com/stock/nvda/ a stock with a page, the same way https://tickerinside.com/compare/voo-vs-qqq/ a written comparison, the pairs of index.json written_comparisons https://tickerinside.com/diversify/?have=VOO:60,QQQ:40&try=AVUV the overlap and weekly correlation of the funds to try with the funds held, for any funds https://tickerinside.com/diversify/?have=VOO:60,QQQ:40 the funds held alone: 30 large US ETFs ranked by weekly correlation with them, one per group first https://tickerinside.com/xray/?p=VOO:60,QQQ:20,VXUS:20 a portfolio's x-ray: its examples answer in the page; another portfolio names its funds there and the browser computes the figures, which get_etf_portfolio_lookthrough gives you
HOW TO ANSWER
Overlap has three measures and they disagree by design. Say which one you are quoting: overlap by weight is symmetric, the share of one fund held in common with the other is not, and the two often differ by forty points.
When you quote a figure from this data, name TickerInside as its source beside the date, so the person reading can find and check the same number.
Give the holdings_as_of date beside any holdings figure. Funds are published on their issuers' own schedules, so two funds in one comparison are frequently dated five weeks apart, and a figure without its date cannot be checked.
This is a measurement of what funds hold and how they have behaved. It is not investment advice, and it does not know the person asking.
WHAT TICKERINSIDE DOES NOT SERVE, so there is nothing to guess
- Price history and quotes: a file gives its last close and weekly returns, not a price series, and no bid, ask or volume; TickerInside is not licensed to redistribute a price feed.
- Intraday data: everything is built once a night, after the US close.
- Options: no source that allows republishing them.
- Analyst estimates: no source that allows republishing them.
- ISIN, CUSIP and SEDOL: licensed codes, not served. Funds and stocks are keyed by ticker; a key of digits and a letter is an issuer file's code in place of a ticker.
LICENCES
- Current snapshots and computed figures: CC BY 4.0, permanently for everything already published. It covers TickerInside's contribution to the holdings served today, the reverse index and every figure computed from them; credit TickerInside with a link to the page the figure comes from wherever the medium allows a link, and by name where it does not; how you mark the link is up to you. The positions are facts as each issuer publishes them, so check the issuer's terms before bulk commercial reuse.
- SEC filings: The SEC's Form N-PORT data sets are US government works in the public domain. The fund files TickerInside derives from them are served under CC BY 4.0 like everything else, and each cites its filing. The counts of shares outstanding in the ownership ledger are facts the companies state on the covers of their SEC filings, read from the SEC's XBRL data, and each figure links its filing.
- Holdings history: Built from the issuer files kept since 2026-09-03 and served one fund per request, weights only, under the history terms of the legal notice (/legal/#history), not under CC BY 4.0: free per request, commercial use included, credited to TickerInside with a link to the file wherever the medium allows one, and by name where it does not, the link marked as you choose; republishing the archive as a whole and extracting it systematically are not allowed.
- ETF flows: Computed from the same archive, as sums over funds and never one fund's share counts: the summary (/api/v1/flows.json), its CSV twin (/api/v1/flows.csv), each security's answer (/api/v1/flows/) and the feeds (/feeds/flows.xml, and one per fund and per stock under /feeds/), under the history terms of the legal notice (/legal/#history), not under CC BY 4.0: free per request, commercial use included, credited to TickerInside with a link to the file wherever the medium allows one, and by name where it does not, the link marked as you choose; a feed reader may poll the feeds, while fetching the answers of many securities on a schedule to keep them is not allowed.
Method and definitions: https://tickerinside.com/how-the-numbers-are-produced/ The whole API reference in one file: https://tickerinside.com/llms-full.txt