MCP task prompts

The hosted MCP server now exposes three ready-made task prompts via prompts/listinsider_activity (Form 4 summary for a ticker), events_digest (8-K digest by item code), and ipo_pipeline (new registrations + freshly priced offerings) — with date windows computed server-side and unknown or malformed arguments rejected by name, the same contract as the tools.

Per-insider pages: /insiders/<cik>/

Every SEC reporting owner filed with a CIK now has a page of their Form 4 filings — issuers, roles as filed, transaction summaries, and a by-issuer rollup — one page per insider across the whole archive. Ticker pages link the insiders behind each issuer's recent activity, and /insiders/ lists recent filers. The same data as JSON: GET /v1/insider-trades?owner_cik=<cik>.

owner_cik= filter on /v1/insider-trades

Query one insider's Form 4 filings across every issuer by their reporting-owner CIK — the CIK on each filing's reporting_owners[]. Combines with the issuer filters (ticker, cik, since/until), works on the REST API and the MCP server's get_insider_trades tool, and covers the full dataset, historical backfill included. API docs.

Study #3: Which corporate events get disclosed on Fridays?

A year of 8-K filings measured by official item code and day of week — what actually gets filed, which items over-index on Fridays, and how EDGAR's 5:30 p.m. filing-date rule shapes what "Friday" even means. Like the two Form 4 studies, it regenerates from one script on a free key, with per-day coverage cross-checked against EDGAR's daily index. Read it.

GET /v1/usage — your key's own meter

Every key can now read its own limits: tier, monthly quota, requests used and remaining this month, per-minute rate limit, and webhook slots — served from the same counters the limits are enforced with, so the numbers cannot disagree with a 429 you just received. The endpoint never consumes the monthly quota, so it keeps working after a quota 429. The key-delivery email's quick-start is also copy-paste ready now (it previously showed a truncated key).

Per-insider rollup on ticker pages

Every ticker page's 90-day summary now includes a by-insider breakdown: open-market purchase and sale legs on non-derivative securities, grouped by the filing's reporting owner(s) — filings, legs, share and dollar totals per insider, largest priced activity first. Joint filings appear once, so the rows sum exactly to the aggregate totals above them. Dollar figures cover priced legs only, computed as shares × price exactly as filed.

Unknown filters are rejected, never silently ignored

The list endpoints (/v1/insider-trades, /v1/events, /v1/registrations) and the free screener now return an explanatory 422 for any query parameter they don't support, naming the offender and the full supported set. Previously a mistyped filter (?tickr=, ?symbol=) was silently dropped and the response was unfiltered data you believed was filtered. The hosted MCP server's tools reject unknown arguments the same way, and every tool schema now declares additionalProperties: false so well-behaved clients catch it before the call.

ticker= filter on /v1/events

8-K corporate events can now be filtered by issuer ticker — GET /v1/events?ticker=META — on both the REST API and the hosted MCP server's get_corporate_events tool. 8-K headers carry no ticker symbol, so the ticker is resolved to a CIK server-side using our own Form 4 dataset (the CIK whose Form 4 most recently carried the ticker wins, so renames resolve the way the filings do). An unknown ticker returns an explained 404 rather than a silently empty list; issuers with no Form 4 filings yet should keep using cik=.

Per-offering registration pages

Every tracked registration statement now has its own page at /registrations/<file-number>/ — the offering's full lifecycle (registration → amendments → effectiveness → final prospectus) as one timeline, threaded by SEC file number, regenerated with the dataset. The registrations index links every tracked offering and its file numbers now click through.

S-1 / IPO API overview page

A dedicated registration lifecycle vertical page: one real offering's complete lifecycle (S-1 → amendment → EFFECT → priced 424B4) shown as the verbatim production response, the seven form types we track, file-number threading, stage-filtered webhooks, and honest limits — live-forward since August 2026, header classification only, no body text.

8-K API overview page

A dedicated 8-K events vertical page: a real production response shown verbatim (one filing, three item codes), the item codes you can filter on, webhook subscriptions filtered by item, and honest limits — we serve the classification and links, not the filing body text.

