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
FreeReads 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 -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}'{ "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.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.