FilingFirehose

Official registry Other

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

Install

Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).

Remote (streamable-http)
Claude Code
claude mcp add --transport http filingfirehose 'https://filingfirehose.com/mcp'
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "filingfirehose": {
            "type": "http",
            "url": "https://filingfirehose.com/mcp"
        }
    }
}

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  1. filing-firehose
  2. Install
  3. Quick start
  4. Async
  5. Why this client
  6. License

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:

from filing_firehose import FilingFirehose

ff = FilingFirehose()

# Recent 8-Ks where the body language flags items the filer didn't report
buried = 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 filings
for 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 > $50M
for 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:

ff = FilingFirehose(api_key="ff_live_...")

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

Async

import asyncio
from 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.

Frequently asked questions

What is FilingFirehose?

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

How do I install FilingFirehose?

It runs as a remote server. In Claude Code: claude mcp add --transport http filingfirehose 'https://filingfirehose.com/mcp'. For other clients, paste the JSON configuration from this page into their MCP settings.

Does FilingFirehose need an API key?

Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.

Is FilingFirehose open source?

Yes. Its code is on GitHub under the MIT license.

Who maintains FilingFirehose?

It is published by jaablon. AI.tn lists it but does not maintain or endorse it.

From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.