Skip to main content
Glama

TickerInside ETF Holdings

ETF holdings and profile

get_etf_holdings
Read-onlyIdempotent

Use this when the user asks what a US ETF or mutual fund holds or its sectors, cost, size, returns and risk. Returns the holdings largest first with their weights, category, sector, mega-cap tech and country weights, expense ratio, assets, top 10 weight, 1, 3 and 5-year returns, volatility, beta and worst fall, with each file's date; most ETFs read from SEC filings have no return or risk figures here. Returns are past, not a forecast. A bond ETF gives its lines by issuer, coupon and maturity, with duration; an ETF read from SEC filings that is leveraged, inverse, under half in stock or half in swaps and futures lists its shares, and its contracts apart as notional exposure; an option income ETF read as a stock ETF (JEPI, QYLD) lists its stocks, not its options or notes; a trust what its filing says it holds; a prospectus-only ETF its objective. Not for comparing ETFs (compare_etfs) or the ETFs holding a stock (find_etfs_holding_stock).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
tickerYesA US ETF ticker, for example VOO or SCHD. Case does not matter.
holdingsNoHow many of the largest holdings to return, from 0 to 500; 25 when left out. 0 returns the figures without holdings.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNo
sourceNo
tickerNo
coveredNo
categoryNo
holdingsNo
breakdownNo
positionsNo
not_coveredNo
aum_billionsNoIn billions of US dollars.
prices_as_ofNo
beta_vs_sp500No
return_1y_pctNo
return_3y_pctNo
return_5y_pctNo
holdings_as_ofNo
volatility_pctNo
holdings_sourceNo
expense_ratio_pctNo
top_10_weight_pctNo
worst_fall_3y_pctNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedOutput schema / properties / breakdown
      Added value: +{
      +  "type": "object"
      +}
    • addedOutput schema / properties / category
      Added value: +{
      +  "properties": {
      +    "id": {
      +      "type": "string"
      +    },
      +    "label": {
      +      "type": "string"
      +    },
      +    "rule": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
  2. Added

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, but the description adds substantive behavioral context: holdings are ordered largest first, most SEC-filing ETFs lack return or risk figures here, returns are historical, and it details special-case behavior for bond, leveraged/inverse, option-income, trust, and prospectus-only ETFs. This is well beyond what the structured fields convey.

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?

The purpose and return list are front-loaded, and every sentence carries information. However, the middle special-case sentence is long and syntactically tangled ('an ETF read from SEC filings that is leveraged, inverse, under half in stock or half in swaps and futures lists its shares...'), which slows parsing.

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?

For a tool of this complexity the coverage is thorough: trigger, return shape, ordering, data-availability caveats, and edge-case fund types are all stated, and an output schema exists so return formatting need not be explained. Nothing an agent needs to call it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (ticker, holdings) are already fully documented in the schema including defaults, range, and the '0 returns figures without holdings' behavior. The description adds no syntax or format detail beyond the schema, so the baseline 3 applies.

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?

The description states a specific verb and resource ('what a US ETF or mutual fund holds or its sectors, cost, size, returns and risk') and enumerates the exact fields returned. It also distinguishes itself from siblings by name, so an agent can separate it from compare_etfs or find_etfs_holding_stock without opening any schema.

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?

It opens with an explicit trigger ('Use this when the user asks what...') and closes with explicit exclusions routing to alternatives ('Not for comparing ETFs (compare_etfs) or the ETFs holding a stock (find_etfs_holding_stock)'). Both the when and the when-not are spelled out with named substitutes.

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