Standalone SEC EDGAR MCP server — zero infrastructure. Provides tools for financial analysis, filing discovery, keyword search, and cross-EDGAR discovery without requiring a database.
edgarmcp demonstrates solid tool design with clear naming (verb_noun pattern), comprehensive parameter schemas, and good descriptions. All 5 tools have documented input schemas with types and descriptions. However, output schemas are not explicitly documented in the source, and error handling guidance is minimal. Tool descriptions average ~150 chars (within baseline 194), but lack dependency hints and recovery guidance. Parameters are well-typed but some lack format constraints (e.g., date strings, accession number format). No tool annotations (readOnlyHint, destructiveHint) despite all tools being READ_ONLY. Missing pagination documentation for list-returning tools.
List filings for a company with optional filtering by form type, date range, and inclusion of attachments and notes index.
Read a filing, section, exhibit, or accounting note. Supports pagination and section filtering for 10-K/10-Q filings.
Full-text search across the entire EDGAR corpus using the SEC EFTS API. No company required — find any filing mentioning a topic.
BM25 keyword search across parsed filing content with optional scoping by sections, attachment types, or XBRL tags.
Extract and merge financial statements (income statement, balance sheet, cash flow) across periods with Q4 inference, YTD normalization, stock split detection, and TTM computation.
Output schemas not documented. Tool descriptions state what is returned (e.g., 'merged multi-period table') but JSON Schema for response objects is not visible in source. LLMs cannot plan downstream tool calls without knowing response field names and types.
No tool annotations despite all tools being READ_ONLY. FastMCP supports readOnlyHint, destructiveHint, and idempotentHint. Adding readOnlyHint=true to all 5 tools signals to agents that these calls are safe to retry and have no side effects.
Pagination not documented for list-returning tools. get_filings and search_filings return lists but lack limit/offset parameters and total count in response. Large result sets will blow context windows. Baseline pattern requires pagination with cap (20-50 items) and next_cursor or offset.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Parameter format constraints missing. Dates are described as 'YYYY-MM-DD' but no regex pattern or minLength/maxLength in schema. Accession numbers lack format specification. LLMs frequently pass malformed values when constraints are not machine-parseable.
Error handling lacks recovery guidance. No visible error responses in tool definitions. When a company lookup fails or accession number is invalid, the tool should return actionable guidance (e.g., 'Company not found. Try search_edgar() with company name.') rather than a bare error code.