Keyless Model Context Protocol server giving AI agents live access to SEC EDGAR: company lookup, recent filings, full-text filing search, XBRL financial facts, and insider (Form 3/4/5) transactions.
Five tools with complete input schemas and clear descriptions. Naming follows verb_noun pattern (company_lookup, recent_filings, filing_search, financials, insider_transactions). Descriptions are substantive (100-200 chars), explaining WHAT and WHEN. However, output schemas are entirely undocumented, LLMs cannot plan downstream calls or extract structured data. Parameters lack type constraints (enums, ranges, formats). Error handling is absent from visible code. No security annotations or permission gates documented. Tool composition is sound (each does one thing), but lack of output documentation and error guidance limits production readiness.
Resolve a stock ticker or company name to its SEC identity: CIK number, official name, ticker(s), exchange(s), industry (SIC), and fiscal year end. Start here before other Filings Intel calls.
Full-text search across all EDGAR filings for a keyword or phrase (e.g. a risk factor, product name, or executive). Returns matching filings with company, form type, and date. Optionally restrict to a form type.
Get reported financial facts for a company from XBRL data in its filings: revenue, net income, total assets, liabilities, equity, EPS, and cash — most recent reported values, or the full history of one specific us-gaap concept.
List recent insider ownership filings (Form 3/4/5) for a company — the filings officers, directors, and 10% owners submit when they buy or sell shares. Returns the filings with dates and links.
List a company's most recent SEC filings (10-K annual reports, 10-Q quarterly, 8-K material events, S-1 IPO registrations, etc.) with filing dates and direct document links. Optionally filter by form type.
Output schemas completely undocumented. LLMs cannot infer what fields to expect from tool responses (e.g., does company_lookup return 'ticker' or 'tickers'? Does recent_filings include 'url' or 'document_url'?). This forces agents to guess field names and breaks downstream tool chaining.
No error handling guidance visible. Code does not show how tools respond to invalid queries (e.g., ticker not found, API rate limit, malformed CIK). LLMs receive no recovery hints and cannot self-correct.
Parameters lack type constraints. 'limit' is integer but no min/max bounds (e.g., can agent pass limit=999999?). 'form_type' accepts free-form strings instead of enum (10-K, 10-Q, 8-K, 4, etc.). LLMs hallucinate invalid values.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | <=2025-11-25 | v2 |
No tool annotations (readOnlyHint, idempotentHint). All tools are read-only and safe to retry, but LLMs cannot infer this from definitions. Agents may avoid retrying on transient failures.
Result limits not enforced in visible code. 'limit' defaults to 10-15 but no cap documented. If agent passes limit=10000, does the tool return 10000 items (context explosion) or silently cap? Ambiguity invites misuse.