Skip to main content
Glama

MetricDuck — Financial Analysis

Full-Text SEC Filing Search

search_sec_filings
Read-only

Search the full text of SEC filings since 2001 to find companies related to any concept — a product, technology, regulation, event, or company.

Returns filing-level results with aggregated statistics (company count, form type breakdown, industry distribution). For 10-K/10-Q filings processed by MetricDuck, also shows WHICH SECTIONS contain the term with drill-in pointers.

Searchable form types — any SEC form (default window: last year); omit form_type for all:

  • Periodic reports: 10-K, 10-Q (section-level drill-down available), 20-F, 40-F, 6-K (foreign private issuers)

  • Events + proxies: 8-K, DEF 14A / DEFM14A / PRE 14A

  • Registration + offerings: S-1, F-1, S-3, S-4, 424B series

  • Ownership + other: SCHEDULE 13D/G (was SC 13D/G), SD (conflict minerals), N-CSR / N-CSRS (fund reports)

Section-level enrichment (10-K/10-Q only): results name which sections contain the term, with chunk pointers for drill-in via get_filing_section. Other forms return filing metadata + accession numbers only.

Use cases:

  • "Who supplies Apple?" → query=""Apple Inc."", form_type="10-K,10-Q,8-K" → Company Exposure Map of the filers mentioning Apple. Constrain forms — mutual-fund NPORT-P filings otherwise crowd the results (see date_from).

  • "What did WM say at its investor day?" → query=""investor day"", company="WM" → that filer only

  • "Recent data breaches?" → query="cybersecurity incident", form_type="8-K"

  • "Tariff-exposed companies?" → query="tariff", form_type="10-K" → risk factor disclosures

  • "Activist campaigns?" → query="board representation", form_type="DEF 14A,SCHEDULE 13D"

Other tools: one known company's filings → get_filing_index / list_filings; numeric filters → screen_companies; earnings-call trends → compare_earnings_calls.

Key limitation: keyword matching only, not semantic. "No material weakness" matches "material weakness found." Verify hits with get_filing_section for context.

Input Schema

