mcpField
F
FilingFirehose

FilingFirehose

Remote
filingfirehose.comProductivity1Updated 25w ago

About FilingFirehose

FilingFirehose is a Python client for retrieving and searching SEC EDGAR filings. It classifies 8-K text to flag possible unreported events and identifies activist Schedule 13D/G filings and ATM offerings.

Key features

  1. 01Body-text classification of 8-K filings
  2. 02Flags suspected buried events
  3. 03Activist tagging for Schedule 13D/G
  4. 04ATM offering extraction
  5. 05Sync and async Python clients

Use cases

  1. 01Review 8-Ks for possible unreported events
  2. 02Find activist Schedule 13D/G filings
  3. 03Track ATM offerings in prospectus supplements

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://filingfirehose.com/mcp
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

Tools

4
ParameterTypeRequiredDescription
itemsanyNo
suspected_buried_onlybooleanNo
limitintegerNo

Details

From the project 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:

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.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.