Insider trading API overview page

A dedicated Form 4 vertical page: a real production response shown verbatim, the schema properties that make it dependable, every query filter with examples, measured freshness numbers from our two published studies, and an honest comparison of insider-data depth across providers.

n8n workflow templates

Three importable n8n workflows: real-time Form 4 insider trade alerts via signed webhooks, a polling variant that needs no public URL, and a daily 8-K corporate events digest. Each posts to Slack/Discord out of the box and swaps to any n8n node. Import from URL, paste a free key, activate.

OpenBB Platform extension

pip install openbb-filingpulse adds FilingPulse as a provider in the OpenBB Platform: Form 4 insider transactions through the standard obb.equity.ownership.insider_trading endpoint, with date-window filters that map to this API's since=/until= for reproducible queries. Details in the SDK docs.

Research study #2: when insider filings get corrected

Insiders re-file corrections as Form 4/A, and each amendment names the date of the original submission it corrects — so correction behavior is measurable. We measured every amendment filed over an eight-week window: how much filing traffic is corrections, how old the corrected filings were (the time a superseded version was the only version), and a lower-bound amendment rate for July 2026's originals — with per-day counts cross-checked against EDGAR's daily index. Like study #1, the whole thing runs from one standard-library script on a free key.

Every object now carries its accession number

8-K event and registration objects gained an accession field — the SEC accession number, the unique, stable identity of every filing. Form 4 objects have carried it since Aug 8; as of today every object served by /v1/events, /v1/registrations, and the matching webhook payloads has it too, including all historical rows (additive change, nothing else moved). Dedupe on accession, not source_url — the polling recipe has been updated to match. Also today: ticker and CIK filters got dedicated indexes, taking the hottest queries from ~150 ms (and multi-second cold-cache outliers) to single-digit milliseconds of server time.

Affiliate program, and referral attribution in the signup funnel

We now share revenue with people who send us customers: 25% recurring for the first 12 months of referred subscriptions, with the complete terms on one page — no income hype, disclosure required. Under the hood, ?ref= links attribute signups end-to-end (30-day window, last click wins), the code rides the Stripe subscription itself so renewals credit correctly, and a malformed ref can never break a signup. Also fixed in passing: the Terms page still described the service as free-of-charge early access — paid tiers have been live since July 31, and section 5 now says so.

Postman collection, and a nightly index-reconciliation pass

The whole REST surface is now importable into Postman in one click: filingpulse.postman_collection.json, generated from the API's own OpenAPI spec with key auth, example filter values, and per-parameter documentation prewired. And behind the scenes, the ingest daemon now re-checks the trailing three days against EDGAR's own daily indexes every night — on its first production run the pass recovered 8 filings the live feed had dropped, so gaps now self-heal within a day instead of waiting for someone to notice.

until= filter and research study #1: the Form 4 filing delay

All three list endpoints (and the MCP tools) now take until= alongside since= — an inclusive upper bound on filed_date, so a fixed date window returns the same population forever. Built for reproducible research and bounded historical pulls. First use: we measured the delay between insider transaction dates and EDGAR filing dates for every Form 4 filed in July 2026, with per-day counts cross-checked against EDGAR's own daily index — the whole study runs from one script on a free key. The check also caught (and we repaired) four filings our live feed had missed.

Free insider-trades screener

A no-signup screener over live Form 4 transaction legs: filter by ticker, transaction code, acquired/disposed, filing window, dollar value, and derivative table — every number exactly as filed, every row linking back to EDGAR. The view is shareable by URL and each ticker page now links straight into it. The JSON, CSV export, and webhooks behind the page remain a free API key away.

Comparison pages and llms.txt

Three new pages compare the realistic ways to get EDGAR data programmatically — Best SEC EDGAR API in 2026, sec-api.io alternatives, and FilingPulse vs sec-api.io — with every competitor fact read from the provider's own pages on a stated date, sources linked, and honest sections on when a competitor is the better choice. The site also now serves /llms.txt and /llms-full.txt: the whole product — endpoints, the frozen schema, tier limits, query patterns — as one machine-readable file for AI assistants, generated from the same contract the API serves so it cannot drift.

