Skip to main content
Glama

MetricDuck — Financial Analysis

Read Filing Section

get_filing_section
Read-only

Use this when the user asks what a 10-K, 10-Q or 8-K says — risk factors, MD&A, the business description, an earnings release and its guidance / outlook, an 8-K event, a proxy (DEF 14A) — and for earnings call transcript Q&A or prepared remarks, where MetricDuck has the transcript. Returns the section's text, paginated, from the latest filing or a specific one.

Two modes:

  1. Section mode (default) — pass section_id for the section's text (up to 10 chunks per page). Valid ids are listed under section_id.

  2. Outline mode — OMIT section_id, pass accession_number: returns the filing's section list with short previews, so you pick by content instead of guessing an id (multi-exhibit 8-K, DEF 14A, 6-K).

Omitting accession_number reads the latest filing; list_filings finds a specific one.

Use Cases:

  • "Apple risk factors" -> get_filing_section("AAPL", "risk_factors")

  • "Customer concentration in NVDA" -> get_filing_section("NVDA", "risk_factors", query="customer concentration")

  • "What did analysts ask on NVDA's last call?" -> get_filing_section("NVDA", "transcript_qa_session")

  • "Workforce / headcount by geography" -> get_filing_section("MSFT", "business_description", query="human capital")

  • "M&A terms" -> get_filing_section("CVX", "item_1_01_material_agreement", form_type="8-K")

  • "As of a past date / point-in-time" -> get_filing_section("MSFT", "business_description", vantage_date="2025-04-07")

  • "Multi-exhibit 8-K" -> get_filing_section(ticker, accession_number="...") (outline mode) → pick exhibit → drill by section_id

