Keyless Model Context Protocol server giving AI agents live access to US federal regulations: search and track rules, proposed rules, notices and presidential executive orders from the Federal Register, plus agency lookup.
Server has 5 well-named tools with complete input schemas and reasonable descriptions. Naming follows verb_noun convention (search_documents, recent_documents, executive_orders, agencies). Descriptions are 150-250 chars, meeting the 10-1024 baseline. However, critical gaps exist: (1) NO output schemas documented anywhere, LLMs cannot plan downstream calls or extract fields; (2) parameter descriptions are sparse, 'document_number' in 'document' tool has no description in the visible schema; (3) no error handling guidance, tools return null or {_error} but don't guide recovery; (4) no pagination details in descriptions despite per_page params; (5) security: rate-limiting via KV is mentioned but not exposed to LLM. The 'document' tool's inputSchema shows document_number property but DK_AD fallback suggests description was missing and had to be patched in via dkDescribe(). This is a workaround, not proper schema definition.
Look up US federal agencies and their slugs (used to filter the other tools by issuing agency). Optionally pass a query to match by name, e.g. 'environmental' or 'defense'.
Get full detail on a single Federal Register document by its document number (e.g. '2026-12811'): abstract, action, effective date, comment deadline, CFR references, citation, topics, agencies and links.
Search recent US presidential Executive Orders published in the Federal Register. Optionally filter by keyword and date. Returns EO number, signing/publication date, title and links.
List the most recent Federal Register documents, optionally filtered by type and issuing agency, over a look-back window. Use this to monitor newly published rules/notices from an agency.
Search the US Federal Register for regulations and notices. Filter by keyword, document type (rule, proposed_rule, notice, presidential_document), issuing agency (slug from the agencies tool), and publication date. Returns matching documents with title, type, agencies, abstract and links. Great for 'what did agency X publish about topic Y'.
No output schemas documented. LLMs cannot infer what fields to expect from tool responses, forcing them to guess at downstream field names and breaking tool chaining.
Parameter descriptions patched via dkDescribe() fallback (DK_AD map) rather than in schema. 'document_number' in 'document' tool has no description in inputSchema; description is injected at runtime. This is fragile and not visible to schema validators.
Error handling returns {_error: string} but provides no recovery guidance. When getJSON() returns {_error: 'upstream 404'}, the LLM has no hint to try a different search or call agencies() first.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | <=2025-11-25 | v2 |
Pagination parameters (per_page, days) lack min/max constraints in descriptions. per_page defaults to 10 but max is 30, LLMs may pass invalid values without guidance on the boundary.
Rate-limiting via Cloudflare KV (FREE_LIMIT=100) is server-side but not exposed to LLM. No tool to check remaining quota or guidance on what happens when limit is exceeded.