Skip to main content
Glama

13F institutional holders of a stock

get_stock_13f_holders
Read-onlyIdempotent

Institutions that reported holding a stock in their 13F-HR filings for one calendar quarter (default: the latest complete quarter, or for a ticker that is no longer listed its last quarter with a full set of 13F holders; 13F is filed up to 45 days after quarter end and covers long positions in US-listed securities only). Each row: institution, shares, market value in USD at quarter end as reported, pct_of_portfolio (percent of that institution's 13F portfolio), and the change versus the previous calendar quarter (action new/added/reduced/unchanged/sold_out, share_change, share_change_pct in percent). When the stock split between the two quarters, previous_shares is converted to this quarter's shares before comparing (split_factor = new shares per old share; the filed count is previous_shares / split_factor) and a change within 0.5% counts as unchanged; the previous totals are as filed. Institutions that held the stock last quarter and filed this quarter without it are listed after the holders as sold_out; institutions that held it last quarter but have not filed this quarter yet are listed at the very end as not_filed (not a sale, shares and value null). Totals (holders, shares, value_usd) cover all holders, not just this page. Multiple CUSIPs of the same ticker are combined. changes_available is false (and the change fields are null) when the previous quarter cannot be compared; note explains incomplete or still-filing quarters. At most 200 rows per call; use page.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNoPage number starting at 1; each page has `limit` rows. Check has_more.
sortNovalue = largest market value first (default); shares = most shares; change = largest share increase first. Sold-out holders are always listed last.value
limitNoMaximum rows to return (1-200, default 25).
tickerYesStock ticker, e.g. AAPL or BRK.B (share classes use a dot; BRK-B also works).
quarterNoQuarter to show, e.g. 2026-q2. Default: the latest complete quarter; for a ticker that is no longer listed, its last quarter with a full set of 13F holders.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYes
nameYes
noteYes
pageYes
rowsYes
sortYes
limitYes
periodYes
sharesYes
tickerYes
holdersYes
quarterYes
has_moreYes
previousYes
value_usdYes
split_factorYesStock split between previous_quarter and quarter: new shares per old share (10 = 10-for-1 split, 0.1 = 1-for-10 reverse split); null when there was none.
previous_quarterYes
changes_availableYes
in_progress_quarterYes
latest_complete_quarterYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare read-only/idempotent/non-destructive, and the description adds substantial behavior beyond them: split-adjusted prior-share comparison with a 0.5% unchanged threshold, sold_out vs not_filed trailing rows, nulled change fields when changes_available is false, and totals that cover all holders rather than the page.

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

Conciseness3/5

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

Purpose is front-loaded, but the single dense paragraph dedicates much of its length to enumerating row fields and change semantics that the output schema already covers. The genuinely non-obvious domain logic (splits, sold_out/not_filed) earns its place; the field-by-field recap does not.

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?

Given a complex financial domain, full annotation coverage, and an output schema, the description supplies exactly the logic an agent cannot infer: quarter completeness, filing lag, split normalization, and how non-holder rows are ordered. Nothing needed to interpret a call 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 parameters (page, limit, sort, ticker, quarter) are already documented in the schema itself. The description reinforces the quarter default and the 200-row page cap but adds little semantic detail beyond what the schema already carries.

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 names a specific resource (institutions reporting holdings in 13F-HR filings) and a specific scope (one calendar quarter, long US-listed positions), with defaults spelled out. It is clearly distinguishable from siblings like get_insider_trades, get_institution, and get_superinvestor_activity.

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

Usage Guidelines4/5

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

It states the default quarter, the fallback for delisted tickers, and the 45-day filing lag, which tells the agent when results are meaningful. It never explicitly routes to a sibling (e.g., 'for a specific institution use get_institution'), so it stops short of full when/when-not guidance.

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