Search Documents
search_documentsSearch 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. For a STRUCTURED count/list ("how many executive orders in 2026", "list 2026 proclamations"), pass type:"presidential_document" plus presidential_document_type rather than relying on free-text query — a free-text search for "executive order" also matches documents that merely MENTION one, over- or under-counting the real set. To find or confirm ONE specific executive order by its number, pass executive_order_number instead — it scopes and filters for you, no type/presidential_document_type needed. Returns title, abstract, agency, publication date, links, and for presidential documents also executive_order_number, signing_date, and citation. The response always echoes filters_applied: a genuine zero still says exactly what was searched, so it is never a bare empty result. Examples: search_documents({query: "EV tax credit", type: "rule"}), search_documents({type: "presidential_document", presidential_document_type: "executive_order", since: "2026-01-01"}), search_documents({executive_order_number: "14435"}), 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.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Document type filter: "rule", "proposed_rule", "notice", "presidential_document" — mapped internally to the Federal Register API's own codes (RULE/PRORULE/NOTICE/PRESDOCU); an unrecognized value is refused rather than silently matching nothing. | |
| query | No | Search keywords (e.g., "clean energy tax credit"). Optional if type/agency/since/presidential_document_type/executive_order_number already scope the search — forcing a free-text term onto a structured count/list question (e.g. "executive order") distorts it, since the term index matches MENTIONS of a thing as well as the thing itself. | |
| since | No | Publication date floor. Accepts ISO date ("2025-01-01") or shorthand ("30d", "12m", "365d", "1y"). Recommended for any topical search to avoid stale results — the relevance ranker can surface 2004-2008 documents for queries with sparse hits. | |
| agency | No | Agency slug filter (e.g., "environmental-protection-agency", "securities-and-exchange-commission") | |
| executive_order_number | No | Look up ONE executive order by its number, e.g. "14435" or "EO 14435" — automatically scopes to type:"presidential_document" + presidential_document_type:"executive_order" and filters the result to an exact number match, so neither needs to be passed separately. Conflicts with an explicit type/presidential_document_type that names something other than presidential documents / executive orders. | |
| presidential_document_type | No | Only with type:"presidential_document" — narrows to one sub-type: "executive_order", "proclamation", "memorandum", "determination", "notice", or "other". This is the STRUCTURED way to count/list executive orders etc.; prefer it over a free-text query for "how many X" questions. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The search query string | |
| total | Yes | Total count of matching documents | |
| returned | Yes | Number of documents returned in this response | |
| documents | Yes | Array of formatted Federal Register documents |