congressgov-mcp-server
Server Details
Access U.S. congressional data (bills, votes, members, committees) via MCP.
- Status
- Healthy
- Uptime
- 99.9% over 77 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- cyanheads/congressgov-mcp-server
- GitHub Stars
- 2
- Server Listing
- congressgov-mcp-server
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 11 tools
Most tools target clearly distinct Congress.gov resources, and the descriptions explicitly explain routing between similar paths. The main overlap is between congressgov_bill_lookup's summaries operation, congressgov_bill_summaries, and congressgov_search_bills, though the descriptions do distinguish broad browsing from per-bill summaries and keyword search.
Every tool uses the same congressgov_ prefix followed by a snake_case resource name. The set is consistently resource-oriented rather than mixing verbs, casing styles, or abbreviations.
With 11 tools, the server is well-scoped for a broad legislative data domain. The multi-operation tools consolidate related CRUD-style actions instead of exploding into dozens of narrow endpoints.
The surface covers bills, summaries, search, committees, committee reports, CRS reports, the Congressional Record, enacted laws, members, roll votes, and Senate nominations. Minor gaps remain, such as treaties and broader committee meetings/hearings beyond nomination-related data, but core legislative workflows are well covered.
Available Tools
11 toolscongressgov_bill_lookupCongress.gov Bill LookupARead-onlyIdempotentInspect
Browse and retrieve U.S. legislative bill data from Congress.gov. Discover bills by filtering on congress, bill type, and date range — there is no keyword search. Use 'list' to browse (requires congress, defaults to most-recently-updated first), 'get' for full bill detail (sponsor, policy area, CBO estimates, law info), or drill into a specific bill with 'actions', 'amendments', 'cosponsors', 'committees', 'subjects', 'summaries', 'text', 'titles', or 'related' (each requires congress + billType + billNumber). 'text' lists the published versions and their format URLs; 'content' then reads one version's actual text, a bounded character window at a time. 'summaries' takes an optional versionCode selector and returns each row's text a bounded character window at a time — a row past the window carries textTotalCharacters/textTruncated/textNextOffset, and characterOffset reads on from there.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page (1-250). | |
| order | No | Sort order for 'list' (sorts by update date). 'recent' (default) is newest first; 'oldest' is ascending. Ignored by other operations. | recent |
| format | No | Document format for 'content'. 'text' is GPO's Formatted Text — plain, pre-formatted print output, published for every document checked. 'xml' prefers United States Legislative Markup and falls back to Formatted XML; it exists on some bill text versions and on no committee report or Congressional Record article. PDF is not retrieved — read one at the format URLs 'text'/'articles' return. | text |
| offset | No | Pagination offset. | |
| billType | No | Bill type code. Required for get and sub-resource operations. | |
| congress | Yes | Congress number (e.g., 118, 119). | |
| operation | Yes | Which data to retrieve. | |
| billNumber | No | Bill number. Required for get and sub-resource operations. Accepts the digit-string form list rows carry (e.g. "9479") as well as a number. | |
| toDateTime | No | End of date range filter (ISO 8601). Same field semantics as fromDateTime. | |
| versionCode | No | Which summary version 'summaries' returns — the versionCode a summary row carries ('00' introduced, '49' public law). Selection runs over the bill's whole summary list, which Congress.gov publishes no filter for, and limit/offset then page the matching rows. Omit to return every version. Ignored by other operations. | |
| fromDateTime | No | Start of date range filter (ISO 8601). Filters by the bill's update date — when Congress.gov last touched the record — not by the bill's latest legislative action. | |
| characterLimit | No | Maximum characters to return (1-100000) — for the document window on 'content', and for each row's summary text on 'summaries'. Legislative documents run past a million characters and an enacted bill's summary past two hundred thousand, so either takes several windows. | |
| characterOffset | No | First character to return, 0-based — of the document on 'content', and of every returned row's summary text on 'summaries'. Offsets are exact and are never snapped to a section or paragraph break, so feeding back the response's nextOffset (or a summary row's textNextOffset) walks the whole text with every character returned exactly once. | |
| textVersionIndex | No | Which text version 'content' reads, 0-based against the same order 'text' returns — 0 is the most recent version. Ignored by other operations. |
Output Schema
| Name | Required | Description |
|---|---|---|
| bill | No | Dynamic upstream JSON record. |
| data | No | Result rows. Per-tool item shape is rendered in the markdown body. |
| error | No | Present when the call failed. Absent on success. |
| notice | No | Guidance when results are empty, a page is past the end, or a caveat applies. |
| content | No | Dynamic upstream JSON record. |
| pagination | No | Pagination metadata: total count and next offset. |
| totalCount | No | Total results across all pages. |
| effectiveQuery | No | The browse scope and applied filters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and idempotentHint, so the safety profile is covered, and the description still adds real behavioral detail: character-window paging, the textTotalCharacters/textTruncated/textNextOffset response fields, and that offsets are never snapped to section boundaries. It also notes XML falls back and that PDF is not retrieved. The main residual gap is that paging behavior for 'list' (limit/offset) is left entirely to the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the tool's scope, then walks the operations in a logical browse → detail → drill-down → read order. It is dense but nearly every clause adds decision-relevant information; the only waste is that the summaries truncation mechanic is explained the same way twice, once in prose and again in the versionCode/characterLimit parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter, 12-operation tool this covers the essentials: what each operation returns, which parameters bind to which operation, how to page long documents, and how to continue from a truncated summary. An output schema exists, so the description does not need to fully document return shapes, yet it volunteers the paging fields the agent must hand back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so a baseline of 3 would apply, but the description adds operation-to-parameter mapping the schema cannot express: which operations need congress + billType + billNumber, that versionCode is a 'summaries' selector, and how limit/offset interact with a bounded character window. That is genuine semantic value above the per-parameter text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ('Browse and retrieve U.S. legislative bill data from Congress.gov') and then enumerates every operation with concrete semantics, including 'list', 'get', and the nine sub-resources. The one sibling that overlaps directly, congressgov_bill_summaries, is never named even though this tool exposes a 'summaries' operation, so the differentiation from siblings is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operation-selection guidance: 'list' to browse, 'get' for full detail, sub-resources for drill-down, and 'text' then 'content' for reading actual text versus listing versions. It also warns that there is no keyword search, implicitly routing keyword queries elsewhere. It stops short of naming the alternative tools (congressgov_search_bills, congressgov_bill_summaries) or stating exclusions explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
congressgov_bill_summariesCongress.gov Bill SummariesARead-onlyIdempotentInspect
Browse recent CRS (Congressional Research Service) bill summaries — plain-language summaries of bills at each legislative stage, useful for answering "what's happening in Congress?". The fromDateTime/toDateTime filters apply to the summary's update time, not the bill's action date, so results include recently rewritten summaries of older bills. Defaults to summaries updated in the last 7 days. Each item shows both the bill's action date and the summary update date. A page stops adding rows once it reaches a fixed response-character budget, and a summary longer than the per-row window arrives as an exact character window carrying textTotalCharacters/textTruncated/textNextOffset; pagination.nextOffset continues the page and a row's textNextOffset continues its text. For summaries of one specific bill — and to read a windowed summary to the end — use congressgov_bill_lookup with operation='summaries' instead.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page (1-250). | |
| offset | No | Pagination offset. | |
| billType | No | Bill type filter. Requires 'congress'. | |
| congress | No | Congress number. Optional — omit for summaries across all congresses. | |
| toDateTime | No | End of date range (ISO 8601), filtered on the summary update time. Defaults to now. | |
| fromDateTime | No | Start of date range (ISO 8601), filtered on the summary update time. Defaults to 7 days ago if neither date param is set. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | Result rows. Per-tool item shape is rendered in the markdown body. |
| error | No | Present when the call failed. Absent on success. |
| notice | No | Guidance when results are empty, a page is past the end, or a caveat applies. |
| pagination | No | Pagination metadata: total count and next offset. |
| totalCount | No | Total results across all pages. |
| effectiveQuery | No | The browse scope and applied filters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and idempotentHint, so safety and idempotency are covered. The description adds real behavioral context beyond them: the date filters apply to summary update time rather than bill action date, the 7-day default, and the response-character budget with windowed summaries. It does not, however, say whether a windowed summary can be reassembled only via the sibling tool. With annotations covering the safety profile, a 3 is appropriate — useful added context but not rich behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then caveats, then the alternative — a sensible order. It is dense but most sentences carry new information; only the date-filter sentences partially duplicate the schema descriptions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, paginated browse tool with full annotation coverage, an output schema, and 100% parameter coverage, this leaves nothing an agent needs unanswered. It even explains the row and pagination fields (textTotalCharacters/textNextOffset) that govern how to continue reading.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented. The description restates what the schema says about fromDateTime/toDateTime (filtered on summary update time, 7-day default) and adds little syntax or format detail beyond that. Baseline 3 is correct when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'Browse recent CRS bill summaries — plain-language summaries of bills at each legislative stage' — and immediately distinguishes itself from congressgov_search_bills and congressgov_bill_lookup. An agent knows exactly what corpus this tool returns without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case ('answering what's happening in Congress?') and an explicit alternative with the condition that selects it: for one specific bill, use congressgov_bill_lookup with operation='summaries'. It also names the default time window, so the agent knows what it gets when it passes nothing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
congressgov_committee_lookupCongress.gov Committee LookupARead-onlyIdempotentInspect
Browse congressional committees and their legislation, reports, and nominations. Committee codes follow the pattern chamber-prefix (h/s/j) + abbreviation + 2-digit number — use 'list' (with optional 'filter' for name→code resolution) to discover codes, then 'get' or drill into 'bills', 'reports', or 'nominations' ('nominations' is Senate-only). 'get' and sub-resources only need committeeCode (chamber is inferred from the prefix); pass chamber explicitly to override. The 'bills' sub-resource defaults to 'recent' order (newest update-date first); pass order='oldest' for ascending update-date order. Upstream omits bill titles from the 'bills' sub-resource — rows carry only {congress, billType, billNumber, actionDate, relationshipType, url}; chain 'congressgov_bill_lookup get' per row to retrieve titles and policy area.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page (1-250). | |
| order | No | Sort order for the 'bills' sub-resource. 'recent' (default) returns newest update-date first; 'oldest' returns ascending update-date order. Ignored by other operations. | recent |
| filter | No | Filter committee-list results by name (e.g., 'transportation', 'armed services'). Only meaningful for 'list'; fuzzy-matched rows are labeled approximate. | |
| offset | No | Pagination offset. | |
| chamber | No | Chamber filter for 'list', or override for 'get' and sub-resources (otherwise inferred from committeeCode prefix). | |
| congress | No | Congress number. | |
| operation | Yes | Which data to retrieve. | |
| committeeCode | No | Committee system code, e.g. 'hsju00'. Required for 'get' and sub-resources. Codes are letters + a 2-digit suffix and are matched case-insensitively. Any other non-blank value is treated as a committee name and resolved automatically — single-word names ('Judiciary') included — or use operation:'list' with filter to browse. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | Result rows. Per-tool item shape is rendered in the markdown body. |
| error | No | Present when the call failed. Absent on success. |
| notice | No | Guidance when results are empty, a page is past the end, or a caveat applies. |
| committee | No | Dynamic upstream JSON record. |
| pagination | No | Pagination metadata: total count and next offset. |
| totalCount | No | Total results across all pages. |
| effectiveQuery | No | The browse scope and applied filters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only, open-world, and idempotent, but the description adds important behavioral context: committeeCode inference rules, the Senate-only limitation on nominations, the default 'recent' order for bills, and the upstream omission of bill titles with row fields spelled out. This is meaningful disclosure beyond structured metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded with purpose, then proceeds through code format, operation routing, inference rules, defaults, and the upstream title limitation. Every sentence carries operational information, and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return shapes, yet it still discloses the bills-row limitation and chaining remedy. It covers all operations, required parameters, defaults, and key behavioral caveats, so an agent has enough to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds useful semantics beyond the schema: the committee-code pattern with chamber prefix, name-to-code resolution via 'filter', chamber override behavior, and the bills-specific 'order' default. This meaningfully improves parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool browses congressional committees and their legislation, reports, and nominations, with a specific verb and resource. It distinguishes its internal operations well, but does not explicitly differentiate itself from overlapping sibling tools such as congressgov_committee_reports or congressgov_senate_nominations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit operational guidance: use 'list' with optional 'filter' to discover codes, then 'get' or drill into 'bills', 'reports', or 'nominations'; notes that 'nominations' is Senate-only; explains chamber inference and override; and specifies when to chain to congressgov_bill_lookup for titles.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
congressgov_committee_reportsCongress.gov Committee ReportsARead-onlyIdempotentInspect
Browse and retrieve committee reports from Congress.gov — reports accompany legislation reported out of committee and explain the bill's purpose, committee amendments, dissenting views, and the committee vote. Report types are 'hrpt' (House), 'srpt' (Senate), and 'erpt' (Executive). 'text' lists the published format URLs; 'content' then reads the report's actual text, a bounded character window at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page (1-250). | |
| format | No | Document format for 'content'. 'text' is GPO's Formatted Text — plain, pre-formatted print output, published for every document checked. 'xml' prefers United States Legislative Markup and falls back to Formatted XML; it exists on some bill text versions and on no committee report or Congressional Record article. PDF is not retrieved — read one at the format URLs 'text'/'articles' return. | text |
| offset | No | Pagination offset. | |
| congress | Yes | Congress number. | |
| operation | Yes | Which data to retrieve. | |
| reportType | No | Report type. Required for get, text, and content operations. | |
| reportNumber | No | Committee report number. Required for get, text, and content operations. | |
| characterLimit | No | Maximum characters to return for 'content' (1-100000). Legislative documents run past a million characters, so a full bill takes several windows. | |
| characterOffset | No | First character to return for 'content', 0-based. Offsets are exact and are never snapped to a section or paragraph break, so feeding the response's nextOffset back walks the whole document with every character returned exactly once. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | Result rows. Per-tool item shape is rendered in the markdown body. |
| text | No | Dynamic upstream JSON records. |
| error | No | Present when the call failed. Absent on success. |
| notice | No | Guidance when results are empty, a page is past the end, or a caveat applies. |
| report | No | Dynamic upstream JSON record. |
| content | No | Dynamic upstream JSON record. |
| pagination | No | Pagination metadata: total count and next offset. |
| totalCount | No | Total results across all pages. |
| effectiveQuery | No | The browse scope and applied filters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds genuine behavioral context beyond that: the text→content two-step workflow and the fact that content returns a bounded character window rather than the whole document. It stops short of noting rate limits or upstream coverage gaps, but the incremental value is real.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, all load-bearing: the first defines the resource, the second enumerates the type codes, the third explains the two-step read workflow. Nothing is repeated from the schema and the purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and annotations cover safety. The description supplies the domain framing and the paging workflow an agent needs to sequence calls correctly. A minor gap is that it never states that reportType and reportNumber are the required keys for get/text/content, leaving that to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter — including format, characterLimit, and characterOffset — is already documented in the schema. The description reinforces the text/content distinction and names the report types, but adds no syntax or constraints beyond what the schema states, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Browse and retrieve committee reports from Congress.gov') and then defines what those reports are — accompanying legislation out of committee, with purpose, amendments, dissenting views, and vote. The three report-type codes and the text/content split make it distinguishable from siblings like congressgov_crs_reports without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear operational rule for choosing between the 'text' and 'content' operations ('text' lists the published format URLs; 'content' then reads the report's actual text). It does not, however, say when to reach for this tool versus congressgov_crs_reports or congressgov_bill_summaries, nor does it state prerequisites such as needing a reportType/reportNumber pair first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
congressgov_crs_reportsCongress.gov CRS ReportsARead-onlyIdempotentInspect
Browse and retrieve CRS (Congressional Research Service) reports — nonpartisan policy analyses by subject-matter experts at the Library of Congress, covering policy areas, legislative proposals, and legal questions. Report IDs use letter-number codes (e.g., R40097, RL33612, IF12345). Use 'list' to browse available reports or 'get' for full detail (authors, topics, summary, download formats).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page (1-250). | |
| offset | No | Pagination offset. | |
| operation | Yes | Which data to retrieve. | |
| reportNumber | No | CRS report ID (e.g., 'R40097'). Required for 'get'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | Result rows. Per-tool item shape is rendered in the markdown body. |
| error | No | Present when the call failed. Absent on success. |
| notice | No | Guidance when results are empty, a page is past the end, or a caveat applies. |
| report | No | Dynamic upstream JSON record. |
| pagination | No | Pagination metadata: total count and next offset. |
| totalCount | No | Total results across all pages. |
| effectiveQuery | No | The browse scope and applied filters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and openWorld, so the safety profile is covered. The description adds real behavioral context beyond that: the report ID convention (letter-number prefixes such as R/RL/IF) and the fact that 'get' surfaces authors, topics, summary and download formats. It says nothing about pagination behavior or rate limits, but pagination is covered by the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler: the resource is defined first, then the operation choice. Even the acronym expansion earns its place because it tells an agent what the content actually is.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema, full parameter descriptions and rich annotations, the description only needs to carry purpose, operation choice and identifier format — all present. The missing piece is routing against congressgov_committee_reports, a sibling whose name an agent could easily confuse with this one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description contributes only a mild extra — showing multiple report-number prefixes (R40097, RL33612, IF12345) versus the schema's single example — which helps an agent construct a valid reportNumber but does not add much beyond structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair (browse/retrieve) and a precisely scoped resource, and even explains what a CRS report is (nonpartisan policy analyses from the Library of Congress), which disambiguates the acronym. It does not, however, explicitly contrast itself with the similarly-named sibling congressgov_committee_reports.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use list to browse available reports or get for full detail' gives a clear decision rule for the operation enum and names what 'get' returns. It offers no guidance on when to reach for this tool versus congressgov_committee_reports or congressgov_bill_summaries, which is the main remaining gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
congressgov_daily_recordCongress.gov Daily RecordARead-onlyIdempotentInspect
Browse the daily Congressional Record — floor speeches, debates, and legislative text published each day Congress is in session. Navigation is hierarchical: volumes (via 'list') → issues (via 'issues') → articles (via 'articles'). Use 'list' to find recent volumes, 'issues' to see what's in a volume, and 'articles' to access individual speeches and debate sections. 'articles' lists each article and its format URLs; 'content' then reads one article's actual text, a bounded character window at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page (1-250). | |
| format | No | Document format for 'content'. 'text' is GPO's Formatted Text — plain, pre-formatted print output, published for every document checked. 'xml' prefers United States Legislative Markup and falls back to Formatted XML; it exists on some bill text versions and on no committee report or Congressional Record article. PDF is not retrieved — read one at the format URLs 'text'/'articles' return. | text |
| offset | No | Pagination offset. | |
| operation | Yes | Which data to retrieve. | |
| issueNumber | No | Issue number within a volume. Required for 'articles' and 'content'. List rows carry this as a string (e.g. "109") — both forms are accepted. | |
| articleIndex | No | Which article 'content' reads, 0-based against the issue's whole article sequence — the same absolute position 'articles' pages through with offset. Ignored by other operations. | |
| volumeNumber | No | Volume number. Required for 'issues', 'articles', and 'content'. Accepts a number or the digit-string form list rows carry. | |
| characterLimit | No | Maximum characters to return for 'content' (1-100000). Legislative documents run past a million characters, so a full bill takes several windows. | |
| characterOffset | No | First character to return for 'content', 0-based. Offsets are exact and are never snapped to a section or paragraph break, so feeding the response's nextOffset back walks the whole document with every character returned exactly once. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | Result rows. Per-tool item shape is rendered in the markdown body. |
| error | No | Present when the call failed. Absent on success. |
| notice | No | Guidance when results are empty, a page is past the end, or a caveat applies. |
| content | No | Dynamic upstream JSON record. |
| pagination | No | Pagination metadata: total count and next offset. |
| totalCount | No | Total results across all pages. |
| effectiveQuery | No | The browse scope and applied filters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world behavior, so the safety profile is covered. The description adds genuinely useful operational context beyond that: 'content' returns a bounded character window at a time, and 'articles' returns format URLs while PDF is not retrieved — helpful for an agent planning reads.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource definition, then the hierarchy and per-operation guidance in three tight sentences. There is mild repetition of the list/issues/articles sequence, but each sentence carries navigational value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and rich annotations, the description needn't explain return shapes, and it covers the hierarchical navigation model well. Minor gaps: it doesn't mention pagination behavior or that volume/issue numbers are required for downstream operations, though the schema covers those.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all nine parameters are documented in the schema, including the characterOffset/characterLimit windowing semantics. The description reinforces the operation roles but adds no syntax or format detail beyond what the schema already provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'Browse the daily Congressional Record — floor speeches, debates, and legislative text' — which is clearly distinct from the bill/committee/member-focused siblings. It does not explicitly name or contrast a sibling, which keeps it just under a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit navigation flow: 'list' for volumes, 'issues' for what's in a volume, 'articles' for individual speeches, and 'content' to read article text. This tells the agent when each operation applies and how they chain, though it doesn't state exclusions or when to prefer a sibling tool (e.g., full bill text via bill_lookup).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
congressgov_enacted_lawsCongress.gov Enacted LawsARead-onlyIdempotentInspect
Browse enacted public and private laws from Congress.gov by congress and law type ('pub' for public laws, 'priv' for private). 'list' filters by enactment status and law type — the discovery path 'bill_lookup' does not offer. 'get' returns the origin bill record (sponsor, actions, summaries, text), with the public/private law citation on the bill's 'laws' array (e.g. {"number":"118-2","type":"Public Law"}).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page (1-250). | |
| offset | No | Pagination offset. | |
| lawType | No | Law type — 'pub' (public laws, general application, most common) or 'priv' (private laws, specific individuals or entities). Required for 'get'. | |
| congress | Yes | Congress number. | |
| lawNumber | No | Law number, as carried by a 'list' row's `laws[].number` — either the full citation ('118-90', rendered as 'Public Law 118-90') or the portion after the hyphen ('90'); the prefix is the congress and must match `congress`. Not the row's own `number`, which is the origin bill. Required for 'get'. | |
| operation | Yes | Which data to retrieve. |
Output Schema
| Name | Required | Description |
|---|---|---|
| law | No | Dynamic upstream JSON record. |
| data | No | Result rows. Per-tool item shape is rendered in the markdown body. |
| error | No | Present when the call failed. Absent on success. |
| notice | No | Guidance when results are empty, a page is past the end, or a caveat applies. |
| pagination | No | Pagination metadata: total count and next offset. |
| totalCount | No | Total results across all pages. |
| effectiveQuery | No | The browse scope and applied filters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds useful behavioral context by explaining that 'get' resolves back to the origin bill record and that the law citation lives in the bill's 'laws' array, which clarifies the tool's data model beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly written sentences, front-loaded with the tool's purpose and sibling distinction. The parenthetical clarifications and citation example earn their space by disambiguating lawType and lawNumber.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers both operations, the key domain concepts (public/private laws, origin bill, laws array), and gives enough context to invoke the tool correctly. Because an output schema exists, it does not need to enumerate return fields in detail, and the remaining parameter details are fully documented in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents congress, lawType, lawNumber, limit, and offset thoroughly. The description reinforces the meaning of lawType and lawNumber with examples, but largely repeats what the schema provides rather than adding new parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Browse') and resource ('enacted public and private laws'), and immediately distinguishes the tool from the sibling discovery path by naming 'bill_lookup'. An agent can tell what this tool does and how it differs without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly contrasts 'list' with 'bill_lookup', noting that list filters by enactment status and law type where bill_lookup does not. It also explains what 'get' returns, though it does not explicitly state when to choose 'get' versus 'list' beyond the operation semantics already implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
congressgov_member_lookupCongress.gov Member LookupARead-onlyIdempotentInspect
Discover congressional members and their legislative activity. No name search. For 'list', filter by stateCode (optionally with district), by congress, or by both together (e.g., 118th Congress + CA, or CA district 12 in the 118th). Add currentMember=true to restrict to currently serving members. Once you have a bioguideId, use 'get' for full profile or 'sponsored'/'cosponsored' for their legislative portfolio.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page (1-250). | |
| offset | No | Pagination offset. | |
| congress | No | Congress number to filter by. | |
| district | No | Congressional district number. Requires stateCode. Use 0 for at-large. | |
| operation | Yes | Which data to retrieve. | |
| stateCode | No | Two-letter state code (e.g., 'CA', 'TX'). | |
| bioguideId | No | Unique member identifier (e.g., 'P000197'). Required for get/sponsored/cosponsored. | |
| currentMember | No | Filter to currently serving members. Omit to include both current and former members. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | Result rows. Per-tool item shape is rendered in the markdown body. |
| error | No | Present when the call failed. Absent on success. |
| member | No | Dynamic upstream JSON record. |
| notice | No | Guidance when results are empty, a page is past the end, or a caveat applies. |
| pagination | No | Pagination metadata: total count and next offset. |
| totalCount | No | Total results across all pages. |
| effectiveQuery | No | The browse scope and applied filters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds non-trivial operational context: no name search exists, 'currentMember=true' narrows to sitting members while omitting it includes former members, and sponsored/cosponsored return a 'legislative portfolio' rather than a profile. It stops short of noting pagination limits or result ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the resource and the costliest gotcha ('No name search'), then filtering rules, then operation routing. No filler and no restatement of schema-declared defaults or patterns.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter multi-operation tool with an output schema supplied, the description covers everything an agent needs before invoking: capability boundary, filter combinations, prerequisite for the id-based operations, and what each operation returns at a high level. Return-value detail is correctly left to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline would be 3, but the description goes beyond the schema by stating which parameters combine (stateCode alone, congress alone, or stateCode+congress+district together) and by framing bioguideId as the key that unlocks the non-list operations. That combination logic is not expressed anywhere in the input schema, which makes this genuinely additive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the resource (congressional members and their legislative activity) and enumerates the four operations it exposes (list/get/sponsored/cosponsored), so an agent knows the full surface. The explicit negative 'No name search' prevents an agent from burning a call on a nonexistent capability and cleanly separates this member tool from the bill/committee/roll-vote siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete routing rules: use 'list' with stateCode (optionally district), congress, or both; use 'get'/'sponsored'/'cosponsored' only once a bioguideId is in hand, per the schema's required-for note. Even names example filter combinations (118th + CA, CA district 12 in the 118th), leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
congressgov_roll_votesCongress.gov Roll VotesARead-onlyIdempotentInspect
Retrieve U.S. congressional roll call votes and individual member voting positions for either chamber. Set 'chamber' to 'house' (default, from the Congress.gov API) or 'senate' (from the Senate's official LIS feed). Use 'list' to find votes by congress and session (newest first by default), 'get' for vote details (question, result, tallies, party breakdown, associated bill/nomination/amendment), or 'members' for how each member voted.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page (1-250). | |
| order | No | Sort order for 'list'. 'recent' (default) returns newest first; 'oldest' returns ascending. House sorts by vote update date (with 'recent', offset=0 always returns the strictly newest page); Senate sorts by roll call number. Ignored by 'get' and 'members'. | recent |
| offset | No | Pagination offset. | |
| chamber | No | Chamber whose votes to query. 'house' (default) draws from the Congress.gov API; 'senate' draws from the Senate's official LIS roll-call feed. Roll call numbers reset each session and are specific to one chamber. | house |
| session | Yes | Session number (1 or 2). A congress's first year is session 1 and its second year session 2; a second session can run into January 1–3 of the following year (the 116th Congress's second session voted on 2021-01-01). | |
| congress | Yes | Congress number. | |
| operation | Yes | Which data to retrieve. | |
| voteNumber | No | Roll call vote number. Required for 'get' and 'members'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | Result rows. Per-tool item shape is rendered in the markdown body. |
| vote | No | Dynamic upstream JSON record. |
| error | No | Present when the call failed. Absent on success. |
| notice | No | Guidance when results are empty, a page is past the end, or a caveat applies. |
| pagination | No | Pagination metadata: total count and next offset. |
| totalCount | No | Total results across all pages. |
| effectiveQuery | No | The browse scope and applied filters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnly/idempotent/openWorld, so safety is covered. The description adds genuine behavioral context beyond that: the two chambers come from different data feeds (Congress.gov API vs Senate LIS), and default newest-first ordering differs by chamber. It doesn't detail return shape, but an output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core purpose, then chamber source, then operation routing. No filler; each clause carries actionable detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a complete schema, existing output schema, and safety annotations, the description covers purpose, chamber data provenance, and operation routing. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3 applies, but the description adds meaning: chamber selects the upstream data source and operations map to distinct retrieval modes ('list'/'get'/'members'). It reinforces the chamber and operation semantics beyond the schema's enum text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Retrieve ... roll call votes and individual member voting positions') and covers both chambers. No sibling tool in the list covers roll-call votes, and the description makes that scope obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly explains which operation to use for what: 'list' to find votes by congress/session, 'get' for details, 'members' for per-member positions, plus chamber selection guidance. It doesn't name alternative tools or exclusions, but there is no overlapping sibling, so the guidance is clear in context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
congressgov_search_billsCongress.gov Bill SearchARead-onlyIdempotentInspect
Keyword-search U.S. bills by title and CRS summary text — the discovery path the Congress.gov API itself lacks (it has no keyword search). Backed by a local full-text index over a bounded congress window; title and summary are indexed, but policy area and full bill text are not. Returns BM25-ranked matches, each with the bill's derived id (congress/billType/billNumber) for follow-up congressgov_bill_lookup calls and a truncated summary preview. Narrow with the optional congress, billType, and originChamber filters. Searches the local mirror, not the live API — if the mirror has not finished its initial build it returns an empty result with a notice, not an error.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page (1–100, default 20). | |
| query | Yes | Free-text keywords matched against bill titles and summaries (e.g. "semiconductor export controls"). Tokens are AND-combined. | |
| offset | No | Pagination offset. | |
| billType | No | Restrict to a bill type (hr, s, hjres, sjres, hconres, sconres, hres, sres). | |
| congress | No | Restrict to a single congress (e.g. 119). Omit to search the whole mirrored window. | |
| originChamber | No | Restrict to the originating chamber. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | Result rows. Per-tool item shape is rendered in the markdown body. |
| error | No | Present when the call failed. Absent on success. |
| notice | No | Guidance when results are empty, a page is past the end, or a caveat applies. |
| pagination | No | Pagination metadata: total count and next offset. |
| totalCount | No | Total results across all pages. |
| effectiveQuery | No | The browse scope and applied filters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent/openWorld annotations: discloses that it queries a local mirror rather than the live API, that the mirror is a bounded congress window, what is and isn't indexed (title/summary yes; policy area and full bill text no), BM25 ranking, and a truncated summary preview. The empty-result-with-notice behavior is a genuinely useful non-obvious trait.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core capability, then index scope, then return shape, then filters, then the mirror caveat — a logical ordering with no filler sentences despite its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter search with an output schema, the description supplies everything an agent needs: what is searched, how results are ranked and shaped, how to narrow, and the failure mode on an unbuilt mirror.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents AND-combined tokens, enum values, and pagination bounds. The description only restates that congress, billType, and originChamber are narrowing filters, adding little syntax or semantics beyond structured fields, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Keyword-search U.S. bills by title and CRS summary text') and immediately positions it against both the upstream API ('it has no keyword search') and the sibling lookup tool. An agent can distinguish it from congressgov_bill_lookup without inspecting either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames this as the discovery path and names congressgov_bill_lookup as the follow-up step using the returned derived id. It also tells the agent when to narrow with congress/billType/originChamber and what happens on a cold mirror ('empty result with a notice, not an error').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
congressgov_senate_nominationsCongress.gov Senate NominationsARead-onlyIdempotentInspect
Browse presidential nominations to federal positions and track the Senate confirmation process. Use 'list' to browse, 'get' for nomination detail, 'actions'/'committees'/'hearings' for confirmation pipeline data, or 'nominees' to retrieve individual appointees in a multi-nominee batch. Nominations use 'PN' (Presidential Nomination) numbering. Most nominations carry confirmation activity on the parent (e.g., PN1000); multi-part parents (e.g., PN851) carry no activity of their own — their actions, committees, hearings, and nominees live on partitioned children (PN851-1, PN851-2, …). 'get' on a parent that has no nominees array signals the partitioned form is needed for everything below it. An action that cites its own Senate record vote — an actions row, or latestAction on list and get — carries rollVote, the congressgov_roll_votes arguments for that vote.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page (1-250). | |
| offset | No | Pagination offset. | |
| ordinal | No | Batch ordinal within a multi-nominee nomination. Each ordinal addresses a group of nominees; the 'nominees' operation returns every individual in that batch. Use 'get' first to see available ordinals on the nomination's `nominees` array (multi-part parents have no nominees array — use a partitioned form like '851-1' instead). | |
| congress | Yes | Congress number. | |
| operation | Yes | Which data to retrieve. | |
| nominationNumber | No | Nomination number. Use the bare form (e.g. '1000') for nominations whose activity sits on the parent; use the partitioned form (e.g. '851-1') for sub-resources of a multi-part nomination. Required for detail operations. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | Result rows for `list` and the sub-resource operations. |
| error | No | Present when the call failed. Absent on success. |
| notice | No | Guidance when results are empty, a page is past the end, or a caveat applies. |
| nomination | No | Nomination record for `get` (description, dates, nominees array, sub-resource counts); absent for `list` and sub-resources. |
| pagination | No | Pagination metadata: total count and next offset. |
| totalCount | No | Total results across all pages. |
| effectiveQuery | No | The browse scope and applied filters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld/idempotent annotations, the description discloses important domain behavior: PN numbering, parent-versus-partitioned nomination structure, the fact that multi-part parents carry no activity of their own, and the signal that a missing `nominees` array indicates partitioned children are needed. It also notes that action rows and latestAction may carry `rollVote` arguments for congressgov_roll_votes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded: purpose first, then operation mapping, then the PN and partition rules. Every sentence carries useful information, though the parent/partition and rollVote explanations are necessarily complex and could be easier to scan if formatted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, multi-operation tool with six parameters and an output schema, the description covers the key call-routing rules and the main structural gotcha around partitioned nominations. Return-value details are appropriately left to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already defines the parameters. The description still adds meaningful semantics for `operation` by mapping each enum value to a purpose, and for `nominationNumber` by explaining bare versus partitioned forms.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: browsing presidential nominations and tracking the Senate confirmation process. It immediately distinguishes the relevant data domain and enumerates the available operations, so an agent can tell that this tool handles nominations rather than bills, committees, members, or votes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit operation-selection guidance: 'list' to browse, 'get' for detail, 'actions'/'committees'/'hearings' for pipeline data, and 'nominees' for multi-nominee batches. It also explains when partitioned forms like '851-1' are needed, though it does not explicitly contrast this tool with sibling Congress.gov tools beyond pointing to congressgov_roll_votes for rollVote arguments.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
11 tool updates
- Changed
congressgov_bill_lookup2 fields changed- changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: A process-local attempt budget or the shared upstream credential/IP quota was reached; upstream hourly limits vary and DEMO_KEY also has a daily quota. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `upstream_timeout`: The Congress.gov request deadline expired or the upstream returned an HTTP timeout response. `document_unavailable`: The 'content' selection resolves to no retrievable document — the text version or article index is past the end of the list, the record publishes no formats at all, or Congress.gov does not hold the file its own metadata names. `format_unavailable`: The document exists but publishes nothing in the requested 'format' — some text versions and committee reports ship PDF only, and no Congressional Record article publishes XML. `document_fetch_failed`: www.congress.gov did not return a readable document — a non-2xx status, a network failure, an empty body, or a content type that is not text or XML. `document_too_large`: The document is larger than the byte ceiling this server retrieves, so no character window can be served from it. `offset_past_end`: characterOffset is at or beyond the last character of every text the call would window — the document on 'content', or every returned row's summary text on 'summaries' — so the window would be empty. `incompatible_identity`: A list operation carries an entity identifier that only a detail operation uses. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: A process-local attempt budget or the shared upstream credential/IP quota was reached; upstream hourly limits vary and DEMO_KEY also has a daily quota. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `api_key_rejected`: The api.data.gov gateway rejected the server's configured CONGRESS_API_KEY (missing, invalid, disabled, unauthorized, or unverified); the gateway code is in data.upstreamCode. No change to the call's arguments can fix it. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status) or could not be reached, or the Senate LIS feed failed (5xx, a timeout, or a senate.gov HTTP 403 refusal, which carries retryable: false). `upstream_timeout`: A Congress.gov request or a congress.gov document fetch timed out or returned an HTTP timeout response, or the call's upstream requests could not finish inside its 50-second budget. `document_unavailable`: The 'content' selection resolves to no retrievable document — the text version or article index is past the end of the list, the record publishes no formats at all, or Congress.gov does not hold the file its own metadata names. `format_unavailable`: The document exists but publishes nothing in the requested 'format' — some text versions and committee reports ship PDF only, and no Congressional Record article publishes XML. `document_fetch_failed`: www.congress.gov did not return a readable document — a non-2xx status, a network failure, an empty body, or a content type that is not text or XML. `document_too_large`: The document is larger than the byte ceiling this server retrieves, so no character window can be served from it. `offset_past_end`: characterOffset is at or beyond the last character of every text the call would window — the document on 'content', or every returned row's summary text on 'summaries' — so the window would be empty. `incompatible_identity`: A list operation carries an entity identifier that only a detail operation uses. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "not_found", - "rate_limited", - "invalid_request", - "upstream_error", - "upstream_timeout", - "document_unavailable", - "format_unavailable", - "document_fetch_failed", - "document_too_large", - "offset_past_end", - "incompatible_identity" -]New value: +[ + "not_found", + "rate_limited", + "invalid_request", + "api_key_rejected", + "upstream_error", + "upstream_timeout", + "document_unavailable", + "format_unavailable", + "document_fetch_failed", + "document_too_large", + "offset_past_end", + "incompatible_identity" +]
- Changed
congressgov_bill_summaries2 fields changed- changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: A process-local attempt budget or the shared upstream credential/IP quota was reached; upstream hourly limits vary and DEMO_KEY also has a daily quota. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `upstream_timeout`: The Congress.gov request deadline expired or the upstream returned an HTTP timeout response. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: A process-local attempt budget or the shared upstream credential/IP quota was reached; upstream hourly limits vary and DEMO_KEY also has a daily quota. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `api_key_rejected`: The api.data.gov gateway rejected the server's configured CONGRESS_API_KEY (missing, invalid, disabled, unauthorized, or unverified); the gateway code is in data.upstreamCode. No change to the call's arguments can fix it. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status) or could not be reached, or the Senate LIS feed failed (5xx, a timeout, or a senate.gov HTTP 403 refusal, which carries retryable: false). `upstream_timeout`: A Congress.gov request or a congress.gov document fetch timed out or returned an HTTP timeout response, or the call's upstream requests could not finish inside its 50-second budget. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "not_found", - "rate_limited", - "invalid_request", - "upstream_error", - "upstream_timeout" -]New value: +[ + "not_found", + "rate_limited", + "invalid_request", + "api_key_rejected", + "upstream_error", + "upstream_timeout" +]
- Changed
congressgov_committee_lookup2 fields changed- changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: A process-local attempt budget or the shared upstream credential/IP quota was reached; upstream hourly limits vary and DEMO_KEY also has a daily quota. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `upstream_timeout`: The Congress.gov request deadline expired or the upstream returned an HTTP timeout response. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: A process-local attempt budget or the shared upstream credential/IP quota was reached; upstream hourly limits vary and DEMO_KEY also has a daily quota. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `api_key_rejected`: The api.data.gov gateway rejected the server's configured CONGRESS_API_KEY (missing, invalid, disabled, unauthorized, or unverified); the gateway code is in data.upstreamCode. No change to the call's arguments can fix it. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status) or could not be reached, or the Senate LIS feed failed (5xx, a timeout, or a senate.gov HTTP 403 refusal, which carries retryable: false). `upstream_timeout`: A Congress.gov request or a congress.gov document fetch timed out or returned an HTTP timeout response, or the call's upstream requests could not finish inside its 50-second budget. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "not_found", - "rate_limited", - "invalid_request", - "upstream_error", - "upstream_timeout" -]New value: +[ + "not_found", + "rate_limited", + "invalid_request", + "api_key_rejected", + "upstream_error", + "upstream_timeout" +]
- Changed
congressgov_committee_reports2 fields changed- changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: A process-local attempt budget or the shared upstream credential/IP quota was reached; upstream hourly limits vary and DEMO_KEY also has a daily quota. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `upstream_timeout`: The Congress.gov request deadline expired or the upstream returned an HTTP timeout response. `document_unavailable`: The 'content' selection resolves to no retrievable document — the text version or article index is past the end of the list, the record publishes no formats at all, or Congress.gov does not hold the file its own metadata names. `format_unavailable`: The document exists but publishes nothing in the requested 'format' — some text versions and committee reports ship PDF only, and no Congressional Record article publishes XML. `document_fetch_failed`: www.congress.gov did not return a readable document — a non-2xx status, a network failure, an empty body, or a content type that is not text or XML. `document_too_large`: The document is larger than the byte ceiling this server retrieves, so no character window can be served from it. `offset_past_end`: characterOffset is at or beyond the last character of every text the call would window — the document on 'content', or every returned row's summary text on 'summaries' — so the window would be empty. `incompatible_identity`: A list operation carries an entity identifier that only a detail operation uses. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: A process-local attempt budget or the shared upstream credential/IP quota was reached; upstream hourly limits vary and DEMO_KEY also has a daily quota. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `api_key_rejected`: The api.data.gov gateway rejected the server's configured CONGRESS_API_KEY (missing, invalid, disabled, unauthorized, or unverified); the gateway code is in data.upstreamCode. No change to the call's arguments can fix it. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status) or could not be reached, or the Senate LIS feed failed (5xx, a timeout, or a senate.gov HTTP 403 refusal, which carries retryable: false). `upstream_timeout`: A Congress.gov request or a congress.gov document fetch timed out or returned an HTTP timeout response, or the call's upstream requests could not finish inside its 50-second budget. `document_unavailable`: The 'content' selection resolves to no retrievable document — the text version or article index is past the end of the list, the record publishes no formats at all, or Congress.gov does not hold the file its own metadata names. `format_unavailable`: The document exists but publishes nothing in the requested 'format' — some text versions and committee reports ship PDF only, and no Congressional Record article publishes XML. `document_fetch_failed`: www.congress.gov did not return a readable document — a non-2xx status, a network failure, an empty body, or a content type that is not text or XML. `document_too_large`: The document is larger than the byte ceiling this server retrieves, so no character window can be served from it. `offset_past_end`: characterOffset is at or beyond the last character of every text the call would window — the document on 'content', or every returned row's summary text on 'summaries' — so the window would be empty. `incompatible_identity`: A list operation carries an entity identifier that only a detail operation uses. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "not_found", - "rate_limited", - "invalid_request", - "upstream_error", - "upstream_timeout", - "document_unavailable", - "format_unavailable", - "document_fetch_failed", - "document_too_large", - "offset_past_end", - "incompatible_identity" -]New value: +[ + "not_found", + "rate_limited", + "invalid_request", + "api_key_rejected", + "upstream_error", + "upstream_timeout", + "document_unavailable", + "format_unavailable", + "document_fetch_failed", + "document_too_large", + "offset_past_end", + "incompatible_identity" +]
- Changed
congressgov_crs_reports2 fields changed- changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: A process-local attempt budget or the shared upstream credential/IP quota was reached; upstream hourly limits vary and DEMO_KEY also has a daily quota. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `upstream_timeout`: The Congress.gov request deadline expired or the upstream returned an HTTP timeout response. `incompatible_identity`: A list operation carries an entity identifier that only a detail operation uses. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: A process-local attempt budget or the shared upstream credential/IP quota was reached; upstream hourly limits vary and DEMO_KEY also has a daily quota. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `api_key_rejected`: The api.data.gov gateway rejected the server's configured CONGRESS_API_KEY (missing, invalid, disabled, unauthorized, or unverified); the gateway code is in data.upstreamCode. No change to the call's arguments can fix it. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status) or could not be reached, or the Senate LIS feed failed (5xx, a timeout, or a senate.gov HTTP 403 refusal, which carries retryable: false). `upstream_timeout`: A Congress.gov request or a congress.gov document fetch timed out or returned an HTTP timeout response, or the call's upstream requests could not finish inside its 50-second budget. `incompatible_identity`: A list operation carries an entity identifier that only a detail operation uses. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "not_found", - "rate_limited", - "invalid_request", - "upstream_error", - "upstream_timeout", - "incompatible_identity" -]New value: +[ + "not_found", + "rate_limited", + "invalid_request", + "api_key_rejected", + "upstream_error", + "upstream_timeout", + "incompatible_identity" +]
- Changed
congressgov_daily_record2 fields changed- changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: A process-local attempt budget or the shared upstream credential/IP quota was reached; upstream hourly limits vary and DEMO_KEY also has a daily quota. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `upstream_timeout`: The Congress.gov request deadline expired or the upstream returned an HTTP timeout response. `document_unavailable`: The 'content' selection resolves to no retrievable document — the text version or article index is past the end of the list, the record publishes no formats at all, or Congress.gov does not hold the file its own metadata names. `format_unavailable`: The document exists but publishes nothing in the requested 'format' — some text versions and committee reports ship PDF only, and no Congressional Record article publishes XML. `document_fetch_failed`: www.congress.gov did not return a readable document — a non-2xx status, a network failure, an empty body, or a content type that is not text or XML. `document_too_large`: The document is larger than the byte ceiling this server retrieves, so no character window can be served from it. `offset_past_end`: characterOffset is at or beyond the last character of every text the call would window — the document on 'content', or every returned row's summary text on 'summaries' — so the window would be empty. `incompatible_identity`: A list operation carries an entity identifier that only a detail operation uses. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: A process-local attempt budget or the shared upstream credential/IP quota was reached; upstream hourly limits vary and DEMO_KEY also has a daily quota. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `api_key_rejected`: The api.data.gov gateway rejected the server's configured CONGRESS_API_KEY (missing, invalid, disabled, unauthorized, or unverified); the gateway code is in data.upstreamCode. No change to the call's arguments can fix it. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status) or could not be reached, or the Senate LIS feed failed (5xx, a timeout, or a senate.gov HTTP 403 refusal, which carries retryable: false). `upstream_timeout`: A Congress.gov request or a congress.gov document fetch timed out or returned an HTTP timeout response, or the call's upstream requests could not finish inside its 50-second budget. `document_unavailable`: The 'content' selection resolves to no retrievable document — the text version or article index is past the end of the list, the record publishes no formats at all, or Congress.gov does not hold the file its own metadata names. `format_unavailable`: The document exists but publishes nothing in the requested 'format' — some text versions and committee reports ship PDF only, and no Congressional Record article publishes XML. `document_fetch_failed`: www.congress.gov did not return a readable document — a non-2xx status, a network failure, an empty body, or a content type that is not text or XML. `document_too_large`: The document is larger than the byte ceiling this server retrieves, so no character window can be served from it. `offset_past_end`: characterOffset is at or beyond the last character of every text the call would window — the document on 'content', or every returned row's summary text on 'summaries' — so the window would be empty. `incompatible_identity`: A list operation carries an entity identifier that only a detail operation uses. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "not_found", - "rate_limited", - "invalid_request", - "upstream_error", - "upstream_timeout", - "document_unavailable", - "format_unavailable", - "document_fetch_failed", - "document_too_large", - "offset_past_end", - "incompatible_identity" -]New value: +[ + "not_found", + "rate_limited", + "invalid_request", + "api_key_rejected", + "upstream_error", + "upstream_timeout", + "document_unavailable", + "format_unavailable", + "document_fetch_failed", + "document_too_large", + "offset_past_end", + "incompatible_identity" +]
- Changed
congressgov_enacted_laws2 fields changed- changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: A process-local attempt budget or the shared upstream credential/IP quota was reached; upstream hourly limits vary and DEMO_KEY also has a daily quota. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `upstream_timeout`: The Congress.gov request deadline expired or the upstream returned an HTTP timeout response. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: A process-local attempt budget or the shared upstream credential/IP quota was reached; upstream hourly limits vary and DEMO_KEY also has a daily quota. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `api_key_rejected`: The api.data.gov gateway rejected the server's configured CONGRESS_API_KEY (missing, invalid, disabled, unauthorized, or unverified); the gateway code is in data.upstreamCode. No change to the call's arguments can fix it. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status) or could not be reached, or the Senate LIS feed failed (5xx, a timeout, or a senate.gov HTTP 403 refusal, which carries retryable: false). `upstream_timeout`: A Congress.gov request or a congress.gov document fetch timed out or returned an HTTP timeout response, or the call's upstream requests could not finish inside its 50-second budget. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "not_found", - "rate_limited", - "invalid_request", - "upstream_error", - "upstream_timeout" -]New value: +[ + "not_found", + "rate_limited", + "invalid_request", + "api_key_rejected", + "upstream_error", + "upstream_timeout" +]
- Changed
congressgov_member_lookup2 fields changed- changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: A process-local attempt budget or the shared upstream credential/IP quota was reached; upstream hourly limits vary and DEMO_KEY also has a daily quota. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `upstream_timeout`: The Congress.gov request deadline expired or the upstream returned an HTTP timeout response. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: A process-local attempt budget or the shared upstream credential/IP quota was reached; upstream hourly limits vary and DEMO_KEY also has a daily quota. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `api_key_rejected`: The api.data.gov gateway rejected the server's configured CONGRESS_API_KEY (missing, invalid, disabled, unauthorized, or unverified); the gateway code is in data.upstreamCode. No change to the call's arguments can fix it. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status) or could not be reached, or the Senate LIS feed failed (5xx, a timeout, or a senate.gov HTTP 403 refusal, which carries retryable: false). `upstream_timeout`: A Congress.gov request or a congress.gov document fetch timed out or returned an HTTP timeout response, or the call's upstream requests could not finish inside its 50-second budget. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "not_found", - "rate_limited", - "invalid_request", - "upstream_error", - "upstream_timeout" -]New value: +[ + "not_found", + "rate_limited", + "invalid_request", + "api_key_rejected", + "upstream_error", + "upstream_timeout" +]
- Changed
congressgov_roll_votes3 fields changed- changed
Input schema / properties / session / descriptionPrevious value: -"Session number (1 or 2). Odd years are session 1, even years session 2."New value: +"Session number (1 or 2). A congress's first year is session 1 and its second year session 2; a second session can run into January 1–3 of the following year (the 116th Congress's second session voted on 2021-01-01)." - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: A process-local attempt budget or the shared upstream credential/IP quota was reached; upstream hourly limits vary and DEMO_KEY also has a daily quota. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `upstream_timeout`: The Congress.gov request deadline expired or the upstream returned an HTTP timeout response. `incompatible_identity`: A list operation carries an entity identifier that only a detail operation uses. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: A process-local attempt budget or the shared upstream credential/IP quota was reached; upstream hourly limits vary and DEMO_KEY also has a daily quota. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `api_key_rejected`: The api.data.gov gateway rejected the server's configured CONGRESS_API_KEY (missing, invalid, disabled, unauthorized, or unverified); the gateway code is in data.upstreamCode. No change to the call's arguments can fix it. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status) or could not be reached, or the Senate LIS feed failed (5xx, a timeout, or a senate.gov HTTP 403 refusal, which carries retryable: false). `upstream_timeout`: A Congress.gov request or a congress.gov document fetch timed out or returned an HTTP timeout response, or the call's upstream requests could not finish inside its 50-second budget. `incompatible_identity`: A list operation carries an entity identifier that only a detail operation uses. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "not_found", - "rate_limited", - "invalid_request", - "upstream_error", - "upstream_timeout", - "incompatible_identity" -]New value: +[ + "not_found", + "rate_limited", + "invalid_request", + "api_key_rejected", + "upstream_error", + "upstream_timeout", + "incompatible_identity" +]
- Added
congressgov_search_bills - Changed
congressgov_senate_nominations8 fields changed- changed
Output schema / properties / data / descriptionPrevious value: -"Result rows. Per-tool item shape is rendered in the markdown body."New value: +"Result rows for `list` and the sub-resource operations." - changed
Output schema / properties / data / items / descriptionPrevious value: -"Upstream JSON record. Per-tool item shape is rendered in the markdown body."New value: +"Upstream JSON record: a nomination (`list`), an action (`actions`), a committee, a hearing, or a nominee. A `list` row's `latestAction` and an `actions` row carry `rollVote` when they cite their own Senate record vote." - added
Output schema / properties / data / items / properties / latestActionAdded value: +{ + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "rollVote": { + "additionalProperties": false, + "description": "Arguments for congressgov_roll_votes that retrieve the Senate roll call vote this action cites as its own. Absent when the action cites no vote of its own (a back-reference such as \"(Record Vote No. 318)\" names another action's vote), and for votes before the feed starts — the Senate publishes roll call votes from the 101st Congress (1989) onward.", + "properties": { + "chamber": { + "const": "senate", + "description": "Always 'senate'. Pass it: congressgov_roll_votes defaults to 'house', whose vote with the same number is a different vote.", + "type": "string" + }, + "congress": { + "description": "Congress the vote was cast in.", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "session": { + "description": "Session the vote was cast in, from the action date: the congress's first year is session 1; its second year, and January 1–3 of the year after, session 2.", + "maximum": 2, + "minimum": 1, + "type": "integer" + }, + "voteNumber": { + "description": "Senate roll call number the action cites.", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } + }, + "required": [ + "chamber", + "congress", + "session", + "voteNumber" + ], + "type": "object" + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Most recent action (`actionDate`, `text`), with `rollVote` when its text cites its own Senate record vote. Null or absent on a multi-part parent (e.g. PN730)." +} - added
Output schema / properties / data / items / properties / rollVoteAdded value: +{ + "additionalProperties": false, + "description": "Arguments for congressgov_roll_votes that retrieve the Senate roll call vote this action cites as its own. Absent when the action cites no vote of its own (a back-reference such as \"(Record Vote No. 318)\" names another action's vote), and for votes before the feed starts — the Senate publishes roll call votes from the 101st Congress (1989) onward.", + "properties": { + "chamber": { + "const": "senate", + "description": "Always 'senate'. Pass it: congressgov_roll_votes defaults to 'house', whose vote with the same number is a different vote.", + "type": "string" + }, + "congress": { + "description": "Congress the vote was cast in.", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "session": { + "description": "Session the vote was cast in, from the action date: the congress's first year is session 1; its second year, and January 1–3 of the year after, session 2.", + "maximum": 2, + "minimum": 1, + "type": "integer" + }, + "voteNumber": { + "description": "Senate roll call number the action cites.", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } + }, + "required": [ + "chamber", + "congress", + "session", + "voteNumber" + ], + "type": "object" +} - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: A process-local attempt budget or the shared upstream credential/IP quota was reached; upstream hourly limits vary and DEMO_KEY also has a daily quota. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `upstream_timeout`: The Congress.gov request deadline expired or the upstream returned an HTTP timeout response. `incompatible_identity`: A list operation carries an entity identifier that only a detail operation uses. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: A process-local attempt budget or the shared upstream credential/IP quota was reached; upstream hourly limits vary and DEMO_KEY also has a daily quota. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `api_key_rejected`: The api.data.gov gateway rejected the server's configured CONGRESS_API_KEY (missing, invalid, disabled, unauthorized, or unverified); the gateway code is in data.upstreamCode. No change to the call's arguments can fix it. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status) or could not be reached, or the Senate LIS feed failed (5xx, a timeout, or a senate.gov HTTP 403 refusal, which carries retryable: false). `upstream_timeout`: A Congress.gov request or a congress.gov document fetch timed out or returned an HTTP timeout response, or the call's upstream requests could not finish inside its 50-second budget. `incompatible_identity`: A list operation carries an entity identifier that only a detail operation uses. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "not_found", - "rate_limited", - "invalid_request", - "upstream_error", - "upstream_timeout", - "incompatible_identity" -]New value: +[ + "not_found", + "rate_limited", + "invalid_request", + "api_key_rejected", + "upstream_error", + "upstream_timeout", + "incompatible_identity" +] - changed
Output schema / properties / nomination / descriptionPrevious value: -"Dynamic upstream JSON record."New value: +"Nomination record for `get` (description, dates, nominees array, sub-resource counts); absent for `list` and sub-resources." - added
Output schema / properties / nomination / properties / latestActionAdded value: +{ + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "rollVote": { + "additionalProperties": false, + "description": "Arguments for congressgov_roll_votes that retrieve the Senate roll call vote this action cites as its own. Absent when the action cites no vote of its own (a back-reference such as \"(Record Vote No. 318)\" names another action's vote), and for votes before the feed starts — the Senate publishes roll call votes from the 101st Congress (1989) onward.", + "properties": { + "chamber": { + "const": "senate", + "description": "Always 'senate'. Pass it: congressgov_roll_votes defaults to 'house', whose vote with the same number is a different vote.", + "type": "string" + }, + "congress": { + "description": "Congress the vote was cast in.", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "session": { + "description": "Session the vote was cast in, from the action date: the congress's first year is session 1; its second year, and January 1–3 of the year after, session 2.", + "maximum": 2, + "minimum": 1, + "type": "integer" + }, + "voteNumber": { + "description": "Senate roll call number the action cites.", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } + }, + "required": [ + "chamber", + "congress", + "session", + "voteNumber" + ], + "type": "object" + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Most recent action (`actionDate`, `text`), with `rollVote` when its text cites its own Senate record vote. Null or absent on a multi-part parent (e.g. PN730)." +}
10 tool updates
- Changed
congressgov_bill_lookup2 fields changed- changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: The Congress.gov API rate limit (5,000 requests/hour per key) was exceeded. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `document_unavailable`: The 'content' selection resolves to no retrievable document — the text version or article index is past the end of the list, the record publishes no formats at all, or Congress.gov does not hold the file its own metadata names. `format_unavailable`: The document exists but publishes nothing in the requested 'format' — some text versions and committee reports ship PDF only, and no Congressional Record article publishes XML. `document_fetch_failed`: www.congress.gov did not return a readable document — a non-2xx status, a network failure, an empty body, or a content type that is not text or XML. `document_too_large`: The document is larger than the byte ceiling this server retrieves, so no character window can be served from it. `offset_past_end`: characterOffset is at or beyond the last character of every text the call would window — the document on 'content', or every returned row's summary text on 'summaries' — so the window would be empty. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: A process-local attempt budget or the shared upstream credential/IP quota was reached; upstream hourly limits vary and DEMO_KEY also has a daily quota. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `upstream_timeout`: The Congress.gov request deadline expired or the upstream returned an HTTP timeout response. `document_unavailable`: The 'content' selection resolves to no retrievable document — the text version or article index is past the end of the list, the record publishes no formats at all, or Congress.gov does not hold the file its own metadata names. `format_unavailable`: The document exists but publishes nothing in the requested 'format' — some text versions and committee reports ship PDF only, and no Congressional Record article publishes XML. `document_fetch_failed`: www.congress.gov did not return a readable document — a non-2xx status, a network failure, an empty body, or a content type that is not text or XML. `document_too_large`: The document is larger than the byte ceiling this server retrieves, so no character window can be served from it. `offset_past_end`: characterOffset is at or beyond the last character of every text the call would window — the document on 'content', or every returned row's summary text on 'summaries' — so the window would be empty. `incompatible_identity`: A list operation carries an entity identifier that only a detail operation uses. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "not_found", - "rate_limited", - "invalid_request", - "upstream_error", - "document_unavailable", - "format_unavailable", - "document_fetch_failed", - "document_too_large", - "offset_past_end" -]New value: +[ + "not_found", + "rate_limited", + "invalid_request", + "upstream_error", + "upstream_timeout", + "document_unavailable", + "format_unavailable", + "document_fetch_failed", + "document_too_large", + "offset_past_end", + "incompatible_identity" +]
- Changed
congressgov_bill_summaries2 fields changed- changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: The Congress.gov API rate limit (5,000 requests/hour per key) was exceeded. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: A process-local attempt budget or the shared upstream credential/IP quota was reached; upstream hourly limits vary and DEMO_KEY also has a daily quota. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `upstream_timeout`: The Congress.gov request deadline expired or the upstream returned an HTTP timeout response. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "not_found", - "rate_limited", - "invalid_request", - "upstream_error" -]New value: +[ + "not_found", + "rate_limited", + "invalid_request", + "upstream_error", + "upstream_timeout" +]
- Changed
congressgov_committee_lookup2 fields changed- changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: The Congress.gov API rate limit (5,000 requests/hour per key) was exceeded. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: A process-local attempt budget or the shared upstream credential/IP quota was reached; upstream hourly limits vary and DEMO_KEY also has a daily quota. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `upstream_timeout`: The Congress.gov request deadline expired or the upstream returned an HTTP timeout response. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "not_found", - "rate_limited", - "invalid_request", - "upstream_error" -]New value: +[ + "not_found", + "rate_limited", + "invalid_request", + "upstream_error", + "upstream_timeout" +]
- Changed
congressgov_committee_reports2 fields changed- changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: The Congress.gov API rate limit (5,000 requests/hour per key) was exceeded. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `document_unavailable`: The 'content' selection resolves to no retrievable document — the text version or article index is past the end of the list, the record publishes no formats at all, or Congress.gov does not hold the file its own metadata names. `format_unavailable`: The document exists but publishes nothing in the requested 'format' — some text versions and committee reports ship PDF only, and no Congressional Record article publishes XML. `document_fetch_failed`: www.congress.gov did not return a readable document — a non-2xx status, a network failure, an empty body, or a content type that is not text or XML. `document_too_large`: The document is larger than the byte ceiling this server retrieves, so no character window can be served from it. `offset_past_end`: characterOffset is at or beyond the last character of every text the call would window — the document on 'content', or every returned row's summary text on 'summaries' — so the window would be empty. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: A process-local attempt budget or the shared upstream credential/IP quota was reached; upstream hourly limits vary and DEMO_KEY also has a daily quota. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `upstream_timeout`: The Congress.gov request deadline expired or the upstream returned an HTTP timeout response. `document_unavailable`: The 'content' selection resolves to no retrievable document — the text version or article index is past the end of the list, the record publishes no formats at all, or Congress.gov does not hold the file its own metadata names. `format_unavailable`: The document exists but publishes nothing in the requested 'format' — some text versions and committee reports ship PDF only, and no Congressional Record article publishes XML. `document_fetch_failed`: www.congress.gov did not return a readable document — a non-2xx status, a network failure, an empty body, or a content type that is not text or XML. `document_too_large`: The document is larger than the byte ceiling this server retrieves, so no character window can be served from it. `offset_past_end`: characterOffset is at or beyond the last character of every text the call would window — the document on 'content', or every returned row's summary text on 'summaries' — so the window would be empty. `incompatible_identity`: A list operation carries an entity identifier that only a detail operation uses. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "not_found", - "rate_limited", - "invalid_request", - "upstream_error", - "document_unavailable", - "format_unavailable", - "document_fetch_failed", - "document_too_large", - "offset_past_end" -]New value: +[ + "not_found", + "rate_limited", + "invalid_request", + "upstream_error", + "upstream_timeout", + "document_unavailable", + "format_unavailable", + "document_fetch_failed", + "document_too_large", + "offset_past_end", + "incompatible_identity" +]
- Changed
congressgov_crs_reports2 fields changed- changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: The Congress.gov API rate limit (5,000 requests/hour per key) was exceeded. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: A process-local attempt budget or the shared upstream credential/IP quota was reached; upstream hourly limits vary and DEMO_KEY also has a daily quota. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `upstream_timeout`: The Congress.gov request deadline expired or the upstream returned an HTTP timeout response. `incompatible_identity`: A list operation carries an entity identifier that only a detail operation uses. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "not_found", - "rate_limited", - "invalid_request", - "upstream_error" -]New value: +[ + "not_found", + "rate_limited", + "invalid_request", + "upstream_error", + "upstream_timeout", + "incompatible_identity" +]
- Changed
congressgov_daily_record2 fields changed- changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: The Congress.gov API rate limit (5,000 requests/hour per key) was exceeded. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `document_unavailable`: The 'content' selection resolves to no retrievable document — the text version or article index is past the end of the list, the record publishes no formats at all, or Congress.gov does not hold the file its own metadata names. `format_unavailable`: The document exists but publishes nothing in the requested 'format' — some text versions and committee reports ship PDF only, and no Congressional Record article publishes XML. `document_fetch_failed`: www.congress.gov did not return a readable document — a non-2xx status, a network failure, an empty body, or a content type that is not text or XML. `document_too_large`: The document is larger than the byte ceiling this server retrieves, so no character window can be served from it. `offset_past_end`: characterOffset is at or beyond the last character of every text the call would window — the document on 'content', or every returned row's summary text on 'summaries' — so the window would be empty. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: A process-local attempt budget or the shared upstream credential/IP quota was reached; upstream hourly limits vary and DEMO_KEY also has a daily quota. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `upstream_timeout`: The Congress.gov request deadline expired or the upstream returned an HTTP timeout response. `document_unavailable`: The 'content' selection resolves to no retrievable document — the text version or article index is past the end of the list, the record publishes no formats at all, or Congress.gov does not hold the file its own metadata names. `format_unavailable`: The document exists but publishes nothing in the requested 'format' — some text versions and committee reports ship PDF only, and no Congressional Record article publishes XML. `document_fetch_failed`: www.congress.gov did not return a readable document — a non-2xx status, a network failure, an empty body, or a content type that is not text or XML. `document_too_large`: The document is larger than the byte ceiling this server retrieves, so no character window can be served from it. `offset_past_end`: characterOffset is at or beyond the last character of every text the call would window — the document on 'content', or every returned row's summary text on 'summaries' — so the window would be empty. `incompatible_identity`: A list operation carries an entity identifier that only a detail operation uses. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "not_found", - "rate_limited", - "invalid_request", - "upstream_error", - "document_unavailable", - "format_unavailable", - "document_fetch_failed", - "document_too_large", - "offset_past_end" -]New value: +[ + "not_found", + "rate_limited", + "invalid_request", + "upstream_error", + "upstream_timeout", + "document_unavailable", + "format_unavailable", + "document_fetch_failed", + "document_too_large", + "offset_past_end", + "incompatible_identity" +]
- Changed
congressgov_enacted_laws2 fields changed- changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: The Congress.gov API rate limit (5,000 requests/hour per key) was exceeded. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: A process-local attempt budget or the shared upstream credential/IP quota was reached; upstream hourly limits vary and DEMO_KEY also has a daily quota. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `upstream_timeout`: The Congress.gov request deadline expired or the upstream returned an HTTP timeout response. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "not_found", - "rate_limited", - "invalid_request", - "upstream_error" -]New value: +[ + "not_found", + "rate_limited", + "invalid_request", + "upstream_error", + "upstream_timeout" +]
- Changed
congressgov_member_lookup2 fields changed- changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: The Congress.gov API rate limit (5,000 requests/hour per key) was exceeded. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: A process-local attempt budget or the shared upstream credential/IP quota was reached; upstream hourly limits vary and DEMO_KEY also has a daily quota. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `upstream_timeout`: The Congress.gov request deadline expired or the upstream returned an HTTP timeout response. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "not_found", - "rate_limited", - "invalid_request", - "upstream_error" -]New value: +[ + "not_found", + "rate_limited", + "invalid_request", + "upstream_error", + "upstream_timeout" +]
- Changed
congressgov_roll_votes2 fields changed- changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: The Congress.gov API rate limit (5,000 requests/hour per key) was exceeded. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: A process-local attempt budget or the shared upstream credential/IP quota was reached; upstream hourly limits vary and DEMO_KEY also has a daily quota. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `upstream_timeout`: The Congress.gov request deadline expired or the upstream returned an HTTP timeout response. `incompatible_identity`: A list operation carries an entity identifier that only a detail operation uses. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "not_found", - "rate_limited", - "invalid_request", - "upstream_error" -]New value: +[ + "not_found", + "rate_limited", + "invalid_request", + "upstream_error", + "upstream_timeout", + "incompatible_identity" +]
- Changed
congressgov_senate_nominations2 fields changed- changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: The Congress.gov API rate limit (5,000 requests/hour per key) was exceeded. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: A process-local attempt budget or the shared upstream credential/IP quota was reached; upstream hourly limits vary and DEMO_KEY also has a daily quota. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `upstream_timeout`: The Congress.gov request deadline expired or the upstream returned an HTTP timeout response. `incompatible_identity`: A list operation carries an entity identifier that only a detail operation uses. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "not_found", - "rate_limited", - "invalid_request", - "upstream_error" -]New value: +[ + "not_found", + "rate_limited", + "invalid_request", + "upstream_error", + "upstream_timeout", + "incompatible_identity" +]
3 tool updates
- Changed
congressgov_bill_lookup4 fields changed- changed
Input schema / properties / characterLimit / descriptionPrevious value: -"Maximum characters to return for 'content' (1-100000). Legislative documents run past a million characters, so a full bill takes several windows."New value: +"Maximum characters to return (1-100000) — for the document window on 'content', and for each row's summary text on 'summaries'. Legislative documents run past a million characters and an enacted bill's summary past two hundred thousand, so either takes several windows." - changed
Input schema / properties / characterOffset / descriptionPrevious value: -"First character to return for 'content', 0-based. Offsets are exact and are never snapped to a section or paragraph break, so feeding the response's nextOffset back walks the whole document with every character returned exactly once."New value: +"First character to return, 0-based — of the document on 'content', and of every returned row's summary text on 'summaries'. Offsets are exact and are never snapped to a section or paragraph break, so feeding back the response's nextOffset (or a summary row's textNextOffset) walks the whole text with every character returned exactly once." - added
Input schema / properties / versionCodeAdded value: +{ + "description": "Which summary version 'summaries' returns — the versionCode a summary row carries ('00' introduced, '49' public law). Selection runs over the bill's whole summary list, which Congress.gov publishes no filter for, and limit/offset then page the matching rows. Omit to return every version. Ignored by other operations.", + "type": "string" +} - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: The Congress.gov API rate limit (5,000 requests/hour per key) was exceeded. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `document_unavailable`: The 'content' selection resolves to no retrievable document — the text version or article index is past the end of the list, the record publishes no formats at all, or Congress.gov does not hold the file its own metadata names. `format_unavailable`: The document exists but publishes nothing in the requested 'format' — some text versions and committee reports ship PDF only, and no Congressional Record article publishes XML. `document_fetch_failed`: www.congress.gov did not return a readable document — a non-2xx status, a network failure, an empty body, or a content type that is not text or XML. `document_too_large`: The document is larger than the byte ceiling this server retrieves, so no character window can be served from it. `offset_past_end`: characterOffset is at or beyond the last character of the document, so the window would be empty. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: The Congress.gov API rate limit (5,000 requests/hour per key) was exceeded. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `document_unavailable`: The 'content' selection resolves to no retrievable document — the text version or article index is past the end of the list, the record publishes no formats at all, or Congress.gov does not hold the file its own metadata names. `format_unavailable`: The document exists but publishes nothing in the requested 'format' — some text versions and committee reports ship PDF only, and no Congressional Record article publishes XML. `document_fetch_failed`: www.congress.gov did not return a readable document — a non-2xx status, a network failure, an empty body, or a content type that is not text or XML. `document_too_large`: The document is larger than the byte ceiling this server retrieves, so no character window can be served from it. `offset_past_end`: characterOffset is at or beyond the last character of every text the call would window — the document on 'content', or every returned row's summary text on 'summaries' — so the window would be empty. Other values are possible when a failure originates below the handler."
- Changed
congressgov_committee_reports1 field changed- changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: The Congress.gov API rate limit (5,000 requests/hour per key) was exceeded. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `document_unavailable`: The 'content' selection resolves to no retrievable document — the text version or article index is past the end of the list, the record publishes no formats at all, or Congress.gov does not hold the file its own metadata names. `format_unavailable`: The document exists but publishes nothing in the requested 'format' — some text versions and committee reports ship PDF only, and no Congressional Record article publishes XML. `document_fetch_failed`: www.congress.gov did not return a readable document — a non-2xx status, a network failure, an empty body, or a content type that is not text or XML. `document_too_large`: The document is larger than the byte ceiling this server retrieves, so no character window can be served from it. `offset_past_end`: characterOffset is at or beyond the last character of the document, so the window would be empty. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: The Congress.gov API rate limit (5,000 requests/hour per key) was exceeded. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `document_unavailable`: The 'content' selection resolves to no retrievable document — the text version or article index is past the end of the list, the record publishes no formats at all, or Congress.gov does not hold the file its own metadata names. `format_unavailable`: The document exists but publishes nothing in the requested 'format' — some text versions and committee reports ship PDF only, and no Congressional Record article publishes XML. `document_fetch_failed`: www.congress.gov did not return a readable document — a non-2xx status, a network failure, an empty body, or a content type that is not text or XML. `document_too_large`: The document is larger than the byte ceiling this server retrieves, so no character window can be served from it. `offset_past_end`: characterOffset is at or beyond the last character of every text the call would window — the document on 'content', or every returned row's summary text on 'summaries' — so the window would be empty. Other values are possible when a failure originates below the handler."
- Changed
congressgov_daily_record1 field changed- changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: The Congress.gov API rate limit (5,000 requests/hour per key) was exceeded. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `document_unavailable`: The 'content' selection resolves to no retrievable document — the text version or article index is past the end of the list, the record publishes no formats at all, or Congress.gov does not hold the file its own metadata names. `format_unavailable`: The document exists but publishes nothing in the requested 'format' — some text versions and committee reports ship PDF only, and no Congressional Record article publishes XML. `document_fetch_failed`: www.congress.gov did not return a readable document — a non-2xx status, a network failure, an empty body, or a content type that is not text or XML. `document_too_large`: The document is larger than the byte ceiling this server retrieves, so no character window can be served from it. `offset_past_end`: characterOffset is at or beyond the last character of the document, so the window would be empty. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: The Congress.gov API rate limit (5,000 requests/hour per key) was exceeded. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `document_unavailable`: The 'content' selection resolves to no retrievable document — the text version or article index is past the end of the list, the record publishes no formats at all, or Congress.gov does not hold the file its own metadata names. `format_unavailable`: The document exists but publishes nothing in the requested 'format' — some text versions and committee reports ship PDF only, and no Congressional Record article publishes XML. `document_fetch_failed`: www.congress.gov did not return a readable document — a non-2xx status, a network failure, an empty body, or a content type that is not text or XML. `document_too_large`: The document is larger than the byte ceiling this server retrieves, so no character window can be served from it. `offset_past_end`: characterOffset is at or beyond the last character of every text the call would window — the document on 'content', or every returned row's summary text on 'summaries' — so the window would be empty. Other values are possible when a failure originates below the handler."
9 tool updates
- Changed
congressgov_bill_lookup2 fields changed- added
Output schema / properties / billAdded value: +{ + "additionalProperties": {}, + "description": "Dynamic upstream JSON record.", + "properties": {}, + "type": "object" +} - added
Output schema / properties / contentAdded value: +{ + "additionalProperties": {}, + "description": "Dynamic upstream JSON record.", + "properties": {}, + "type": "object" +}
- Changed
congressgov_committee_lookup2 fields changed- changed
Input schema / properties / filter / descriptionPrevious value: -"Filter committee list results by name (e.g., 'transportation', 'armed services'). Only meaningful for 'list'. Fetches the full chamber set and matches client-side; fuzzy-matched rows are labeled approximate."New value: +"Filter committee-list results by name (e.g., 'transportation', 'armed services'). Only meaningful for 'list'; fuzzy-matched rows are labeled approximate." - added
Output schema / properties / committeeAdded value: +{ + "additionalProperties": {}, + "description": "Dynamic upstream JSON record.", + "properties": {}, + "type": "object" +}
- Changed
congressgov_committee_reports3 fields changed- added
Output schema / properties / contentAdded value: +{ + "additionalProperties": {}, + "description": "Dynamic upstream JSON record.", + "properties": {}, + "type": "object" +} - added
Output schema / properties / reportAdded value: +{ + "additionalProperties": {}, + "description": "Dynamic upstream JSON record.", + "properties": {}, + "type": "object" +} - added
Output schema / properties / textAdded value: +{ + "description": "Dynamic upstream JSON records.", + "items": { + "additionalProperties": {}, + "description": "Dynamic upstream JSON record.", + "properties": {}, + "type": "object" + }, + "type": "array" +}
- Changed
congressgov_crs_reports1 field changed- added
Output schema / properties / reportAdded value: +{ + "additionalProperties": {}, + "description": "Dynamic upstream JSON record.", + "properties": {}, + "type": "object" +}
- Changed
congressgov_daily_record1 field changed- added
Output schema / properties / contentAdded value: +{ + "additionalProperties": {}, + "description": "Dynamic upstream JSON record.", + "properties": {}, + "type": "object" +}
- Changed
congressgov_enacted_laws1 field changed- added
Output schema / properties / lawAdded value: +{ + "additionalProperties": {}, + "description": "Dynamic upstream JSON record.", + "properties": {}, + "type": "object" +}
- Changed
congressgov_member_lookup5 fields changed- added
Input schema / properties / bioguideId / patternAdded value: +"^[A-Za-z]\\d{6}$" - removed
Input schema / properties / stateCode / maxLengthRemoved value: -2 - removed
Input schema / properties / stateCode / minLengthRemoved value: -2 - added
Input schema / properties / stateCode / patternAdded value: +"^[A-Za-z]{2}$" - added
Output schema / properties / memberAdded value: +{ + "additionalProperties": {}, + "description": "Dynamic upstream JSON record.", + "properties": {}, + "type": "object" +}
- Changed
congressgov_roll_votes1 field changed- added
Output schema / properties / voteAdded value: +{ + "additionalProperties": {}, + "description": "Dynamic upstream JSON record.", + "properties": {}, + "type": "object" +}
- Changed
congressgov_senate_nominations1 field changed- added
Output schema / properties / nominationAdded value: +{ + "additionalProperties": {}, + "description": "Dynamic upstream JSON record.", + "properties": {}, + "type": "object" +}
10 tool updates
- Changed
congressgov_bill_lookup6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "effectiveQuery", + "totalCount" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded value: +{ + "additionalProperties": {}, + "description": "Present when the call failed. Absent on success.", + "properties": { + "code": { + "description": "JSON-RPC error code for this failure.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "data": { + "additionalProperties": {}, + "properties": { + "reason": { + "description": "Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: The Congress.gov API rate limit (5,000 requests/hour per key) was exceeded. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `document_unavailable`: The 'content' selection resolves to no retrievable document — the text version or article index is past the end of the list, the record publishes no formats at all, or Congress.gov does not hold the file its own metadata names. `format_unavailable`: The document exists but publishes nothing in the requested 'format' — some text versions and committee reports ship PDF only, and no Congressional Record article publishes XML. `document_fetch_failed`: www.congress.gov did not return a readable document — a non-2xx status, a network failure, an empty body, or a content type that is not text or XML. `document_too_large`: The document is larger than the byte ceiling this server retrieves, so no character window can be served from it. `offset_past_end`: characterOffset is at or beyond the last character of the document, so the window would be empty. Other values are possible when a failure originates below the handler.", + "examples": [ + "not_found", + "rate_limited", + "invalid_request", + "upstream_error", + "document_unavailable", + "format_unavailable", + "document_fetch_failed", + "document_too_large", + "offset_past_end" + ], + "type": "string" + }, + "recovery": { + "additionalProperties": {}, + "description": "Actionable next step for the caller.", + "properties": { + "hint": { + "type": "string" + } + }, + "required": [ + "hint" + ], + "type": "object" + }, + "retryable": { + "description": "Whether retrying may succeed.", + "type": "boolean" + } + }, + "type": "object" + }, + "message": { + "description": "Human-readable description of what went wrong.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - removed
Output schema / requiredRemoved value: -[ - "effectiveQuery", - "totalCount" -]
- Changed
congressgov_bill_summaries6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "data", + "pagination", + "effectiveQuery", + "totalCount" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded value: +{ + "additionalProperties": {}, + "description": "Present when the call failed. Absent on success.", + "properties": { + "code": { + "description": "JSON-RPC error code for this failure.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "data": { + "additionalProperties": {}, + "properties": { + "reason": { + "description": "Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: The Congress.gov API rate limit (5,000 requests/hour per key) was exceeded. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). Other values are possible when a failure originates below the handler.", + "examples": [ + "not_found", + "rate_limited", + "invalid_request", + "upstream_error" + ], + "type": "string" + }, + "recovery": { + "additionalProperties": {}, + "description": "Actionable next step for the caller.", + "properties": { + "hint": { + "type": "string" + } + }, + "required": [ + "hint" + ], + "type": "object" + }, + "retryable": { + "description": "Whether retrying may succeed.", + "type": "boolean" + } + }, + "type": "object" + }, + "message": { + "description": "Human-readable description of what went wrong.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - removed
Output schema / requiredRemoved value: -[ - "data", - "pagination", - "effectiveQuery", - "totalCount" -]
- Changed
congressgov_committee_lookup6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "effectiveQuery", + "totalCount" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded value: +{ + "additionalProperties": {}, + "description": "Present when the call failed. Absent on success.", + "properties": { + "code": { + "description": "JSON-RPC error code for this failure.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "data": { + "additionalProperties": {}, + "properties": { + "reason": { + "description": "Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: The Congress.gov API rate limit (5,000 requests/hour per key) was exceeded. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). Other values are possible when a failure originates below the handler.", + "examples": [ + "not_found", + "rate_limited", + "invalid_request", + "upstream_error" + ], + "type": "string" + }, + "recovery": { + "additionalProperties": {}, + "description": "Actionable next step for the caller.", + "properties": { + "hint": { + "type": "string" + } + }, + "required": [ + "hint" + ], + "type": "object" + }, + "retryable": { + "description": "Whether retrying may succeed.", + "type": "boolean" + } + }, + "type": "object" + }, + "message": { + "description": "Human-readable description of what went wrong.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - removed
Output schema / requiredRemoved value: -[ - "effectiveQuery", - "totalCount" -]
- Changed
congressgov_committee_reports6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "effectiveQuery", + "totalCount" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded value: +{ + "additionalProperties": {}, + "description": "Present when the call failed. Absent on success.", + "properties": { + "code": { + "description": "JSON-RPC error code for this failure.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "data": { + "additionalProperties": {}, + "properties": { + "reason": { + "description": "Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: The Congress.gov API rate limit (5,000 requests/hour per key) was exceeded. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `document_unavailable`: The 'content' selection resolves to no retrievable document — the text version or article index is past the end of the list, the record publishes no formats at all, or Congress.gov does not hold the file its own metadata names. `format_unavailable`: The document exists but publishes nothing in the requested 'format' — some text versions and committee reports ship PDF only, and no Congressional Record article publishes XML. `document_fetch_failed`: www.congress.gov did not return a readable document — a non-2xx status, a network failure, an empty body, or a content type that is not text or XML. `document_too_large`: The document is larger than the byte ceiling this server retrieves, so no character window can be served from it. `offset_past_end`: characterOffset is at or beyond the last character of the document, so the window would be empty. Other values are possible when a failure originates below the handler.", + "examples": [ + "not_found", + "rate_limited", + "invalid_request", + "upstream_error", + "document_unavailable", + "format_unavailable", + "document_fetch_failed", + "document_too_large", + "offset_past_end" + ], + "type": "string" + }, + "recovery": { + "additionalProperties": {}, + "description": "Actionable next step for the caller.", + "properties": { + "hint": { + "type": "string" + } + }, + "required": [ + "hint" + ], + "type": "object" + }, + "retryable": { + "description": "Whether retrying may succeed.", + "type": "boolean" + } + }, + "type": "object" + }, + "message": { + "description": "Human-readable description of what went wrong.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - removed
Output schema / requiredRemoved value: -[ - "effectiveQuery", - "totalCount" -]
- Changed
congressgov_crs_reports6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "effectiveQuery", + "totalCount" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded value: +{ + "additionalProperties": {}, + "description": "Present when the call failed. Absent on success.", + "properties": { + "code": { + "description": "JSON-RPC error code for this failure.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "data": { + "additionalProperties": {}, + "properties": { + "reason": { + "description": "Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: The Congress.gov API rate limit (5,000 requests/hour per key) was exceeded. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). Other values are possible when a failure originates below the handler.", + "examples": [ + "not_found", + "rate_limited", + "invalid_request", + "upstream_error" + ], + "type": "string" + }, + "recovery": { + "additionalProperties": {}, + "description": "Actionable next step for the caller.", + "properties": { + "hint": { + "type": "string" + } + }, + "required": [ + "hint" + ], + "type": "object" + }, + "retryable": { + "description": "Whether retrying may succeed.", + "type": "boolean" + } + }, + "type": "object" + }, + "message": { + "description": "Human-readable description of what went wrong.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - removed
Output schema / requiredRemoved value: -[ - "effectiveQuery", - "totalCount" -]
- Changed
congressgov_daily_record6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "effectiveQuery", + "totalCount" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded value: +{ + "additionalProperties": {}, + "description": "Present when the call failed. Absent on success.", + "properties": { + "code": { + "description": "JSON-RPC error code for this failure.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "data": { + "additionalProperties": {}, + "properties": { + "reason": { + "description": "Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: The Congress.gov API rate limit (5,000 requests/hour per key) was exceeded. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). `document_unavailable`: The 'content' selection resolves to no retrievable document — the text version or article index is past the end of the list, the record publishes no formats at all, or Congress.gov does not hold the file its own metadata names. `format_unavailable`: The document exists but publishes nothing in the requested 'format' — some text versions and committee reports ship PDF only, and no Congressional Record article publishes XML. `document_fetch_failed`: www.congress.gov did not return a readable document — a non-2xx status, a network failure, an empty body, or a content type that is not text or XML. `document_too_large`: The document is larger than the byte ceiling this server retrieves, so no character window can be served from it. `offset_past_end`: characterOffset is at or beyond the last character of the document, so the window would be empty. Other values are possible when a failure originates below the handler.", + "examples": [ + "not_found", + "rate_limited", + "invalid_request", + "upstream_error", + "document_unavailable", + "format_unavailable", + "document_fetch_failed", + "document_too_large", + "offset_past_end" + ], + "type": "string" + }, + "recovery": { + "additionalProperties": {}, + "description": "Actionable next step for the caller.", + "properties": { + "hint": { + "type": "string" + } + }, + "required": [ + "hint" + ], + "type": "object" + }, + "retryable": { + "description": "Whether retrying may succeed.", + "type": "boolean" + } + }, + "type": "object" + }, + "message": { + "description": "Human-readable description of what went wrong.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - removed
Output schema / requiredRemoved value: -[ - "effectiveQuery", - "totalCount" -]
- Changed
congressgov_enacted_laws6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "effectiveQuery", + "totalCount" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded value: +{ + "additionalProperties": {}, + "description": "Present when the call failed. Absent on success.", + "properties": { + "code": { + "description": "JSON-RPC error code for this failure.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "data": { + "additionalProperties": {}, + "properties": { + "reason": { + "description": "Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: The Congress.gov API rate limit (5,000 requests/hour per key) was exceeded. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). Other values are possible when a failure originates below the handler.", + "examples": [ + "not_found", + "rate_limited", + "invalid_request", + "upstream_error" + ], + "type": "string" + }, + "recovery": { + "additionalProperties": {}, + "description": "Actionable next step for the caller.", + "properties": { + "hint": { + "type": "string" + } + }, + "required": [ + "hint" + ], + "type": "object" + }, + "retryable": { + "description": "Whether retrying may succeed.", + "type": "boolean" + } + }, + "type": "object" + }, + "message": { + "description": "Human-readable description of what went wrong.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - removed
Output schema / requiredRemoved value: -[ - "effectiveQuery", - "totalCount" -]
- Changed
congressgov_member_lookup6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "effectiveQuery", + "totalCount" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded value: +{ + "additionalProperties": {}, + "description": "Present when the call failed. Absent on success.", + "properties": { + "code": { + "description": "JSON-RPC error code for this failure.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "data": { + "additionalProperties": {}, + "properties": { + "reason": { + "description": "Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: The Congress.gov API rate limit (5,000 requests/hour per key) was exceeded. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). Other values are possible when a failure originates below the handler.", + "examples": [ + "not_found", + "rate_limited", + "invalid_request", + "upstream_error" + ], + "type": "string" + }, + "recovery": { + "additionalProperties": {}, + "description": "Actionable next step for the caller.", + "properties": { + "hint": { + "type": "string" + } + }, + "required": [ + "hint" + ], + "type": "object" + }, + "retryable": { + "description": "Whether retrying may succeed.", + "type": "boolean" + } + }, + "type": "object" + }, + "message": { + "description": "Human-readable description of what went wrong.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - removed
Output schema / requiredRemoved value: -[ - "effectiveQuery", - "totalCount" -]
- Changed
congressgov_roll_votes6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "effectiveQuery", + "totalCount" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded value: +{ + "additionalProperties": {}, + "description": "Present when the call failed. Absent on success.", + "properties": { + "code": { + "description": "JSON-RPC error code for this failure.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "data": { + "additionalProperties": {}, + "properties": { + "reason": { + "description": "Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: The Congress.gov API rate limit (5,000 requests/hour per key) was exceeded. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). Other values are possible when a failure originates below the handler.", + "examples": [ + "not_found", + "rate_limited", + "invalid_request", + "upstream_error" + ], + "type": "string" + }, + "recovery": { + "additionalProperties": {}, + "description": "Actionable next step for the caller.", + "properties": { + "hint": { + "type": "string" + } + }, + "required": [ + "hint" + ], + "type": "object" + }, + "retryable": { + "description": "Whether retrying may succeed.", + "type": "boolean" + } + }, + "type": "object" + }, + "message": { + "description": "Human-readable description of what went wrong.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - removed
Output schema / requiredRemoved value: -[ - "effectiveQuery", - "totalCount" -]
- Changed
congressgov_senate_nominations6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "effectiveQuery", + "totalCount" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded value: +{ + "additionalProperties": {}, + "description": "Present when the call failed. Absent on success.", + "properties": { + "code": { + "description": "JSON-RPC error code for this failure.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "data": { + "additionalProperties": {}, + "properties": { + "reason": { + "description": "Machine-readable failure mode. Declared by this tool: `not_found`: A requested bill, member, committee, report, vote, or nomination does not exist in Congress.gov. `rate_limited`: The Congress.gov API rate limit (5,000 requests/hour per key) was exceeded. `invalid_request`: Congress.gov rejected the request as malformed — a bad date range or an identifier with an unexpected shape. `upstream_error`: Congress.gov returned an unexpected error (5xx or another non-2xx status). Other values are possible when a failure originates below the handler.", + "examples": [ + "not_found", + "rate_limited", + "invalid_request", + "upstream_error" + ], + "type": "string" + }, + "recovery": { + "additionalProperties": {}, + "description": "Actionable next step for the caller.", + "properties": { + "hint": { + "type": "string" + } + }, + "required": [ + "hint" + ], + "type": "object" + }, + "retryable": { + "description": "Whether retrying may succeed.", + "type": "boolean" + } + }, + "type": "object" + }, + "message": { + "description": "Human-readable description of what went wrong.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - removed
Output schema / requiredRemoved value: -[ - "effectiveQuery", - "totalCount" -]
5 tool updates
- Changed
congressgov_bill_lookup10 fields changed- added
Input schema / properties / billNumber / anyOfAdded value: +[ + { + "description": "Positive integer form.", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "description": "Digit-string form, as list rows carry it.", + "pattern": "^0*[1-9]\\d*$", + "type": "string" + } +] - changed
Input schema / properties / billNumber / descriptionPrevious value: -"Bill number. Required for get and sub-resource operations."New value: +"Bill number. Required for get and sub-resource operations. Accepts the digit-string form list rows carry (e.g. \"9479\") as well as a number." - removed
Input schema / properties / billNumber / exclusiveMinimumRemoved value: -0 - removed
Input schema / properties / billNumber / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / billNumber / typeRemoved value: -"integer" - added
Input schema / properties / characterLimitAdded value: +{ + "default": 25000, + "description": "Maximum characters to return for 'content' (1-100000). Legislative documents run past a million characters, so a full bill takes several windows.", + "maximum": 100000, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / characterOffsetAdded value: +{ + "default": 0, + "description": "First character to return for 'content', 0-based. Offsets are exact and are never snapped to a section or paragraph break, so feeding the response's nextOffset back walks the whole document with every character returned exactly once.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / formatAdded value: +{ + "default": "text", + "description": "Document format for 'content'. 'text' is GPO's Formatted Text — plain, pre-formatted print output, published for every document checked. 'xml' prefers United States Legislative Markup and falls back to Formatted XML; it exists on some bill text versions and on no committee report or Congressional Record article. PDF is not retrieved — read one at the format URLs 'text'/'articles' return.", + "enum": [ + "text", + "xml" + ], + "type": "string" +} - changed
Input schema / properties / operation / enumPrevious value: -[ - "list", - "get", - "actions", - "amendments", - "cosponsors", - "committees", - "subjects", - "summaries", - "text", - "titles", - "related" -]New value: +[ + "list", + "get", + "actions", + "amendments", + "cosponsors", + "committees", + "subjects", + "summaries", + "text", + "titles", + "related", + "content" +] - added
Input schema / properties / textVersionIndexAdded value: +{ + "default": 0, + "description": "Which text version 'content' reads, 0-based against the same order 'text' returns — 0 is the most recent version. Ignored by other operations.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +}
- Changed
congressgov_committee_lookup2 fields changed- changed
Input schema / properties / committeeCode / descriptionPrevious value: -"Committee system code, e.g. 'hsju00'. Required for 'get' and sub-resources. Codes are lowercase letters + 2-digit suffix. Pass a committee name here and the tool will attempt to resolve it automatically — or use operation:'list' with filter to browse."New value: +"Committee system code, e.g. 'hsju00'. Required for 'get' and sub-resources. Codes are letters + a 2-digit suffix and are matched case-insensitively. Any other non-blank value is treated as a committee name and resolved automatically — single-word names ('Judiciary') included — or use operation:'list' with filter to browse." - changed
Input schema / properties / committeeCode / patternPrevious value: -"^([a-z]{2,6}\\d{2}|.*\\s.*)$"New value: +"\\S"
- Changed
congressgov_committee_reports6 fields changed- added
Input schema / properties / characterLimitAdded value: +{ + "default": 25000, + "description": "Maximum characters to return for 'content' (1-100000). Legislative documents run past a million characters, so a full bill takes several windows.", + "maximum": 100000, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / characterOffsetAdded value: +{ + "default": 0, + "description": "First character to return for 'content', 0-based. Offsets are exact and are never snapped to a section or paragraph break, so feeding the response's nextOffset back walks the whole document with every character returned exactly once.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / formatAdded value: +{ + "default": "text", + "description": "Document format for 'content'. 'text' is GPO's Formatted Text — plain, pre-formatted print output, published for every document checked. 'xml' prefers United States Legislative Markup and falls back to Formatted XML; it exists on some bill text versions and on no committee report or Congressional Record article. PDF is not retrieved — read one at the format URLs 'text'/'articles' return.", + "enum": [ + "text", + "xml" + ], + "type": "string" +} - changed
Input schema / properties / operation / enumPrevious value: -[ - "list", - "get", - "text" -]New value: +[ + "list", + "get", + "text", + "content" +] - changed
Input schema / properties / reportNumber / descriptionPrevious value: -"Committee report number. Required for get and text operations."New value: +"Committee report number. Required for get, text, and content operations." - changed
Input schema / properties / reportType / descriptionPrevious value: -"Report type. Required for get and text operations."New value: +"Report type. Required for get, text, and content operations."
- Changed
congressgov_daily_record16 fields changed- added
Input schema / properties / articleIndexAdded value: +{ + "default": 0, + "description": "Which article 'content' reads, 0-based against the issue's whole article sequence — the same absolute position 'articles' pages through with offset. Ignored by other operations.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / characterLimitAdded value: +{ + "default": 25000, + "description": "Maximum characters to return for 'content' (1-100000). Legislative documents run past a million characters, so a full bill takes several windows.", + "maximum": 100000, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / characterOffsetAdded value: +{ + "default": 0, + "description": "First character to return for 'content', 0-based. Offsets are exact and are never snapped to a section or paragraph break, so feeding the response's nextOffset back walks the whole document with every character returned exactly once.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / formatAdded value: +{ + "default": "text", + "description": "Document format for 'content'. 'text' is GPO's Formatted Text — plain, pre-formatted print output, published for every document checked. 'xml' prefers United States Legislative Markup and falls back to Formatted XML; it exists on some bill text versions and on no committee report or Congressional Record article. PDF is not retrieved — read one at the format URLs 'text'/'articles' return.", + "enum": [ + "text", + "xml" + ], + "type": "string" +} - added
Input schema / properties / issueNumber / anyOfAdded value: +[ + { + "description": "Positive integer form.", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "description": "Digit-string form, as list rows carry it.", + "pattern": "^0*[1-9]\\d*$", + "type": "string" + } +] - changed
Input schema / properties / issueNumber / descriptionPrevious value: -"Issue number within a volume. Required for 'articles'."New value: +"Issue number within a volume. Required for 'articles' and 'content'. List rows carry this as a string (e.g. \"109\") — both forms are accepted." - removed
Input schema / properties / issueNumber / exclusiveMinimumRemoved value: -0 - removed
Input schema / properties / issueNumber / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / issueNumber / typeRemoved value: -"integer" - changed
Input schema / properties / operation / enumPrevious value: -[ - "list", - "issues", - "articles" -]New value: +[ + "list", + "issues", + "articles", + "content" +] - added
Input schema / properties / volumeNumber / anyOfAdded value: +[ + { + "description": "Positive integer form.", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "description": "Digit-string form, as list rows carry it.", + "pattern": "^0*[1-9]\\d*$", + "type": "string" + } +] - changed
Input schema / properties / volumeNumber / descriptionPrevious value: -"Volume number. Required for 'issues' and 'articles'."New value: +"Volume number. Required for 'issues', 'articles', and 'content'. Accepts a number or the digit-string form list rows carry." - removed
Input schema / properties / volumeNumber / exclusiveMinimumRemoved value: -0 - removed
Input schema / properties / volumeNumber / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / volumeNumber / typeRemoved value: -"integer" - changed
Output schema / requiredPrevious value: -[ - "data", - "pagination", - "effectiveQuery", - "totalCount" -]New value: +[ + "effectiveQuery", + "totalCount" +]
- Changed
congressgov_enacted_laws5 fields changed- added
Input schema / properties / lawNumber / anyOfAdded value: +[ + { + "description": "Positive integer form (e.g. 90).", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "description": "String form — the law number (\"90\") or the full citation (\"118-90\").", + "pattern": "^(?:\\d+-)?0*[1-9]\\d*$", + "type": "string" + } +] - changed
Input schema / properties / lawNumber / descriptionPrevious value: -"Law number. Required for 'get'."New value: +"Law number, as carried by a 'list' row's `laws[].number` — either the full citation ('118-90', rendered as 'Public Law 118-90') or the portion after the hyphen ('90'); the prefix is the congress and must match `congress`. Not the row's own `number`, which is the origin bill. Required for 'get'." - removed
Input schema / properties / lawNumber / exclusiveMinimumRemoved value: -0 - removed
Input schema / properties / lawNumber / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / lawNumber / typeRemoved value: -"integer"
1 tool update
- Changed
congressgov_committee_lookup2 fields changed- changed
Input schema / properties / committeeCode / descriptionPrevious value: -"Committee system code (e.g., 'hsju00'). Required for get and sub-resources."New value: +"Committee system code, e.g. 'hsju00'. Required for 'get' and sub-resources. Codes are lowercase letters + 2-digit suffix. Pass a committee name here and the tool will attempt to resolve it automatically — or use operation:'list' with filter to browse." - added
Input schema / properties / committeeCode / patternAdded value: +"^([a-z]{2,6}\\d{2}|.*\\s.*)$"
Related MCP Connectors
Congress MCP — US Congress bill/law/member data via the official congress.gov API (Library of…
GovTrack MCP — federal US Congress data (free, no auth)
LegiScan MCP — wraps the LegiScan API (api.legiscan.com)
Query U.S. Census Bureau data, variables, and geography via MCP.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceQuery normalized U.S. House and Senate STOCK Act disclosures, member trading histories, and aggregate trading statistics through MCP.-
- AlicenseAqualityAmaintenanceRemote MCP server for nonpartisan U.S. Congress data: plain-language bill decodes (bilingual EN/ES), representative lookup by ZIP with district-office phones, and what's-moving urgency ranking. Read-only, keyless.51AGPL 3.0
- AlicenseNot gradedqualityDmaintenanceEnables querying U.S. legislative data from Congress.gov API using MCP resources for direct lookups and tools for searching and retrieving related data.8MIT
- AlicenseNot gradedqualityAmaintenanceSearch bills, legislators, committees, and events across all 50 US states, DC, and 5 US territories via MCP.333 npm2Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.