Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.llmquantdata.com/llms.txt

Use this file to discover all available pages before exploring further.

Available as MCP tool: etf_lookup — call directly from Claude / Cursor / any MCP client. See MCP Server for the 60-second setup.
Live   free · 0 credits

What it does for your agent

etf_lookup returns a single US-listed ETF’s basic info (name, issuer, asset class, category), SEC registration info (CIK / Series / Class), the latest available regulatory disclosure snapshot, and summary derivatives — top holdings, sector / country / asset-type exposure. Use it as the ETF context entry point: when an agent needs to know what an ETF is, what it holds at a high level, or whether the symbol is even covered, this is the first call. It is not an OHLCV endpoint. For price history use equity_historical_prices — ETFs trade like stocks and live on the same daily-bar contract. It is not a current / intraday holdings feed either: what you get is the latest snapshot the ETF filed with the SEC, which is not the issuer’s daily latest book. Tickers outside coverage (today: IBIT / DRAM) still return 200 OK with coverage_status="unsupported" and an explicit coverage_notice — so the agent can keep reasoning instead of mis-reading silence as “no holdings”.

Response

data
EtfLookupResult
required
meta.creditsUsed
number
Always 0 — lookup is free.
meta.remainingCredits
number
Account credits remaining.
200 OK · etf_lookup (supported)
{
  "data": {
    "ticker": "SPY",
    "fund_name": "SPDR S&P 500 ETF Trust",
    "issuer": "State Street",
    "asset_class": "equity",
    "category": "Large Blend",
    "cik": "0000884394",
    "series_id": "S000004310",
    "class_id": "C000012075",
    "expense_ratio": 0.0945,
    "aum": null,
    "nav": null,
    "market_price": null,
    "premium_discount_pct": null,
    "inception_date": "1993-01-22",
    "holdings_count": 503,
    "top_holdings": [
      { "ticker": "AAPL", "holding_name": "APPLE INC", "weight": 0.071 },
      { "ticker": "MSFT", "holding_name": "MICROSOFT CORP", "weight": 0.065 }
    ],
    "sector_exposure": [
      { "sector": "Information Technology", "weight": 0.297 },
      { "sector": "Financials", "weight": 0.135 }
    ],
    "country_exposure": [{ "country": "US", "weight": 0.99 }],
    "asset_type_exposure": [{ "asset_type": "equity", "weight": 0.995 }],
    "source": "sec_nport",
    "source_url": "https://www.sec.gov/files/dera/data/form-n-port-data-sets/2019q4_nport.zip#FUND_REPORTED_HOLDING.tsv",
    "as_of_date": "2019-09-30",
    "fetched_at": "2026-05-12T03:14:00Z",
    "stale": false,
    "coverage_status": "full",
    "coverage_notice": "Latest available SEC regulatory disclosure snapshot. Not the issuer's daily latest holdings."
  },
  "meta": { "creditsUsed": 0, "remainingCredits": 100 }
}
200 OK · etf_lookup (outside coverage)
{
  "data": {
    "ticker": "IBIT",
    "fund_name": null,
    "issuer": null,
    "asset_class": null,
    "category": null,
    "cik": null,
    "series_id": null,
    "class_id": null,
    "expense_ratio": null,
    "aum": null,
    "nav": null,
    "market_price": null,
    "premium_discount_pct": null,
    "inception_date": null,
    "holdings_count": null,
    "top_holdings": null,
    "sector_exposure": null,
    "country_exposure": null,
    "asset_type_exposure": null,
    "source": "sec_nport",
    "source_url": null,
    "as_of_date": null,
    "fetched_at": null,
    "stale": false,
    "coverage_status": "unsupported",
    "coverage_notice": "IBIT is not in the current covered ETF list. As a spot Bitcoin trust, its SEC disclosure path differs from the conventional ETFs we cover today; we may add a dedicated path later."
  },
  "meta": { "creditsUsed": 0, "remainingCredits": 100 }
}

Coverage semantics

coverage_statusMeaningstale
fullTicker is in the current covered ETF list; core fields and the holdings snapshot are available.false (typically)
partialTicker is covered but some fields are missing — null on the affected fields.false / true
staleSnapshot was once available but the latest refresh failed or aged past the freshness window. Old cache is served.true
unsupportedTicker is not in the current covered list. Returns 200 OK with an explicit notice — never a silent empty.false
Treat coverage_status as a contract: agents should branch on it before consuming downstream fields.

Notes

Pair with etf_holdings when the agent needs the full position list, weights, or wants to compute overlap between two ETFs. etf_lookup already returns a top_holdings summary; only escalate to etf_holdings if the top-N isn’t enough.
For ETF price history, do not call this tool — call equity_historical_prices with the ETF ticker. ETF OHLCV lives on the same equity historical contract.
lookup is free (0 credits), but the call is still recorded in your usage log. Use it freely as a coverage probe before spending credits on holdings.

Current limitations

Coverage is limited. We cover a curated set of popular ETFs today (e.g. SPY, QQQ, VTI, SOXX, ARKK). Tickers outside coverage return coverage_status="unsupported" — never a silent empty. We do not promise the full US ETF universe.
Regulatory disclosure snapshot, not daily. Holdings + exposure come from SEC official regulatory disclosure datasets with a multi-week to ~60-day publication lag. as_of_date is the disclosure report date, not “today’s holdings”.
IBIT / DRAM are outside coverage today. IBIT is a spot Bitcoin trust whose SEC disclosure path differs from the conventional ETFs we cover. DRAM lacks a reliable mapping in our current data sample. Expect coverage_status="unsupported" for now.
Issuer PDFs are not parsed. Fields like expense_ratio / aum / nav / market_price / premium_discount_pct may be null.

Direct invocation

// Supported ticker
{
  "method": "tools/call",
  "params": {
    "name": "etf_lookup",
    "arguments": { "ticker": "SPY" }
  }
}

// Unsupported ticker — returns 200 OK with coverage_status="unsupported"
{
  "method": "tools/call",
  "params": {
    "name": "etf_lookup",
    "arguments": { "ticker": "IBIT" }
  }
}

Full parameter reference

ticker
string
required
US-listed ETF ticker (e.g. SPY, QQQ, VTI, SOXX, ARKK). Case-insensitive; the server uppercases and trims. Only A-Z, 0-9, ., - are accepted. Tickers outside coverage return 200 OK with coverage_status="unsupported".

ETF Holdings

Full holdings list for one ETF — paginated, sorted by weight descending.

Equity Historical Prices

ETF OHLCV history lives on the equity daily-bar endpoint.

MCP Server setup

Connect Claude / Cursor / any harness in 60 seconds.