SEC filings, read properly
Pull a company’s filing history, its financials with the tag that actually answered, and a paragraph-by-paragraph comparison of this year’s risk factors against last year’s — what was added, what was removed, and where the language moved. Both source filings linked, every time.
No subscription — pay in Ounie creditsData from EDGAR. Nothing else.
Filings Desk reports what a company filed and how the language changed. It is not investment advice and it is not a recommendation.
It is a reading tool. It tells you what a company put in writing and how the writing changed — and it returns that line as a field in every response, so an agent passing the result along carries it too.
One · the index
Ticker or CIK in, filings out, newest first — form type, filing date, period, the 8-K item numbers, and a direct link to the document itself. Filter by form or by date window.
EDGAR’s recent block stops at about a thousand filings, and older ones live in separate overflow documents. When those were not fetched the response says so, in a field of its own — so “nothing before 2015” is never mistaken for a fact about the company.
3 credits · a filter that matches nothing refunds in full
Filter by any EDGAR form type. Common ones: 10-K · 10-Q · 8-K · 20-F · 40-F · S-1
Two · the figures
Annual figures read straight out of a company’s own XBRL: revenue, net income, operating income, total assets, operating cash flow, and more. Each point carries the fiscal year, the period end, and the accession number of the filing it was taken from.
There is no universal tag for revenue. JPMorgan does not carry the one Apple uses; Apple carries the one JPMorgan uses, but stopped populating it in 2018. So every candidate is queried, the one with the most recent annual coverage wins, and the response names it. A metric a company does not tag comes back by name under notTagged — never as a zero.
5 credits · nothing tagged means nothing charged
Three · the comparison
A 10-K’s risk factors run to a hundred thousand characters and almost all of it is last year’s text. The comparison finds the part that is not.
A paragraph with no counterpart in last year's filing. New risk language, in full, as filed.
A paragraph that was there last year and is not there now. Companies drop risks quietly; this is where you see it.
The same paragraph, rewritten. You get both versions side by side, plus how far apart they are.
“Softened” is a measurement, not a verdict.
When a paragraph is reworded we count hedging words — may, could, generally — against severity words — material, adverse, significant — per hundred words, and report which way the density moved. That is all it means. Whether a company meant something less seriously this year is a judgement no function can make, and this one does not pretend to.
12 credits · a section we cannot extract is refunded, never guessed at
For developers & AI agents
An index costs 3 credits, a fact bundle 5, a comparison 12. A key can never overdraw — a call that cannot be covered is refused with a 402 that names the shortfall, before anything runs.
One key, every endpoint the dashboard uses. A bad key returns 401 — never a redirect an agent cannot follow.
curl -X POST https://filings.ounie.com/api/diff \
-H "Authorization: Bearer flg_live_…" \
-H "Content-Type: application/json" \
-d '{"ticker":"AAPL","section":"risk_factors"}'Streamable HTTP at /api/mcp (legacy SSE at /api/sse). Works with Claude, Cursor, ChatGPT and the Ounie AI Team — which cannot set headers, so the key rides the URL.
Endpoint https://filings.ounie.com/api/mcp (legacy SSE: /api/sse)
Auth Authorization: Bearer flg_live_…
…or https://filings.ounie.com/api/mcp?api_key=flg_live_…
Tools list_filings · get_financial_facts · diff_filing_section
get_run · list_runs · get_coverage · get_pricing
get_credit_balance · whoamiPay per call in USDC on Base. POST a verb, get a 402 with terms, sign, retry. The price is computed from your payload, and a call that produced nothing is never settled.
POST https://filings.ounie.com/api/x402/filings
{"verb":"facts","ticker":"TSLA","metrics":["revenue"]}
→ 402 {"x402Version":1,"accepts":[{…"network":"base"…}]}
→ retry with X-Payment: <signed>
→ 200 {"payment":{"tx_hash":"0x…"},"series":[…]}The credit math
Credits are reserved when a call starts and settled only if it produced something. A comparison whose section could not be extracted, a fact bundle where nothing was tagged, a filter that matched no filing — all refund in full, pool by pool, exactly as they were reserved.
12 credits reserved while the comparison runs.
3 credits
Filings index
$0.03 per call
5 credits
XBRL facts
$0.05 per call
12 credits
Risk diff
$0.12 per call
Questions
No. Filings Desk reports what a company filed and how the wording changed between two filings. It does not rate a company, forecast anything, or suggest what to do about it. Every response carries that line as a field, not as fine print.
The SEC's own EDGAR service, and nowhere else. The filings index is EDGAR's submissions API, the figures are its XBRL company-concept API, and the comparison reads the filing documents themselves. Every figure carries the accession number it came from, and every comparison carries both source URLs so you can open the originals.
By the widest gap. For every “Item 1B. Unresolved Staff Comments” heading we take the last “Item 1A. Risk Factors” before it, and keep the pair furthest apart. That sounds fussy until you look at real filings: the first match is almost always the table of contents, and Crocs has twelve “Item 1A” occurrences with its last one falling after its last Item 1B, so “take the last” finds nothing at all. The widest-gap rule got the section right on every filing we tested it against.
You are told, and you are not charged. Smaller reporting companies are permitted to omit risk factors entirely, and some filers put MD&A in an exhibit and incorporate it by reference — JPMorgan's Item 7 extracts to 363 characters of cross-reference. Both come back as an explicit reason. We also check that the extracted text reads like the section it claims to be, and refuse it if it does not: a diff of the wrong section would be fluent, confident and wrong, which is worse than no diff.
No. The comparison is arithmetic — paragraphs are turned into word-bigram sets and matched by similarity, so a re-paginated filing does not read as rewritten. A model only writes the closing summary, and it is shown the comparison's output rather than the filings, so it cannot introduce a change that is not there. You can turn it off entirely with summary: false.
Exactly one thing: hedging words went up relative to severity words. It counts terms like may, could and generally against material, adverse and significant, per hundred words, and reports which way the density moved. It is a measurement of the wording, never a judgement about what the company meant — and the response says so in a field of its own.
Because there is no universal one, and pretending otherwise returns the wrong number. JPMorgan does not tag RevenueFromContractWithCustomerExcludingAssessedTax at all; Apple does, and also carries Revenues — which stops at FY2018. A first-match design would report Apple's 2018 revenue as current. We query every candidate, keep the one with the most recent annual coverage, and tell you which one answered.
It comes back under notTagged, by name. It never comes back as a zero, and it never comes back as silence. If none of the metrics you asked for are tagged, the call refunds in full — you learned nothing, so you pay nothing.
3 Ounie credits for a filings index, 5 for a fact bundle, 12 for a comparison — $0.12 in plain money for the expensive one, from the same wallet as every other Ounie app. No subscription, no minimum. Reading, listing and exporting work you have already paid for is free forever.
Yes, and it should be. “The risk language did not move this year” is a real finding and often the one you were checking for. What is never billed is a call that could not produce the comparison at all — that refunds in full, pool by pool, exactly as it was reserved.
Yes. The x402 endpoint takes USDC on Base with no account and no key. It verifies your signature, runs the work, and settles only once there is a real artifact — an on-chain settlement is final, so a non-answer is refused before the money moves rather than refunded after.
Because a 10-Q carries an abbreviated “material changes to our risk factors” item, not the full annual set. Comparing one against an annual filing would compare two different kinds of document and report the difference in format as a difference in substance. It is not offered rather than offered with a caveat nobody reads.
One ticker is enough to start. Filings Desk runs on the same Ounie credits as every other Ounie app — no subscription, no minimum, and nothing charged for a call that came back empty.