Related: earnings-call trends across quarters → compare_earnings_calls; slide-deck guidance / KPIs (in neither the filing nor XBRL) → get_ir_documents; risk factors vs a prior year → read both years (fiscal_year); a figure missing from the section you expected → search_sec_filings(company=<ticker/CIK>, query="exact phrase") finds which section of which filing has it.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cikNo10-digit SEC CIK as an alternative to ticker — use for delisted/acquired companies (e.g. Activision cik='0000718877') whose ticker no longer resolves.
queryNoKeyword to search within section chunks (e.g., 'customer concentration', 'export control'). Returns the chunks that contain every word (order-free); when none does, returns the closest chunks under a note saying so.
offsetNoChunk offset for pagination (default 0)
tickerNoCompany ticker symbol (e.g., 'AAPL'). Required unless cik is provided.
form_typeNoForm type filter (picks the latest of that type when accession_number is omitted). 20-F/40-F/6-K cover foreign private issuers. Other forms (424B2, FWP, 13F-HR, 4): search_sec_filings(query, company, form_type, sections=false) links the filing on EDGAR (company: the 10-digit CIK; date_from for older filings).
max_charsNoSoft response-size cap (default 20,000 chars). The anchor is always served in full; companions are appended in priority order and truncated with a follow-up-call marker. Raise only when you need wider context.
max_chunksNoChunks per page (default 10, max 10)
section_idNoSection ID — omit it (with `accession_number` set) for outline mode. Common IDs by category: **10-K / 10-Q core:** `risk_factors`, `business_description`, `mda_full`, `mda_results_operations`, `mda_liquidity`, `mda_outlook`, `mda_critical_accounting`, `legal_proceedings`, `market_risk`, `controls_procedures`, `cybersecurity`, `properties`, `signature_officers` ↳ Human Capital / headcount lives in `business_description` (Item 1) — there is no `human_capital` id; use `query="human capital"`. **Footnotes:** `footnote_revenue`, `footnote_segment`, `footnote_debt`, `footnote_accounting_policies`, `footnote_commitments`, `footnote_stock_comp`, `footnote_income_tax`, `footnote_leases`, `footnote_goodwill`, `footnote_business_combinations`, `footnote_fair_value`, `footnote_related_party` **Data tables:** `table_revenue_disaggregation`, `table_segment_reporting`, `table_eps`, `table_deferred_taxes`, `table_ppe`, `table_fair_value`, `table_goodwill`, `table_lease_costs`, `table_contract_assets`, `table_debt_maturities` ↳ These carve the numeric tables OUT of the parent footnote, so the matching `footnote_*` may be PROSE-ONLY — query the `table_*` id for a disaggregated figure. A 10-K's segment schedule carries THREE fiscal years, so one filing is not the whole series. ↳ ⚠ Consolidated income-statement cost lines (`earnings_income_statement`, the 10-Q statements) are COMPANY-WIDE, not per-segment. **8-K earnings release:** `earnings_document_map`, `earnings_press_release`, `earnings_guidance`, `earnings_guidance_prose`, `earnings_income_statement`, `earnings_balance_sheet`, `earnings_cash_flow`, `earnings_segment_data`, `earnings_gaap_reconciliation`, `earnings_supplemental_tables`, `earnings_full_text` ↳ `earnings_guidance` = the outlook TABLE, `earnings_guidance_prose` its prose sibling — check both. `earnings_full_text` = the whole release in one searchable section — the residual fallback when a guided figure was mis-classified into another id. **8-K events:** `item_1_01_material_agreement`, `item_2_01_acquisition`, `item_2_01_exhibit_2_1`, `item_2_01_exhibit_99_1`, `item_2_03_financial_obligation`, `item_3_03_material_modification`, `item_5_02_executive_changes`, `item_5_03_articles_amendment`, `item_5_07_shareholder_votes`, `item_8_01_other_events` ↳ Exhibits are `item_<event>_exhibit_<major>_<minor>` (non-padded minor). Every non-earnings 8-K carries an **`exhibit_manifest`** listing every exhibit with its section_id, or an EDGAR link when link-only — read it before guessing. **Earnings call transcript:** `transcript_prepared_remarks`, `transcript_qa_session`, `transcript_guidance` **DEF 14A proxy:** `proxy_cd_and_a`, `proxy_compensation_table`, `proxy_peer_group`, `proxy_ceo_pay_ratio`, `proxy_pay_vs_performance`, `proxy_board_composition`, `proxy_shareholder_proposals`, `proxy_say_on_pay` **Risk vs risk management:** `risk_factors` lists what risks exist; for risk MANAGEMENT / mitigation read `mda_full` with `query` (e.g. 'risk management'). `mda_full` is the complete MD&A — use it when a subsection (`mda_results_operations`, `mda_liquidity`) comes back empty or thin. **20-F / foreign filer:** `mda_operating_results`, `mda_trend_information`, `mda_research_development`, `business_overview`, `business_organizational_structure`, `major_shareholders`, `directors_management` **FPI 6-K interim metrics:** `interim_monthly_revenue` (TSM monthly revenue release — primary doc text + inline NT$ table) **Accounting standard:** chunks carry `accounting_standard` (`US-GAAP` / `IFRS`), populated for FPI extractions, NULL for domestic 10-K/Q (implicitly US-GAAP) — read it before comparing ratios across filer types.
char_offsetNoWithin-chunk character offset (default 0). A chunk exceeding max_chars serves a char-window and emits a `char_offset` cursor — pass it back with the same `offset` to read deeper. Ignored on normal chunks.
fiscal_yearNoFiscal year to look up (e.g., 2023). Resolves to that fiscal year's filing via the XBRL period index — correct for non-calendar fiscal years (e.g. a 10-K filed Feb 2024 covers FY2023, not FY2024). Combine with fiscal_period for a specific quarter; omit fiscal_period to get the annual 10-K. Ignored if accession_number provided. DEF 14A / non-XBRL forms are not period-indexed — for those use accession_number (via list_filings), or vantage_date for as-of-date retrieval.
vantage_dateNoAs-of vantage (YYYY-MM-DD): serve the latest filing filed ON OR BEFORE this date — don't assume the newest filing reflects a past vantage. Omit for the latest. Ignored if accession_number is provided.
fiscal_periodNoFiscal period: 'Q1'/'Q2'/'Q3' for a quarter's 10-Q, or 'FY' for the annual 10-K (the default when omitted). Resolved via the XBRL DEI period index (correct for non-calendar fiscal years). The fourth quarter is reported in the annual 10-K — 'Q4' is treated as 'FY'. Use with fiscal_year. Ignored if accession_number provided.
preview_charsNoOutline-mode preview length per section (default 120 ≈ 25 words). Ignored when section_id is provided.
accession_numberNoFiling accession number from list_filings. Latest filing used if omitted.
include_delistedNoQuery a delisted/acquired company by its old ticker. Default false returns a structured delisted error pointing at the CIK.
include_companionsNoWith section_id='item_1_01_material_agreement' on an 8-K anchor: also return text from same-day same-issuer companion 8-Ks (7.01 Reg FD + Ex 99 / 8.01). Default false = anchor only.
companion_accessionsNoExplicit companion accessions (from a `screen_filing_signals` row's `value.companion_accessions`). With `include_companions=true`, skips the discovery hop — halves the round-trips if you already screened.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / query / description
      Previous value: -"Keyword to search within section chunks (e.g., 'customer concentration', 'export control'). Returns only matching chunks."New value: +"Keyword to search within section chunks (e.g., 'customer concentration', 'export control'). Returns the chunks that contain every word (order-free); when none does, returns the closest chunks under a note saying so."
  2. Changed1 schema field changed
    • changedInput schema / properties / cik / pattern
      Previous value: -"^\\d{10}$"New value: +"^\\d{1,10}$"
  3. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already supply readOnlyHint/openWorldHint/destructiveHint=false, but the description adds substantial behavior the annotations cannot: pagination and trunkation semantics, the omission-driven mode switch (omit section_id → outline; omit accession_number → latest filing), the delisted-ticker error path, and companion-8-K behavior. This is well past the reduced bar that annotations set.

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 trigger sentence, then clearly headed modes, use cases, and related-tool routing — structure is strong. It is nonetheless long, and the seven worked use-case examples partly restate routing already handled by the section_id catalog and the related-tools paragraph, which is mild redundancy rather than dead weight.

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

Completeness4/5

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

For a 17-parameter, two-mode tool with no output schema, the description covers the return shape (paginated chunks; section list with previews in outline mode) and the major fallback paths. A few auxiliary switches (include_delisted, include_companions, char_offset cursoring) are documented only in the schema, which is defensible at 100% coverage but leaves the prose not fully self-contained.

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, and the description genuinely earns above it: it defines the section_id-vs-accession_number interplay, the outline mode triggered by omission, and when to prefer query against a table_* id. It stays a notch below 5 only because most individual parameter semantics still live in the schema text rather than the prose.

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?

States a specific verb+resource ('Read Filing Section' returning a section's text, paginated) and enumerates the content classes it covers (risk factors, MD&A, earnings releases, transcripts, proxies). It explicitly distinguishes itself from siblings by name — `search_sec_filings`, `list_filings`, `get_ir_documents`, `compare_earnings_calls` — so the agent can route without opening a 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?

Gives explicit when-to-use triggers drawn from user phrasings, documents the two operating modes and how the argument set selects between them, and adds a routing paragraph for adjacent cases (cross-quarter trends → compare_earnings_calls; slide decks → get_ir_documents; phrase lookup → search_sec_filings). No alternatives are left to inference.

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