Hosted MCP server

FilingPulse now speaks the Model Context Protocol: point Claude, ChatGPT, Cursor, or any MCP client at https://mcp.filingpulse.io/mcp and query normalized Form 4, 8-K, and S-1/IPO data with seven read-only tools — no install, no key required to explore. Anonymous access is rate-limited (20 tool calls/min, 25 rows/call); the MCP page has per-client setup. The REST API also now sees real client IPs behind the proxy, so per-IP throttles apply per client instead of sharing one bucket.

Query patterns page

New Query patterns page: the questions the API gets asked most — filter by ticker, CIK, or amendment status, build an 8-K item digest, thread an offering by SEC file number, sync incrementally with since= and accession dedupe — each as a copy-paste request. Every request on the page is executed against a live API instance by the regression suite; the page is generated from the tested catalog, so it cannot document a request CI never ran.

Form 4 objects now carry accession and filed_date

Every Form 4 returned by the API — and every form4 webhook payload — now includes the SEC accession number (the filing's stable id, and the path parameter for fetching one filing) and the EDGAR acceptance date as filed_date (normalized YYYY-MM-DD, the value since= filters on). Additive change, applied to all historical rows; previously the only stable id on a Form 4 object was buried in source_url. The machine-readable schema at /v1/schema documents both fields.

JavaScript recipes

Two Node examples join the Recipes page: a poller that watches for new filings without re-downloading history (narrow with since=, dedupe by source_url, back off on rate limits), and a webhook receiver that verifies the HMAC signature over the raw request bytes — the thing every JSON body parser quietly breaks. Both run in CI against a live API instance, like the Python four.

Recipes: runnable examples, tested in CI

New Recipes page: four complete programs — CSV export of a ticker's Form 4 transactions, an 8-K item digest, a signature-verifying webhook receiver with Slack forwarding, and IPO threading by SEC file number. Every script is executed against a live API instance in the regression suite; the downloads are the tested files themselves.

S-1 registrations on the homepage

The homepage live section now includes the newest registration events alongside insider trades, and the 30-day volume band counts all three verticals.

Registration pipeline, browsable

New /registrations/ page: the S-1/F-1 pipeline with lifecycle stages and file-number threads, refreshed every six hours. Notices of effectiveness are listed separately — most cover form types we don't track yet, and the page says so.

Third data vertical: S-1/IPO registration lifecycle

GET /v1/registrations and the registration webhook event: S-1/F-1 registrations, amendments, SEC effectiveness notices, and final priced prospectuses, threaded across one offering by SEC file number. Live-forward from August 1; no backfill yet.

Self-serve signup opens — free and paid tiers

Key delivery by email at /signup.html; paid tiers checkout via Stripe. Official Python and JavaScript SDKs published to PyPI and npm. Support inbox live at keys@filingpulse.io.

Site redesign; search indexing begins

New public site with live dataset statistics on the homepage. Domain verified with Google Search Console; sitemap of 2,900+ issuer pages submitted and accepted.

Per-issuer data pages

2,911 ticker pages published at /insider-trades/ — insider transaction history and 8-K events per issuer, regenerated from the live dataset every six hours.

Automated pipeline monitoring

Health evaluation every ten minutes across ingestion freshness, backfill progress, and service state, with thresholds aware of EDGAR's filing calendar (quiet weekends don't false-alarm; weekday stalls surface within the hour).

Backfill resilience fix

Found and fixed a stall where EDGAR's unusual error behavior for never-published weekend index files could livelock historical backfill. Backfill errors are now fully isolated from live polling, with regression tests pinning the fix.

Public launch

filingpulse.io and api.filingpulse.io live with TLS. Production ingestion running in Ashburn, Virginia; 24-month historical backfill started.

Core platform

Normalized schema v1 frozen (values as filed, fields never missing, additive-only evolution). Form 4 and 8-K ingestion, REST API v1 with keys and rate limits, and HMAC-signed webhook delivery with automatic retries — all pinned by a regression corpus of real filings.