Access FEC campaign finance data through MCP. Query data about candidates, money trails, and election filings. STDIO & Streamable HTTP.
Well-structured server with clear, detailed tool definitions. All 5 tools have strong descriptions (150 - 500+ chars), properly typed JSON Schema inputs with enums and constraints, and explicit parameter documentation. Tool naming follows verb_noun convention. However, output schemas are not explicitly documented in the source code, only inferred from descriptions. Error handling guidance is absent. Tool compositions are sound for read-only operations. Conservative scoring reflects missing output schema documentation and lack of explicit error recovery patterns.
Get pre-aggregated committee financial totals — receipts, disbursements, cash on hand, debts, and the itemized/unitemized breakdown — without paginating Schedule A. Use mode "single" (the default) with a committee_id for one committee's totals, one row per two-year cycle it has filed. Use mode "by_entity_type" to rank or screen every committee of one type (presidential, pac, party, pac-party, house-senate, ie-only) by state, designation, or a receipts/disbursements threshold.
Fetch one FEC legal document in full — advisory opinion, MUR, ADR, administrative fine, or statute — by its type and number. openfec_search_legal replaces each result's documents array with a count and category summary and cuts every commission vote down to a date and a 200-character action; this returns the record untouched. doc_type is the plural form of the document_type discriminator on a search result (advisory_opinion becomes advisory_opinions, mur becomes murs, adr becomes adrs, admin_fine becomes admin_fines, statute becomes statutes), and no is that result's no field — every document type carries it, and advisory opinions repeat it as ao_no.
Look up FEC calendar events, filing deadlines, and election dates. Use to find upcoming filing windows for a committee, locate when a federal election occurred, or scope FEC events by date range and category.
Look up federal election races and candidate financial summaries. Find who's running in a race with fundraising totals, or get an aggregate race summary.
Output schemas not explicitly documented in source. Tool descriptions infer return structure but lack formal schema definitions for downstream composition. Pattern: tool recommends documenting output schema so LLMs can chain tools and extract required fields.
No explicit error recovery guidance. Tools are read-only (low risk), but descriptions lack actionable error messages or recovery steps. Pattern: recovery-guide recommends stating what LLM should do next when a call fails (e.g., 'If committee_id not found, call openfec_search_candidates first').
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 69 | 2026-07-28+ | v2 |
Find federal candidates by name, state, office, party, or cycle. Retrieve a specific candidate by FEC ID with financial totals. Candidate IDs start with H (House), S (Senate), or P (President) followed by exactly eight letters or digits.
Parameter dependencies underdocumented. openfec_get_committee_totals 'mode' field controls which other parameters are required/optional, but this dependency is only partially stated. Pattern: param-relationships recommends documenting which params are mutually exclusive or conditional.
Pagination defaults and limits not uniformly stated. Most tools default to page=1, per_page=20 with max=100, but descriptions could be clearer about whether omitting pagination params is valid or returns only first page.