congressgov-mcp-server
Server Details
Access U.S. congressional data - bills, votes, members, committees - via MCP.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- cyanheads/congressgov-mcp-server
- GitHub Stars
- 0
Available Tools
10 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.
| 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. | |
| 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 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. | |
| 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 mark the tool readOnly, idempotent, and openWorld, and the description does not contradict them. It adds substantial behavioral detail beyond those hints: filtering by update date rather than legislative action, 'list' defaulting to most-recently-updated first, 'content' returning a bounded character window, exact offset semantics, and the fact that PDF is not retrieved. This is exactly the kind of non-obvious behavior an agent needs.
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 every sentence earns its place, front-loading the core purpose and the critical 'no keyword search' caveat. It organizes the operation menu and parameter requirements in a compact flow, and it does not repeat annotation or schema content unnecessarily.
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 13 parameters, multiple operation modes, and a rich output schema, the description is remarkably complete. It covers all operation families, their prerequisites, the text-vs-content distinction, format behavior, and pagination semantics. The output schema handles return-value details, so nothing needed to call the tool correctly 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 description coverage is 100%, so the baseline is 3, but the description goes further by tying parameters to operation semantics: it explains which parameters each operation requires, how 'textVersionIndex' relates to the order returned by 'text', and how 'characterOffset' paginates through long documents. While much parameter detail lives in the schema, this operation-level guidance adds real meaning beyond the individual field descriptions.
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 opens with a specific verb and resource: 'Browse and retrieve U.S. legislative bill data from Congress.gov', and immediately disambiguates scope with 'there is no keyword search'. It enumerates the distinct operations ('list', 'get', 'actions', 'content', etc.), making it easy to separate this tool from the sibling committee, member, and CRS tools.
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?
The description gives actionable routing: 'Use 'list' to browse', ''get' for full bill detail', and ''text' lists the published versions ... 'content' then reads one version's actual text'. It also states the parameter prerequisites for each mode ('each requires congress + billType + billNumber') and the exclusion ('there is no keyword search'), so an agent can confidently choose an operation.
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. For summaries of one specific bill, 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?
The description meaningfully extends the readOnlyHint/openWorldHint/idempotentHint annotations by disclosing that date filters apply to summary update time rather than bill action date, which can return recently rewritten summaries of older bills. It also clarifies that each item displays both the action date and the summary update date.
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 four sentences with no filler: it states the resource and use case, clarifies an important behavioral nuance, states defaults, and routes to the alternative tool. Every sentence contributes necessary decision-making information.
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 six optional parameters, full schema coverage, rich annotations, and an output schema, the description provides the additional context an agent needs: update-time semantics, default date range, and the alternative for targeted single-bill lookup. No critical behavioral gaps remain.
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. The description adds value by explaining the semantic of fromDateTime/toDateTime (update time, not action time) and the default behavior, which is not fully obvious from the schema alone.
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" and clarifies their utility for answering 'what's happening in Congress?'. It explicitly distinguishes itself from congressgov_bill_lookup, which is the sibling for summaries of one specific bill.
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?
Provides clear when-to-use context (recent summaries, plain-language legislative stage overviews) and explicitly names the alternative tool for single-bill summaries. It also explains the default 7-day window, which helps an agent decide whether this tool fits the query.
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?
With readOnlyHint and idempotentHint already present, the description adds valuable non-obvious behaviors: committee code inference from the prefix, approximate fuzzy-match labels, the 'bills' default ordering, and the upstream limitation that bill titles are omitted. These go well beyond what annotations or schema could convey.
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 every sentence adds decision-relevant detail: operation flow, code syntax, chamber handling, ordering behavior, and data limitations. Information is front-loaded with the overall purpose, then logically progresses from discovery to retrieval to chaining.
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 the tool's eight parameters, five operations, and an output schema, the description covers all necessary context: operation selection, parameter dependencies, default behaviors, Senate-only restriction, and how to overcome the missing-titles gap by chaining to another tool. Nothing an agent needs to invoke it correctly is absent.
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%, establishing a baseline of 3, but the description substantially enriches parameter semantics. It explains the internal structure and case-insensitivity of committeeCode, reveals that any non-blank value is auto-resolved as a committee name, and clarifies the order parameter's scope and defaults 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?
The description opens with a specific verb-resource pair ('Browse congressional committees and their legislation, reports, and nominations') and enumerates the exact sub-operations, making it immediately distinguishable from sibling bill, member, and report tools. It also names the chaining target (congressgov_bill_lookup get), reinforcing its role in the broader tool family.
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?
The description provides an explicit workflow: use 'list' (with optional 'filter') to discover committee codes, then use 'get' or sub-resources. It also gives exclusion guidance ('nominations' is Senate-only) and explains when chamber should be passed explicitly versus inferred, leaving no ambiguity about operation selection.
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, openWorldHint, and idempotentHint, so the description is not required to repeat those. It adds valuable behavioral context: 'text' returns format URLs, 'content' reads a bounded character window, and PDF is explicitly not retrieved (pointing to the format URLs). It also describes the exact offset semantics ('never snapped to a section or paragraph break') and the windowing trick (using nextOffset). These go beyond the annotations and provide operational transparency.
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 a single, well-structured paragraph of three sentences. It front-loads the primary purpose, then logically transitions to report types and the text/content workflow. No filler or redundant statements; every sentence carries information needed to understand the tool's behavior.
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 the tool's complexity (9 parameters, 4 operations, multiple report types), the description provides a solid high-level overview and the crucial text-vs-content distinction. The output schema typically documents return values, so the lack of return-format discussion is acceptable. It does not mention pagination of list results (limit/offset) but those are clearly documented in the parameter descriptions. Overall, an agent would have enough context to use the tool correctly, though a note about list pagination would make it fully complete.
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?
The schema descriptions cover 100% of parameters in detail (e.g., format, characterLimit, characterOffset). The tool description adds meaning by tying operations to parameters—explaining that 'text' lists URLs and 'content' reads text with a character window—which clarifies how operation, reportType, reportNumber, and the character parameters interact. This is a modest but useful supplement to the already rich schema, so it earns a 4.
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 clear verb ('Browse and retrieve'), a specific resource ('committee reports from Congress.gov'), and explains what reports contain. It distinguishes itself from sibling tools by focusing solely on committee reports, and the operation types (list, get, text, content) map directly to the schema. The addition of report type examples ('hrpt', 'srpt', 'erpt') further grounds the purpose.
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?
The description implies a clear usage workflow: use 'text' to get format URLs, then 'content' to read the actual text. It also notes that reports accompany legislation reported out of committee, giving context for when this tool is relevant. However, it does not explicitly contrast with sibling tools (e.g., when to use bill_summaries instead) or state exclusions, so the guidance is implied rather than exhaustive.
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 readOnlyHint, openWorldHint, and idempotentHint, establishing safe read-only behavior. The description adds behavioral context by noting that 'get' provides authors, topics, summary, and download formats, and that report IDs follow a letter-number pattern (e.g., R40097). This enhances the agent's understanding of what to expect without contradicting 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?
The description is two compact sentences with no redundancy. The first sentence establishes what CRS reports are, and the second explains the operations and ID format. The key actionable information (list vs get, ID format) is front-loaded, making it efficient for an agent to parse.
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 tool with an output schema and well-documented parameters, the description adequately covers the essential usage details: the operations, the report ID format, and what 'get' returns. It doesn't mention pagination or error handling, but those are covered by the schema and the tool's read-only nature. Minor omission of how 'list' results are returned is tolerable given the output schema exists.
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?
The schema already documents all parameters with 100% coverage, including descriptions and defaults. The description adds value by specifying the concrete report number format ('R40097', 'RL33612', 'IF12345') and clarifying that reportNumber is required for 'get', which reinforces the schema's conditional requirement. This goes beyond the schema's generic wording.
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 and retrieves CRS reports, explicitly describing them as nonpartisan policy analyses covering policy areas, legislative proposals, and legal questions. This distinguishes it from sibling tools for bills, committee reports, and other congressional documents, making the purpose unambiguous.
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?
The description provides explicit guidance on how to use the two operations: 'Use 'list' to browse available reports or 'get' for full detail'. It also clarifies the report ID format required for 'get'. While it doesn't explicitly contrast with sibling tools or state when not to use this tool, the topic distinction (CRS reports vs. other congressional documents) is implied through the description's content.
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?
With readOnlyHint, openWorldHint, and idempotentHint already provided by annotations, the description adds genuine behavioral context: the hierarchical navigation flow, the fact that 'articles' returns format URLs, and that 'content' reads a bounded character window at a time. This goes beyond what annotations alone convey.
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 well-structured and compact: a front-loaded purpose, then the operation hierarchy, then concrete usage instructions. Every sentence contributes either scope or navigation guidance, with no filler or repetition.
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 4-operation, 9-parameter tool, the description covers the operation flow, the relationship between operations, and the bounded-window content model. The output schema and 100% parameter coverage supply the remaining return-value and parameter details, so nothing needed 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 description coverage is 100%, so the schema already carries the parameter detail. The description adds high-level operation semantics and the windowed-reading behavior, but it does not need to restate what the schema already documents. It earns the baseline rather than exceeding it.
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 opens with a direct verb-resource statement ('Browse the daily Congressional Record') and names concrete contents: floor speeches, debates, and legislative text. It then maps the four operations to a hierarchy, making the tool's role clear and distinguishing it from sibling bill/committee-focused tools.
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?
The description gives explicit routing guidance among the tool's own operations: 'Use list to find recent volumes, issues to see what's in a volume, and articles to access individual speeches.' It does not explicitly contrast with sibling tools, but the daily-record scope is plainly distinct from the sibling bill and committee tools.
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, openWorldHint, and idempotentHint, so the description doesn't need to restate safety. It adds meaningful behavioral context by explaining that 'get' returns the origin bill record with the law citation on the 'laws' array, including an example. This goes beyond the schema and gives the agent an expectation of the output shape. No contradictions with annotations were found.
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 three sentences with zero fluff. The first sentence states the overall scope, the second explains 'list', and the third explains 'get'. The most important differentiator (list's filtering ability) is front-loaded, and the example citation is compact and concrete. Every sentence earns its place.
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 two operations, six parameters, and an output schema present, the description handles the essentials well: it explains each operation's purpose and return, and it ties lawType and lawNumber to the operations. Pagination (limit/offset) is left to the schema, which is acceptable given the schema is explicit. The description could mention the typical workflow (list then get) more explicitly, but it's implied strongly enough that an agent can infer it. Overall, it's complete for correct selection and invocation.
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 schema already defines every parameter. The description adds genuine semantic value beyond the schema: it clarifies the meaning of 'pub' vs 'priv' (public/private laws) and explains that lawNumber is carried from a 'list' row's laws[].number, with the prefix matching congress. This extra context helps disambiguate the lawNumber parameter's dual forms, which the schema describes but the description makes operationally clear.
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 clear purpose: browse enacted public and private laws from Congress.gov by congress and law type. It explicitly names the two operations ('list' and 'get') and what each does, and it differentiates from the sibling bill_lookup by noting that 'list' offers enactment-status and law-type filtering that bill_lookup lacks. This gives an agent a confident understanding of what the tool does and how it differs from nearby tools.
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?
The description identifies the discovery path ('list') and the retrieval path ('get'), and it explicitly calls out that bill_lookup does not offer the filtering 'list' provides, giving a concrete when-to-use hint. It doesn't enumerate all alternative tools or provide explicit exclusions for every sibling, but the domain (enacted laws) is distinct enough that the usage context is clear. A bit more explicit 'use this when...' phrasing would push it to a 5.
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 supply readOnly, idempotent, and openWorld hints. The description adds meaningful behavioral context beyond those: it states that name search is not supported, that currentMember=true restricts to currently serving members, and that 'list' filtering follows specific combination patterns. No contradiction with 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 sentences carry a large amount of operational guidance without fluff. The most important scoping caveat ('No name search') and the filtering rules are front-loaded, and the workflow progression from list to get/sponsored/cosponsored is logically structured.
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 tool with four operations, the description covers filter combinations, required dependencies, operation selection once bioguideId is known, and an explicit exclusion. Combined with a 100% described schema, rich annotations, and an output schema, nothing essential is missing for an agent to invoke it 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 baseline is 3. The description adds value by clarifying relationships: district requires stateCode, stateCode can pair with congress, and bioguideId is the key for get/sponsored/cosponsored. Concrete examples (e.g., 'CA district 12 in the 118th') reinforce parameter semantics beyond dry schema 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?
The description names the resource ('congressional members and their legislative activity') with a clear verb ('Discover') and immediately delimits scope with 'No name search.' It also names the four operation modes, making the tool's purpose and boundaries obvious relative to sibling lookup tools.
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 usage patterns for the 'list' operation—filter by stateCode, optionally with district, by congress, or both—and explains when to switch to 'get' or 'sponsored'/'cosponsored' once a bioguideId is known. It doesn't explicitly compare to sibling tools, but the domain and operation guidance are clear enough for correct invocation.
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). Odd years are session 1, even years session 2. | |
| 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 already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds meaningful behavioral context: house data comes from the Congress.gov API while senate data comes from the Senate's LIS feed, list returns newest first by default, and 'get' returns specific fields (question, result, tallies, party breakdown, associated bill/nomination/amendment). This goes beyond the annotations without contradicting them.
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 three sentences, front-loaded with the core purpose, and each sentence earns its place. It efficiently packs chamber sourcing, operation types, and return content without redundancy or filler. The structure is scannable and immediately actionable for an agent.
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 operation semantics, chamber selection, data sources, and default ordering. The input schema documents all parameters, and an output schema exists, so return values are already specified. Minor gaps like pagination behavior are handled by the schema; overall, the agent has everything needed to select and invoke the tool correctly. A 4 is appropriate given the tool's complexity.
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 does not add much parameter-level meaning beyond the schema: it mentions operation-to-parameter mapping and the chamber data source, but the schema already documents voteNumber's requirement for 'get'/'members' and the chamber-specific roll call reset behavior. No significant param semantics are added beyond what the schema provides.
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 opens with a specific verb-resource pair ('Retrieve U.S. congressional roll call votes and individual member voting positions') and immediately distinguishes the tool's domain from the sibling tools (bill lookup, committee reports, etc.). It further clarifies scope by chamber and by operation, leaving no ambiguity about what the tool does.
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?
The description provides explicit operation selection guidance: 'Use 'list'...', 'get' for vote details..., or 'members' for how each member voted.' It also distinguishes data sources for house vs senate. It does not explicitly state when not to use this tool versus a sibling, but the sibling tools are clearly different domains, so exclusion guidance is unnecessary.
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.
| 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. 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. |
| nomination | 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?
Beyond the readOnly/idempotent/openWorld annotations, the description discloses crucial non-obvious behavior: parent nominations like PN1000 carry activity, while multi-part parents like PN851 carry none and require partitioned children. It even provides a diagnostic rule—'get on a parent that has no nominees array signals the partitioned form is needed'—which is exactly the kind of behavioral nuance an agent needs.
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 every sentence earns its place: purpose, operation routing, numbering scheme, parent/child quirk, and a detection heuristic. The most important operational constraint is front-loaded with concrete examples, 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?
Given the tool's complexity—six operations, nuanced multi-part nominations, and partition behavior—the description covers everything needed to select and invoke it correctly. The presence of an output schema means return values need not be explained in prose, and the HTTP-like safety profile is covered by annotations.
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%, and the input schema already documents operation, nominationNumber, ordinal, congress, limit, and offset in detail. The description adds a useful decision procedure for choosing bare vs partitioned nomination numbers, but largely restates semantics already present in the schema, so the baseline of 3 is appropriate.
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 opens with a specific verb and resource: 'Browse presidential nominations to federal positions and track the Senate confirmation process.' It then enumerates the exact operations and what each returns, making the tool's purpose unmistakable and clearly distinct from the unrelated congressional 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?
It gives explicit operation-by-operation routing: 'Use list to browse, get for nomination detail, actions/committees/hearings for confirmation pipeline data, or nominees to retrieve individual appointees.' It also explains when to use bare versus partitioned nomination numbers, so an agent knows exactly how to select parameters for the right data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user or an account that owns the GitHub organization, then choose Claim with GitHub.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Congress MCP — US Congress data via GovTrack API (free, no auth required)
GovTrack MCP — federal US Congress data (free, no auth)
LegiScan MCP — wraps the LegiScan API (api.legiscan.com)
An MCP server that provides congressional transcripts
Related MCP Servers
- 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
- 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 gradedqualityCmaintenanceEnables querying legislative data from the LegiScan API, including bills and votes, via natural language through an MCP gateway.10MIT
- AlicenseAqualityAmaintenanceMCP server for the Congress.gov API that tracks US federal legislative process, providing tools to search bills and get bill details.111Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Each tool maps to a distinct Congress.gov content area, but a few boundaries overlap: bill_summaries vs. bill_lookup's summaries operation, committee_lookup's reports/nominations drill-downs vs. committee_reports/senate_nominations. The descriptions clarify the intended use cases, so an agent can mostly choose correctly.
All tool names follow a uniform, predictable pattern: congressgov_ + snake_case noun phrase. Although the convention is noun-based rather than verb_noun, it is consistent across all 10 tools and clearly signals the data domain.
Ten tools is well-scoped for a Congress.gov data server. Each tool covers a major content type—bills, summaries, committees, reports, CRS reports, the Record, enacted laws, members, votes, and nominations—without redundancy or filler.
The tool surface provides strong read coverage across bills, summaries, committees, reports, the Congressional Record, enacted laws, members, votes, and nominations. Minor gaps remain, such as no standalone amendments/treaties browsing and no keyword search across bills or members, but most workflows can be completed by chaining existing tools.