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

Free

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.

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 — One whole note from EDGAR's own rendering.
> 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"}'
MCP tools/call — One whole note from EDGAR's own rendering.
{  "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. 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. 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. 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

AgentsWhat exists, and the three-step quickstart.
MCPConnect Claude Code or claude.ai.
REST APIBearer auth, endpoints, errors and limits.
ToolsOne page per tool: arguments, a worked call, what it can fail with.

Data, not advice. Do your own diligence.

Noticed an error with something on our site?

Data, not advice. Do your own diligence.

We Use Cookies