The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Vigia Edgar listing page.
Public copy & quickstart live in
mcp/README.md. This root README is the developer/architecture doc for the two-layer system (engine + skin).
An always-on engine that watches US SEC EDGAR for you and queues an alert about ~45 seconds (median, under ~2 min worst case — fast polling, not instant/real-time) after the SEC accepts an insider Form 4 or a company's 8-K. Set a ticker watchlist (AAPL, TSLA, NVDA…) and your AI agent gets insider-trading and material-event alerts on Claude, Cursor, or any MCP client — no setup on your side. Free: 1 ticker. Pro ($29): unlimited tickers.
Latency, stated honestly: about 45 seconds median from when the SEC accepts a filing, under ~2 minutes worst case (measured on the EDGAR
getcurrentfeed). The engine polls fast and never sleeps.
An LLM agent on its own cannot watch EDGAR 24/7. The value here is infrastructure that never sleeps: a cron-driven engine continuously polls the SEC, dedupes every filing, and keeps a per-user cursor so your agent only ever sees what's new. The agent just asks; the engine has already been watching.
watch_insider(tickers: string[])Register US tickers to monitor (Form 4 + 8-K). Resolves each ticker to its SEC CIK and starts watching. Returns the resolved list and any tickers it couldn't find.
get_alerts()Return new filings detected for your watched tickers since your last call (a per-user cursor
advances automatically, so you never get duplicates). Each alert includes: ticker, company,
formType, category (insider | material_event), accession, acceptanceTime,
detectedTime, latencySeconds, and a direct filingUrl.
Two layers:
getcurrent atom feed every
minute (two polls ~30s apart per tick → ~30s effective cadence). It dedupes accession numbers,
matches filings to watched companies by CIK (robust to name changes), and stores matches in
D1. State: seen (dedupe), watches (per-user CIKs), alerts, cursors (per-user delivery),
ticker_map (refreshed daily from company_tickers.json)./watch, /alerts). MCPize handles auth and billing.Per-user isolation: set WATCH_NAMESPACE (your own key) in the MCP server config to keep your
watchlist and cursor private. Defaults to default.
All requests to the SEC use the required identifiable User-Agent and stay well under the 10 req/s
limit (the EDGAR feed is polled once per cron cycle).
WORKER_URL — base URL of the Cloudflare engine.VIGIA_KEY — shared secret the skin uses to call the engine.WATCH_NAMESPACE — per-user watchlist namespace (optional; defaults to default).The engine counts four product numbers in the D1 funnel table (one aggregate row
per namespace, idempotent upserts — negligible cost):
/watch)/alerts)Read them (admin, needs X-Vigia-Key):
Or straight from D1: