US Federal Register API MCP server (free, no auth) — search and browse Federal Register documents, rules, and regulations
Three tools with complete schemas and strong descriptions. search_documents and recent_rules have excellent, LLM-optimized descriptions (200+ chars) with clear usage guidance and examples. get_document is concise but adequate. All tools have proper JSON Schema with typed parameters and descriptions. Parameters include enums (type filter), ranges (limit), and format guidance (since accepts ISO or shorthand). No critical security issues. Main gaps: no output schema documentation, no error handling guidance, no tool annotations (readOnlyHint), and parameter descriptions could be more prescriptive about constraints.
Get full details for a Federal Register document by its document number (e.g., "2024-12345"). Returns title, abstract, full text link, agencies, dates, and docket information.
Browse the most recently published final rules and regulations from the Federal Register, **with no topic filter** — returns whatever was published most recently across every agency (FAA airworthiness directives, Coast Guard safety zones, EPA tolerance exemptions, etc.). For questions about a specific topic ("EV tax credits", "AI rules", "drug pricing"), use search_documents instead. Returns title, abstract, agency, effective dates, significance.
Search the US Federal Register by topic / keyword for proposed rules, final rules, notices, and presidential documents. **Use this whenever the question mentions a SUBJECT** ("EV tax credits", "AI export controls", "PFAS regulations", "clean energy", "ozempic labeling", etc.) — recent_rules takes no topic filter and would return random unrelated rules. Returns title, abstract, agency, publication date, links. Examples: search_documents({query: "EV tax credit", type: "rule"}), search_documents({query: "artificial intelligence", agency: "commerce-department"}), search_documents({query: "Strait of Hormuz", since: "365d"}). Pass `since` to constrain to recent documents — without it the relevance ranker can return decade-old docs for sparse-term queries.
Output schemas not documented. LLMs cannot predict response structure or plan downstream calls. formatDoc() shows what's returned, but this is not exposed in tool definitions.
No error handling guidance. Tools throw generic errors ('Federal Register API error: 404') without recovery hints. LLMs cannot self-correct or know whether to retry.
Missing tool annotations. No readOnlyHint, destructiveHint, or idempotentHint declared. All three tools are read-only and idempotent but this is not formally signaled to the MCP client.
Parameter 'since' accepts freeform strings ('30d', '12m', '365d', ISO dates) but no enum or pattern constraint. parseSince() validates server-side, but LLMs cannot see the constraint and may pass invalid formats.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
search_documents returns up to 20 results by default with no pagination support. Large result sets could exhaust context. No next_cursor or offset/limit parameters offered.