MCP server for SEC EDGAR financial data with a manifest-backed 31-tool surface
The server defines 2 tools with very similar names and responsibilities, creating composition violations. Both tools have partial schema definitions visible in the code, but descriptions are minimal (under 100 chars) and lack critical context about when to use each vs. the other. Parameter descriptions exist but are sparse. No output schema documentation is visible. The duplicate tool design (get_filing_sections vs get_filing_sections_artifact) violates the single-responsibility principle and forces LLMs to guess which to use. Input schemas show proper typing (string, array) but lack constraints like enums or patterns. No error handling guidance is documented.
Extract and return formatted filing sections as markdown with artifact support
Extract filing sections and return as artifact with path-free reference
Two tools with nearly identical schemas and overlapping responsibility (get_filing_sections vs get_filing_sections_artifact). Both accept cik, accession_number, section_ids and return filing data. LLMs cannot distinguish when to use which. Violates single-responsibility principle.
Tool descriptions are under 100 characters and lack critical disambiguation. 'Extract and return formatted filing sections as markdown with artifact support' does not explain what 'artifact support' means or when to choose this tool over get_filing_sections. Descriptions must explain WHAT, WHEN, and WHY.
No output schema or return type documentation visible in code. LLMs cannot infer what fields to expect (markdown string, JSON object, etc.) or plan downstream operations. Every tool must document its return structure.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 46 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Parameter 'section_ids' is an array of strings but has no format constraints, length limits, or valid values enumerated. Should describe: 'List of EDGAR section IDs to extract (e.g., 1, 1A, 7, 8). Each ID must match SEC standard section naming.'
CIK and accession_number parameters have minimal descriptions. CIK description should specify format: 'SEC Central Index Key (CIK), a 10-digit numeric identifier, left-padded with zeros (e.g., 0000789019 for Apple).' Accession number should specify format: 'Filing accession number in format 0000950123-XX-XXXXXX.'
No error handling guidance documented. What happens if CIK is invalid? If accession number doesn't exist? If section_ids are not found in the filing? LLM needs recovery hints: 'If filing not found, try search_filings() or verify accession_number format matches SEC records.'