NameRequiredDescriptionDefault
limitNoMax results (default 10, max 100). Results deduplicated by filing, sorted most recent first. Section-level enrichment applies to the first 5 results.
queryNoSearch terms. All terms required by default (implicit AND). Syntax: exact phrase "revenue recognition", OR: "goodwill impairment" OR "asset writedown", NOT: restructuring NOT "restructuring charges", NEAR: goodwill NEAR(5) impairment (within N words; two single words only: SEC cannot run NEAR on a phrase, wildcard or hyphenated term, so such a clause is searched as AND), wildcard: restructur* (trailing only, not in phrases). Use formal terms as written in SEC filings, not abbreviations. Required.
companyNoRestrict to one company. Accepts a ticker in capitals (e.g. 'WSC'; resolved to its CIK, so exact), a CIK (exact match — get from search_companies; shorter numeric CIKs are auto-zero-padded to 10 digits), or a company name (partial match — may include unrelated companies).
date_toNoEnd date YYYY-MM-DD. Default: today.
rank_byNoSort order for the returned filing list. 'date' (default) = most recent filings first — best for time-sensitive queries (breaches, guidance changes, recent events). 'relevance' = EFTS native relevance score — best for thematic discovery where the most concentrated mentions matter more than recency (e.g., 'liquefied natural gas', 'H100 supply chain'). The Company Exposure Map is always frequency-ranked from EFTS aggregation regardless of rank_by.date
sectionsNoInclude section-level matches showing WHERE in each filing the term appears. Provides exact section + chunk pointers for immediate drill-in with get_filing_section. Set false for faster filing-level-only results.
date_fromNoStart date YYYY-MM-DD. Default: 1 year ago. For a HISTORICAL event (M&A announcement, lawsuit, restructuring, leadership change) set it before the event, with form_type='8-K' and rank_by='relevance': the default window and date order bury the anchor 8-K under mutual-fund NPORT-P holdings.
form_typeNoSEC form type filter. 10-K (annual report), 10-Q (quarterly), 8-K (material events), DEF 14A (proxy/compensation), S-1 (IPO registration). Comma-separated for multiple: '10-K,10-Q'. Omit to search all types. 13D/13G are filed as 'SCHEDULE 13D' / 'SCHEDULE 13G' since December 2024 and as 'SC 13D' / 'SC 13G' before; either spelling searches both. A form includes its amendments ('10-K' finds 10-K/A too); name only 'X/A' for amendments alone. Forms 3/4/5 (filed by insiders, naming the company as issuer): company as an upper-case ticker or a 10-digit CIK finds them (both exact); a name is a partial match.
ticker_lookupNoRETIRED — returns a redirect. Scope with `company`; to find who MENTIONS a company, search its formal name with form_type.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / form_type / description
      Previous value: -"SEC form type filter. 10-K (annual report), 10-Q (quarterly), 8-K (material events), DEF 14A (proxy/compensation), S-1 (IPO registration). Comma-separated for multiple: '10-K,10-Q'. Omit to search all types. 13D/13G are filed as 'SCHEDULE 13D' / 'SCHEDULE 13G' since December 2024 and as 'SC 13D' / 'SC 13G' before; either spelling searches both. Forms 3/4/5 (filed by insiders, naming the company as issuer): company as an upper-case ticker or a 10-digit CIK finds them (both exact); a name is a partial match."New value: +"SEC form type filter. 10-K (annual report), 10-Q (quarterly), 8-K (material events), DEF 14A (proxy/compensation), S-1 (IPO registration). Comma-separated for multiple: '10-K,10-Q'. Omit to search all types. 13D/13G are filed as 'SCHEDULE 13D' / 'SCHEDULE 13G' since December 2024 and as 'SC 13D' / 'SC 13G' before; either spelling searches both. A form includes its amendments ('10-K' finds 10-K/A too); name only 'X/A' for amendments alone. Forms 3/4/5 (filed by insiders, naming the company as issuer): company as an upper-case ticker or a 10-digit CIK finds them (both exact); a name is a partial match."
  2. Changed2 schema fields changed
    • changedInput schema / properties / form_type / description
      Previous value: -"SEC form type filter. 10-K (annual report), 10-Q (quarterly), 8-K (material events), DEF 14A (proxy/compensation), S-1 (IPO registration). Comma-separated for multiple: '10-K,10-Q'. Omit to search all types. 13D/13G are filed as 'SCHEDULE 13D' / 'SCHEDULE 13G' since December 2024 and as 'SC 13D' / 'SC 13G' before: pass both ('SC 13D,SCHEDULE 13D') for a window that spans it. Forms 3/4/5 (filed by insiders, naming the company as issuer): company as an upper-case ticker or a 10-digit CIK finds them (both exact); a name is a partial match."New value: +"SEC form type filter. 10-K (annual report), 10-Q (quarterly), 8-K (material events), DEF 14A (proxy/compensation), S-1 (IPO registration). Comma-separated for multiple: '10-K,10-Q'. Omit to search all types. 13D/13G are filed as 'SCHEDULE 13D' / 'SCHEDULE 13G' since December 2024 and as 'SC 13D' / 'SC 13G' before; either spelling searches both. Forms 3/4/5 (filed by insiders, naming the company as issuer): company as an upper-case ticker or a 10-digit CIK finds them (both exact); a name is a partial match."
    • changedInput schema / properties / query / description
      Previous value: -"Search terms. All terms required by default (implicit AND). Syntax: exact phrase \"revenue recognition\", OR: \"goodwill impairment\" OR \"asset writedown\", NOT: restructuring NOT \"restructuring charges\", NEAR: goodwill NEAR(5) impairment (within N words), wildcard: restructur* (trailing only, not in phrases). Use formal terms as written in SEC filings, not abbreviations. Required."New value: +"Search terms. All terms required by default (implicit AND). Syntax: exact phrase \"revenue recognition\", OR: \"goodwill impairment\" OR \"asset writedown\", NOT: restructuring NOT \"restructuring charges\", NEAR: goodwill NEAR(5) impairment (within N words; two single words only: SEC cannot run NEAR on a phrase, wildcard or hyphenated term, so such a clause is searched as AND), wildcard: restructur* (trailing only, not in phrases). Use formal terms as written in SEC filings, not abbreviations. Required."
  3. Changed2 schema fields changed
    • changedInput schema / properties / company / description
      Previous value: -"Restrict to one company. Accepts a ticker (e.g. 'WSC'), a CIK (exact match, preferred — get from search_companies; shorter numeric CIKs are auto-zero-padded to 10 digits), or a company name (partial match — may include unrelated companies)."New value: +"Restrict to one company. Accepts a ticker in capitals (e.g. 'WSC'; resolved to its CIK, so exact), a CIK (exact match — get from search_companies; shorter numeric CIKs are auto-zero-padded to 10 digits), or a company name (partial match — may include unrelated companies)."
    • changedInput schema / properties / form_type / description
      Previous value: -"SEC form type filter. 10-K (annual report), 10-Q (quarterly), 8-K (material events), DEF 14A (proxy/compensation), S-1 (IPO registration). Comma-separated for multiple: '10-K,10-Q'. Omit to search all types. 13D/13G are filed as 'SCHEDULE 13D' / 'SCHEDULE 13G' since December 2024 and as 'SC 13D' / 'SC 13G' before: pass both ('SC 13D,SCHEDULE 13D') for a window that spans it. Forms 3/4/5: a ticker in company finds almost none of a company's filings; use the 10-digit CIK (exact), not a name (partial match)."New value: +"SEC form type filter. 10-K (annual report), 10-Q (quarterly), 8-K (material events), DEF 14A (proxy/compensation), S-1 (IPO registration). Comma-separated for multiple: '10-K,10-Q'. Omit to search all types. 13D/13G are filed as 'SCHEDULE 13D' / 'SCHEDULE 13G' since December 2024 and as 'SC 13D' / 'SC 13G' before: pass both ('SC 13D,SCHEDULE 13D') for a window that spans it. Forms 3/4/5 (filed by insiders, naming the company as issuer): company as an upper-case ticker or a 10-digit CIK finds them (both exact); a name is a partial match."
  4. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/openWorld/non-destructive, and the description adds value beyond them: keyword-only (non-semantic) matching with a concrete false-positive example, section-level enrichment limited to 10-K/10-Q, result dedup and recency sorting, and the NPORT-P crowding caveat. This is a genuinely honest, behavior-revealing disclosure.

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?

Core purpose is front-loaded and the use-case list is high-value for a 9-param tool, but the form-type catalogue and limitations are verbose enough that some content duplicates schema guidance. Well-structured with headers and bullets, just slightly long.

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?

With no output schema, the description carries the return-value burden and does so: filing-level results with aggregated statistics, section pointers for 10-K/10-Q, and metadata-only responses for other forms. An agent has enough to call and interpret the tool 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 adds cross-parameter semantics (query+form_type combos, what omitting form_type does, combining date_from with form_type='8-K' and rank_by='relevance'). It doesn't add syntax detail beyond the schema, which already documents operators and spellings.

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 (full-text search of SEC filings) with scope (since 2001) and explicitly distinguishes itself from siblings by naming alternatives (get_filing_index, list_filings, screen_companies, compare_earnings_calls). An agent can immediately tell what this does and what it isn't.

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?

Provides five concrete use-case examples with exact query/form_type/company combinations, and routes to alternative tools for adjacent needs (known company filings, numeric screening, earnings-call trends). It also names the conditions that select this tool over alternatives, leaving little 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