The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Pequod MCP listing page.
SEC-primary-source ETF holdings + identifier crosswalk for agents.
An MCP (Model Context Protocol) server that gives AI agents the complete holdings of any US-registered ETF straight from SEC EDGAR N-PORT filings — not a top-10 scrape — plus a set of identifier-crosswalk tools (ticker, CUSIP/SEDOL, FIGI → resolved symbol) backed by OpenFIGI and SEC reference data. Runs locally over stdio; no vendor market-data subscriptions required.
| Tool | What it does | Sources |
|---|---|---|
lookup_cik | Ticker → SEC CIK + entity metadata (name, SIC, exchanges, fiscal year end) | SEC company_tickers.json + submissions API |
resolve_ticker | Raw ticker + optional exchange code → Yahoo-convention symbol, verified | Exchange-suffix map (pure string mapping) + SEC + OpenFIGI |
resolve_cusip | CUSIP (or SEDOL) → symbol, with cross-source verification | OpenFIGI (one batched request) + SEC name/ticker agreement |
resolve_figi | Bloomberg FIGI → symbol, with cross-source verification | OpenFIGI + SEC name/ticker agreement |
get_etf_holdings | Any US ETF → complete holdings list from its latest monthly N-PORT filing (name, ticker, ISIN, FIGI, LEI, shares, USD value, % of net assets, country, currency) | SEC EDGAR N-PORT XML |
All tools are read-only.
Crosswalk results are verified without any market-data vendor:
company_tickers.json must agree with the OpenFIGI
security name. A gross name mismatch vetoes the mapping
(verification: "name_veto") rather than returning a plausible-looking
wrong symbol.verification: "openfigi" so you
can tell the confidence tiers apart.Yahoo Finance symbology (.SW, .T, .L, … suffixes) is applied as a
pure string convention — the default path makes no network calls to
Yahoo.
Run it directly (stdio):
The server works without a key (OpenFIGI anonymous rate limits apply). For heavier use, get a free key at https://www.openfigi.com/api and set:
An opt-in extra adds a live Yahoo quote block to crosswalk results. It is off by default and never used otherwise; enabling it means you accept the Yahoo Finance terms of use yourself.
Claude Desktop (claude_desktop_config.json) or any MCP client with a
stdio transport:
Claude Code:
1. "What does SCHD actually hold?"
The agent gets every position with weights, plus the EDGAR URL for citation — auditable back to the primary source.
2. "I have a CUSIP from a 13F — what stock is this?"
If OpenFIGI's mapping disagrees with SEC's registry on who the ticker
belongs to, the tool refuses (verification: "name_veto") instead of
handing back a wrong symbol.
3. "Compare two dividend ETFs' overlap."
company_tickers.json). Identifier
crosswalks come from the OpenFIGI API (FIGI is an open OMG standard)..cache/ next to the module, override with PEQUOD_CACHE_DIR) for
company_tickers.json (24 h) and N-PORT documents (30 days — filed
documents are immutable).report_date and source_url fields tell you exactly which
period you are looking at.| Variable | Default | Purpose |
|---|---|---|
API_OpenFIGI | (unset) | OpenFIGI API key (higher rate limits) |
PEQUOD_CACHE_DIR | .cache/ next to the module | On-disk cache location |
PEQUOD_YAHOO_VERIFY | (off) | Opt-in Yahoo enrichment (needs the [yahoo] extra) |
LOG_LEVEL | INFO | Server log verbosity |
Apache-2.0 — see LICENSE. Copyright 2026 AB Evergreen Analytics LLC.