Skip to main content
Glama

FinancialMD

Funds holding a company (N-PORT)

fund_holders
Read-onlyIdempotent

Return the mutual funds and ETFs (Form N-PORT series) holding a company in their latest report, largest position first: value in USD, shares, percent of the fund's net assets (a fraction), report month end, with the filing as proof. Complements institutional_holders (13F managers). Only the latest report per fund in each quarterly SEC data set is loaded. Filing-layer read: served with generous limits on every tier. Use it when asked which funds hold a company. If a dataset, field, company or analysis you need is missing, call request_data.

Example tool call

This call uses example arguments supplied in the tool’s input schema.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "company": "ticker:MSFT"
    },
    "name": "fund_holders"
  }
}

Input Schema

NameRequiredDescriptionDefault
as_ofNoKnowledge date or timestamp (YYYY-MM-DD or RFC 3339). The answer is what FinancialMD knew at that instant: only facts whose known interval contains as_of. Omit for the current view.
limitNoMaximum number of periods or items to return (default 20, at most 500).
cursorNoOpaque cursor from a previous page (data.next_cursor).
periodNoReport window ending on or before (default the newest) (YYYY-MM-DD).
companyYesCompany identifier: a FinancialMD id ("fmd_01H..."), an SEC CIK ("cik:320193"), or a ticker ("ticker:AAPL", optionally with the MIC "ticker:AAPL.XNAS"). A bare ticker like "AAPL" is accepted and sent as ticker:AAPL. An issuer on an EU or UK regulated market that does not file with the SEC has no CIK: pass its LEI ("lei:IOG4E947OATN0KJYSD45") or its fmd_ id.

Output Schema

NameRequiredDescriptionDefault
dataNo{ items: [{ fund, company, report_period, security, value, balance, percent_of_net_assets }], next_cursor, note }
metaNoRequest metadata: request_id, as_of, company resolution, coverage, pipeline_version, licence, terms, proof_base.
errorNoPresent only on isError results: the API error code and message plus remedy hints.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / company / description
      Previous value: -"Company identifier: a FinancialMD id (\"fmd_01H...\"), an SEC CIK (\"cik:320193\"), or a ticker (\"ticker:AAPL\", optionally with the MIC \"ticker:AAPL.XNAS\"). A bare ticker like \"AAPL\" is accepted and sent as ticker:AAPL."New value: +"Company identifier: a FinancialMD id (\"fmd_01H...\"), an SEC CIK (\"cik:320193\"), or a ticker (\"ticker:AAPL\", optionally with the MIC \"ticker:AAPL.XNAS\"). A bare ticker like \"AAPL\" is accepted and sent as ticker:AAPL. An issuer on an EU or UK regulated market that does not file with the SEC has no CIK: pass its LEI (\"lei:IOG4E947OATN0KJYSD45\") or its fmd_ id."
  2. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds real value beyond them: result ordering ("largest position first"), a data-completeness caveat ("Only the latest report per fund in each quarterly SEC data set is loaded"), and load/limit behavior ("Filing-layer read: served with generous limits on every tier"). The limits phrasing is somewhat vague, but the dataset-coverage caveat is exactly the kind of context an agent cannot get from structured fields.

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 purpose and output shape, then compaction caveat, then routing. The final sentence about request_data is generic boilerplate, and the long colon-separated field list makes the opening sentence dense, but nothing is wasteful enough to penalize further.

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 values need no further explanation, and the description still supplies ordering, the per-fund latest-report caveat, and alternative routing. For a read-only single-entity holdings query, an agent has everything needed to call it correctly.

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 the schema already documents company identifiers, as_of, period, limit and cursor in detail. The description only obliquely touches parameter meaning through "latest report" and "report month end," adding little beyond the schema — 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?

Opens with a specific verb+resource+data source: "Return the mutual funds and ETFs (Form N-PORT series) holding a company in their latest report." It even states the output shape (value in USD, shares, percent of net assets, report month end, filing as proof) and explicitly positions itself against the sibling institutional_holders (13F managers).

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?

"Use it when asked which funds hold a company" gives a clear trigger, and "Complements institutional_holders (13F managers)" plus the request_data fallback route the agent to the right alternatives. It stops short of an explicit exclusion (e.g. "do not use this for 13F manager holdings"), which keeps it off a 5.

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