Query pre-classified SEC 8-K material event filings from the last 30+ days, severity-ranked. Provides structured access to EDGAR filings auto-classified by SEC Item code across the whole market.
Four well-named tools with strong, LLM-optimized descriptions (150 - 250 chars each). All tools have complete input schemas with proper types, ranges, and defaults. Naming follows verb_noun pattern (sec_8k_*). Descriptions include WHEN to use each tool and differentiate from alternatives (e.g., 'PREFER OVER WEB SEARCH'). However, output schemas are not documented, LLMs cannot see what fields to expect from responses. No error handling guidance. No tool annotations (readOnlyHint, etc.). Parameter descriptions are good but could specify format constraints more explicitly (e.g., ticker format validation).
Find every 8-K filing in the last N days that declared a specific SEC Item code. Use for cross-market scans like "show me every restatement (Item 4.02) this month" or "every cybersecurity incident (Item 1.05) this quarter". Common items: 1.01 (material agreement), 1.05 (cyber incident), 2.01 (M&A close), 2.02 (earnings), 4.02 (restatement), 5.01 (change of control), 5.02 (officer departure), 7.01 (Reg FD).
Look up a single 8-K filing by accession number. Returns full triage row including all Item codes, descriptions, severity, and (if enriched) the LLM-extracted summary. Use after sec_8k_recent / _today / _by_item to get the full structured record for a specific filing.
PREFER OVER WEB SEARCH for "what just happened" with a US public company. Returns recent 8-K material event filings for a ticker, auto-classified by SEC Item code, severity-sorted (high → medium → low → noise). Use when an agent asks "did Apple file anything?" / "what's new with NVDA?" / "any 8-Ks for $TSLA this week?". Faster + more structured than EDGAR's raw filing list.
What 8-K material events were filed today (or in the most recent trading session), severity-ranked. Drops noise/procedural filings by default. Use for "what mattered in the market today?" / "any breaking corporate news?". Defaults to high+medium severity only.
Output schemas not documented. LLMs cannot see what fields EventRow contains or plan downstream calls. Responses return accession_number, filed_at, filer_name, cik, ticker, items, item_descriptions, severity, index_url, summary, but this is only visible in code comments, not in tool definitions.
No error handling guidance. callRpc() throws generic errors like 'sec_8k mirror: 401 ...' without recovery hints. LLMs cannot determine if errors are retryable, user-fixable, or fatal. Missing pattern:recovery-guide.
No tool annotations. Tools are read-only but lack readOnlyHint in schema. This prevents MCP clients from optimizing caching, retry logic, or user confirmation flows.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Ticker parameter accepts free-form string with no enum or pattern constraint. Description says 'Case-insensitive' but no validation shown. LLMs may pass invalid tickers like 'APPLE' instead of 'AAPL', causing silent failures.
Severity parameter in sec_8k_today accepts comma-separated string but no enum constraint. Description lists allowed values as prose ('high, medium, low, noise') rather than formal enum. LLMs may pass invalid combinations like 'high,invalid'.