compare_filing_sections

The same section across several filings, with its language measured each time and the change between them.

What it does

Reads the SAME section out of several of a company's filings and measures the language of each, newest first, with delta giving newest minus oldest on every number. This is the tool for "is the tone changing?", which a single filing cannot answer: one MD&A's hedging rate is a number, four quarters of it is a finding. Pass an ALIAS as section_id -- mdna, risk-factors -- because it is resolved per filing, so a comparison spanning a 10-K and 10-Qs still lines up the right sections. form defaults to 10-K like every other filing tool; pass 10-Q for quarters. Each period is a separate EDGAR document read, so the ceiling is 6 and the default is 4. Only headline numbers are returned per period; call section_language on one accession for the term-by-term counts. Pass include_text to get the words alongside the numbers when a delta is the start of the question rather than the end of it.

compare_filing_sections 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.

compare_filing_sections

Free

Reads the SAME section out of several of a company's filings and measures the language of each, newest first, with `delta` giving newest minus oldest on every number. This is the tool for "is the tone changing?", which a single filing cannot answer: one MD&A's hedging rate is a number, four quarters of it is a finding. Pass an ALIAS as `section_id` -- `mdna`, `risk-factors` -- because it is resolved per filing, so a comparison spanning a 10-K and 10-Qs still lines up the right sections. `form` defaults to 10-K like every other filing tool; pass `10-Q` for quarters. Each period is a separate EDGAR document read, so the ceiling is 6 and the default is 4. Only headline numbers are returned per period; call section_language on one accession for the term-by-term counts. Pass `include_text` to get the words alongside the numbers when a delta is the start of the question rather than the end of it.

Arguments

symbol string, required — The ticker as Crush The Market spells it.

section_id string, required — A narrative id or, better, an alias that resolves per form: `mdna`, `risk-factors`, `business`. A `note-` id also works. A `doc-N` id does NOT, because a sequence number means a different exhibit in each submission.

form string, optional — Which form to compare: 10-K (default), 10-Q, 20-F, 40-F. Ignored when `accessions` is given.

periods number, optional — How many filings of that form, newest first. 2 to 6, default 4.

accessions string[], optional — Compare these exact filings instead of the latest N of a form. At least two, at most 6.

include_text boolean, optional — Return each period's text beside its numbers, so a moved figure can be read rather than guessed at. Defaults to false. Capped at 12000 characters per period and flagged with `text_truncated`; `chars` is always the full length. Off by default because 6 sections of a 10-K is a very large response.

Returns

symbol, section_id, form, count, readable, periods, delta, compared, note, error, as_of, source, disclaimer

curl — Four quarters of management discussion, and how the language moved.
> curl -s https://crushthemarket.com/api/v1/compare_filing_sections \  -H "Authorization: Bearer $CTM_KEY" \  -H 'Content-Type: application/json' \  -d '{"symbol":"META","section_id":"mdna","form":"10-Q","periods":4}'
MCP tools/call — Four quarters of management discussion, and how the language moved.
{  "jsonrpc": "2.0",  "id": 1,  "method": "tools/call",  "params": {    "name": "compare_filing_sections",    "arguments": {      "symbol": "META",      "section_id": "mdna",      "form": "10-Q",      "periods": 4    }  }}

Can answer

bad_request — `symbol` or `section_id` is missing, `section_id` belongs to no lane or is a `doc-N` id, or `periods` is outside 2 to 6.

no_sec_filer — No SEC filer is mapped to the symbol.

unknown_filing — Fewer than two filings of that form exist, or fewer than two of the given accessions do.

edgar_unavailable — EDGAR did not answer after retries.

Calling compare_filing_sections

  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