Catalog / SEC Filing Sections
SEC Filing Sections
"Give me Item 1A (Risk Factors) of Apple's latest 10-K as text," or "list the tables in Microsoft's latest 10-Q," or "give me the tagged numbers (inline XBRL) in this filing."
The question it answers
"Give me Item 1A (Risk Factors) of Apple's latest 10-K as text," or "list the tables in Microsoft's latest 10-Q," or "give me the tagged numbers (inline XBRL) in this filing."
Tools
| Tool | What you get | Planned price |
|---|---|---|
filing_resolve | the filing's accession number, dates and primary document URL | $0.02 |
filing_list_sections | the Items found, with title and size | $0.05 |
filing_get_section | the text of one Item (optionally Markdown-ish) | $0.04 |
filing_extract_tables | the filing's HTML tables as headers + rows | $0.04 |
filing_ixbrl_facts | inline XBRL numeric facts: concept, value, unit, period | $0.05 |
Use it when
- An agent needs a specific narrative section of a 10-K, 10-Q or 8-K without parsing the HTML itself.
- You need the numbers tagged in a filing, with the period and unit.
Do not use it when
- You want clean financial time series. Use the SEC's
companyfactsAPI for that; this tool reads one filing's document. - You need a concept filter you can trust today. Known bug in this version: if the concept you ask for is not in the filing, the tool can return up to 400 unrelated facts (unsigned and unscaled) instead of none. Check each returned
concept. - You need tables limited to one Item (the
itemoption on tables is ignored).
Example call
There is no public HTTP route yet, so no curl example. Locally:
npx tsx src/cli.ts sections --ticker AAPL --form 10-K
MCP: filing_list_sections {"ticker_or_cik":"AAPL","form":"10-K"}, then filing_get_section {"ticker_or_cik":"AAPL","form":"10-K","item":"1A","max_chars":20000}.
Params shared by all: ticker_or_cik (ticker like AAPL, or a CIK number), form (default 10-K; 10-K/A also matches), accession (needs ticker_or_cik too). The newest filing of that form in the SEC "recent filings" list is used.
Example response (`filing_list_sections`; trimmed; from the package's own AAPL sample)
{
"tool": "sec-filing-sections",
"version": "0.1.0",
"filing": {
"cik": "0000320193", "name": "Apple Inc.", "tickers": ["AAPL"], "form": "10-K",
"filingDate": "2025-10-31", "accessionNumber": "0000320193-25-000079",
"url": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000079/aapl-20250927.htm"
},
"sectionCount": 23,
"sections": [
{ "item": "1", "title": "Business", "charCount": 16011 },
{ "item": "1A", "title": "Risk Factors", "charCount": 68059 }
],
"cached": false,
"billing": { "sku": "filing_list_sections", "plannedPriceUsd": 0.05, "x402Enabled": false }
}
The real response also has textChars (length of the flattened filing text).
filing_ixbrl_facts returns facts[] like { "concept": "RevenueFromContractWithCustomerExcludingAssessedTax", "name": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax", "value": "307003000000", "unit": "usd", "period": "2024-09-29/2025-09-27", "decimals": "-6", "scale": "6", "contextRef": "c-12" }. The value already has the scale applied.
Data sources and licence
SEC EDGAR: sec.gov/files/company_tickers.json, data.sec.gov/submissions, and the filing document under sec.gov/Archives. SEC filings are US public records. Check sec.gov's current terms and fair-access policy. Filings may include third-party material.
Freshness and caching
The filing list is cached 1 hour, the ticker map 24 hours, and the filing HTML 15 minutes. Newly filed documents can take up to an hour to show as "latest".
Honest limits
- Section boundaries are found with text patterns on the flattened document. Unusual layouts can miss or merge sections. One section per Item number, so a 10-Q's Part I and Part II items that share a number collapse into one.
- Only the SEC "recent" filing list is searched, not older archive pages.
- Markdown output is approximate.
- Tables are the first row as headers plus the remaining rows; merged cells are not resolved. Max 200 rows per table.
- iXBRL: numeric facts only (
ix:nonFraction). The scale is applied in floating point, and European decimal-comma formats are read wrongly. - Rate: about 5 requests per second to the SEC; a big call can take several seconds. Max 8 MB per fetched document.
- Not investment or legal advice.
Errors are not charged
Payment settles only on a successful answer. Any response with status 400 or higher (bad input, not found, upstream failure) is never settled.