FilingFirehose

com.filingfirehosev0.1.0Updated Sep 29, 2026

SEC EDGAR filings parsed: 8-K body-text classification, 13D activist tagging, S-3 ATM detection.

VerifiedStreamable HTTPWeb executableOther

Installation

In SourceWeft

  1. Open FilingFirehose in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "firehose": {
      "type": "http",
      "url": "https://filingfirehose.com/mcp"
    }
  }
}

README

filing-firehose

Python client for the FilingFirehose SEC EDGAR API — body-text-parsed 8-Ks (with buried-event detection), activist-tagged Schedule 13D/G filings, and ATM offerings extracted from S-3 / 424B5 prospectus supplements.

Install

pip install filing-firehose

Quick start

The free public tier returns the last 72 hours of filings — no API key required:

python
from filing_firehose import FilingFirehose
ff = FilingFirehose()
# Recent 8-Ks where the body language flags items the filer didn't reportburied = ff.recent_8k(suspected_buried_only=True, limit=10)for f in buried:    print(f"{f.company_name}: filer reported {f.filer_reported_items}, "          f"body suggests {f.suspected_buried_events}")
# Recent activist 13D / 13G filingsfor f in ff.recent_13d(activist="Saba"):    print(f"{f.company_name} — {f.percent_of_class}% by {f.activist_filers}")
# Recent ATM offerings with shelf size > $50Mfor f in ff.recent_atm(min_shelf_million_usd=50):    print(f"{f.company_name}: ${f.shelf_size_million_usd:.1f}M via {f.sales_agents}")

For the full historical archive, get an API key at filingfirehose.com:

python
ff = FilingFirehose(api_key="ff_live_...")
# Search the entire archive for cyber eventsfor f in ff.search_8k(items="1.05", since="2026-01-01"):    print(f.company_name, f.filed_at)

Async

python
import asynciofrom filing_firehose import AsyncFilingFirehose
async def main():    async with AsyncFilingFirehose() as ff:        filings = await ff.recent_8k(items="1.05,5.02")        for f in filings:            print(f.company_name, f.detected_items)
asyncio.run(main())

Why this client

The wedge: most SEC filings APIs trust the filer-reported item codes on 8-K filings. We body-text-classify every filing and surface a suspected_buried_events field flagging when the body language doesn't match the filer's claimed item codes. From a 21-day analysis of 4,251 8-Ks, 7.3% of Item 8.01 filings contain language suggesting a more specific item should have been used — including buried cyber incidents (1.05), officer departures (5.02), and material agreements (1.01).

License

MIT.

Source: README.md at commit 16fe79e

Tools

0
Tool metadata has not been indexed yet.

Version history

1
  1. v0.1.0LatestSep 16, 2026