Skip to main content
Glama

TickerInside ETF Holdings

Coverage and ETF search

list_etfs
Read-onlyIdempotent

Use this when the user asks whether a US ETF is covered, wants to find an ETF by name or ticker, or asks how many ETFs the data covers and how recent it is. Returns the date of the data and the count of covered ETFs by source: the issuers' own holdings files, SEC Form N-PORT filings, trusts' filings, sponsors' files and prospectuses, and how many of the US-listed ETFs that is. With query, it returns up to 50 matching ETFs with their names, sources and categories; without query, it also lists every covered ticker by source unless include_tickers is false, a long answer. Mutual funds, closed-end funds and funds listed outside the US are not covered. Not for an ETF's holdings or figures (get_etf_holdings).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryNoA ticker or words from an ETF's name, for example VOO or semiconductor. Case does not matter.
sourceNoOnly the ETFs read from the issuers' own files, only the stock ETFs from SEC filings, only the fixed income ETFs, only the multi-asset ETFs, only the derivative-based ETFs, only the trusts and pools, only the ETFs from their sponsors' files, or only the ETFs with only a prospectus file.
include_tickersNoWhether an answer without query lists every covered ticker, by source, and only those of source when it is given. true or left out adds the lists, a long answer; false returns the counts and dates alone.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
as_ofNo
sourceYes
issuersYes
matchesNo
match_countNo
funds_coveredYes
us_listed_etfsNo
funds_by_sourceYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / query / description
      Previous value: -"A ticker or words from a fund's name, for example VOO or semiconductor. Case does not matter."New value: +"A ticker or words from an ETF's name, for example VOO or semiconductor. Case does not matter."
    • changedInput schema / properties / source / description
      Previous value: -"Only the funds read from the issuers' own files, only the stock ETFs from SEC filings, only the fixed income funds, only the multi-asset funds, only the derivative-based funds, only the trusts and pools, only the funds from their sponsors' files, or only the funds with only a prospectus file."New value: +"Only the ETFs read from the issuers' own files, only the stock ETFs from SEC filings, only the fixed income ETFs, only the multi-asset ETFs, only the derivative-based ETFs, only the trusts and pools, only the ETFs from their sponsors' files, or only the ETFs with only a prospectus file."
  2. Changed2 schema fields changed
    • addedOutput schema / properties / matches / items / properties / category
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / matches / items / properties / category_id
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  3. Added

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a safe read (readOnlyHint, idempotentHint, openWorldHint=false), but the description adds real behavioral weight: the 50-result cap on queries, the distinction between the with-query and without-query response shapes, the warning that omitting include_tickers returns 'a long answer', and that counts are broken out by source. These are operationally relevant behaviors not encoded in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the when-to-use clause, then response shape, then parameter effects, then exclusions and the sibling pointer. It is dense and slightly run-on in the middle enumerating sources, but nearly every clause carries routing or behavior information; little is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value detail is optional, yet the description still tells the agent what shape the answer takes (counts by source, date of data, optional ticker lists) and the truncation limit. Combined with full schema coverage and safety annotations, an agent has everything needed to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description goes beyond it by explaining the consequence of include_tickers ('lists every covered ticker by source' vs 'counts and dates alone') and the 50-match ceiling implied for query. It does not explain the source enum values, but those are already documented verbosely in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a concrete verb+resource ('list covered US ETFs') and immediately scopes it to search, coverage counts, and data recency. It explicitly distinguishes itself from the closest sibling by ending with 'Not for an ETF's holdings or figures (get_etf_holdings)', so an agent can separate this from get_etf_holdings, get_etf_flows and the compare_* tools without reading schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit trigger conditions ('when the user asks whether a US ETF is covered, wants to find an ETF by name or ticker, or asks how many ETFs the data covers') and explicit exclusions (mutual funds, closed-end funds, non-US listings). It also names the alternative tool for the adjacent need, which is exactly what a routing decision requires.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources