read_filing_section
The text of one section, note or exhibit of one filing, whole by default.
What it does
Returns the text of the part named by section_id, from one of three lanes. Ids starting note- are notes-lane sections; item-7, part1-item-2 and whole-document are narrative-lane sections, as are the aliases mdna, risk-factors, financial-statements, business, controls, market-risk, legal-proceedings and exhibits, which resolve to whatever the form numbers them (Item 7 on a 10-K, Part I Item 2 on a 10-Q, Item 5 on a 20-F); doc-2 and friends are whole submitted documents from list_filing_documents, which is how you read an earnings press release (EX-99.1 of the results 8-K) or a 40-F exhibit. THE WHOLE SECTION IS RETURNED BY DEFAULT: there is no token cap and no truncation you did not ask for. total_chars and total_tokens describe the whole thing, chars and tokens what came back, and complete says whether they are the same. offset and limit are opt-in and pages concatenate exactly. content: "prose" drops table cells and page furniture so the argument reads continuously -- lossy, and it reports what it dropped. format: "text" returns the text itself rather than a JSON envelope with the section escaped inside a string. On a narrative section, read section.confidence, section.flags and section.notice before quoting -- a section flagged incorporated_by_reference is a pointer to another document, not the disclosure.
read_filing_section is on the free tier. A free account gets 12 agent calls per 16 hours and this is one of them; Pro is uncounted. The website's own screening allowance is counted separately.
Arguments, returns and a worked call
Everything below is generated from the same registry entry the MCP server and /openapi.json are generated from, so this page cannot name an argument that does not exist. The two examples are the same call, once over each transport.
read_filing_section
FreeReturns the text of the part named by `section_id`, from one of three lanes. Ids starting `note-` are notes-lane sections; `item-7`, `part1-item-2` and `whole-document` are narrative-lane sections, as are the aliases `mdna`, `risk-factors`, `financial-statements`, `business`, `controls`, `market-risk`, `legal-proceedings` and `exhibits`, which resolve to whatever the form numbers them (Item 7 on a 10-K, Part I Item 2 on a 10-Q, Item 5 on a 20-F); `doc-2` and friends are whole submitted documents from list_filing_documents, which is how you read an earnings press release (EX-99.1 of the results 8-K) or a 40-F exhibit. THE WHOLE SECTION IS RETURNED BY DEFAULT: there is no token cap and no truncation you did not ask for. `total_chars` and `total_tokens` describe the whole thing, `chars` and `tokens` what came back, and `complete` says whether they are the same. `offset` and `limit` are opt-in and pages concatenate exactly. `content: "prose"` drops table cells and page furniture so the argument reads continuously -- lossy, and it reports what it dropped. `format: "text"` returns the text itself rather than a JSON envelope with the section escaped inside a string. On a narrative section, read `section.confidence`, `section.flags` and `section.notice` before quoting -- a section flagged `incorporated_by_reference` is a pointer to another document, not the disclosure.
Arguments
symbol string, required — The ticker as Crush The Market spells it.
section_id string, required — A section id or alias from get_filing_outline, or a `doc-N` id from list_filing_documents. e.g. `note-income-taxes`, `item-1a`, `mdna`, `doc-2`.
accession string, optional — A specific filing. Defaults to the latest annual report.
content string, optional — full (default) returns the section as filed. prose drops table cells, bare figures, page numbers and unit notes, keeping sentences and headings -- readable, lossy, and it reports how many lines went.
format string, optional — json (default) returns the structured envelope. text returns the section text with a short provenance header and no JSON escaping.
offset number, optional — Opt-in pagination: start this many characters into the text being returned. Omit for the whole thing.
limit number, optional — Opt-in pagination: return at most this many characters. Omit for the whole section, which is the default and the recommended call.
Returns
symbol, filing, lane, section, text, chars, tokens, total_chars, total_tokens, content, format, source_chars, dropped_chars, dropped_lines, offset, limit, complete, truncated, page, pages_total, next_offset, is_last_page, token_estimate, note, error, as_of, source, disclaimer
> curl -s https://crushthemarket.com/api/v1/read_filing_section \ -H "Authorization: Bearer $CTM_KEY" \ -H 'Content-Type: application/json' \ -d '{"symbol":"AAPL","section_id":"note-income-taxes"}'{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "read_filing_section", "arguments": { "symbol": "AAPL", "section_id": "note-income-taxes" } }}Can answer
bad_request — `symbol` or `section_id` is missing, `section_id` belongs to no lane, `content`/`format` is not one of the listed values, the document is not readable text, or `offset`/`limit` are not sane numbers.
report_not_found — The notes lane has no section with that id in this filing; the message lists the ids it does have.
section_not_found — The narrative lane has no section with that id, or the filing has no document with that sequence.
no_sections — The filing could not be sectioned at all, so no narrative id can be addressed. Use `whole-document`.
edgar_unavailable — EDGAR did not answer after retries.
Calling read_filing_section
- 1.Register free — an email address, no card — then create a key under API Keys on your account page. Your email address has to be verified first, and the key is shown once.
- 2.Using a chat client that speaks MCP? The MCP guide is one paste. Anything else takes bearer auth, the error codes and the limits from the REST guide.
- 3.Make the call above with your own key in it.
Every successful response carries as_of, source, a quota block saying how much of the allowance is left, and the same disclaimer this page ends on.
More for agents
Data, not advice. Do your own diligence.