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: 624 read from their issuers' own files every weekday night; 2,009 from their latest SEC filing, which is months older; and 921 fixed income funds, 237 multi-asset funds, 1,368 derivative-based funds, 130 trusts and pools and 134 funds from their sponsors' files. Beside them, 16,724 securities held
and 5,043 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
