Skip to main content
Glama

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

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.5/5 across 10 of 10 tools scored.

Server CoherenceA
Disambiguation3/5

Tools are generally distinct by domain, but there is overlap: 'bill_lookup' includes a 'summaries' operation while a separate 'bill_summaries' tool exists for browsing summaries across bills. Similarly, 'committee_lookup' has a 'reports' sub-resource alongside a dedicated 'committee_reports' tool. These redundancies could cause agents to select the wrong tool despite descriptive clarifications.

Naming Consistency4/5

All tools share the 'congressgov_' prefix and use a consistent noun-based naming pattern (e.g., bill_lookup, committee_reports). While not strictly verb_noun, the convention is uniform and predictable. Minor deviation: 'roll_votes' uses plural noun; others singular. Overall strong consistency.

Tool Count5/5

With 10 tools covering bills, committees, members, votes, nominations, CRS reports, daily record, and enacted laws, the count is well-scoped for the Congress.gov domain. Each tool addresses a distinct major aspect without being overly granular or sparse.

Completeness4/5

The tool set covers core legislative data surfaces: bills, committees, members, votes, nominations, and reports. However, notable gaps include lack of treaty or hearing information, and limited search capabilities (no keyword search across bills). Minor gaps that agents can often work around.

Available Tools

10 tools
congressgov_bill_lookupCongressgov Bill LookupA
Read-onlyIdempotent
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page (1-250).
orderNoSort order for 'list' (sorts by update date). 'recent' (default) is newest first; 'oldest' is ascending. Ignored by other operations.recent
offsetNoPagination offset.
billTypeNoBill type code. Required for get and sub-resource operations.
congressYesCongress number (e.g., 118, 119).
operationYesWhich data to retrieve.
billNumberNoBill number. Required for get and sub-resource operations.
toDateTimeNoEnd of date range filter (ISO 8601). Same field semantics as fromDateTime.
fromDateTimeNoStart 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoResult rows. Per-tool item shape is rendered in the markdown body.
noticeNoGuidance when results are empty, a page is past the end, or a caveat applies.
paginationNoPagination metadata: total count and next offset.
totalCountYesTotal results across all pages.
effectiveQueryYesThe browse scope and applied filters.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses important behavioral details beyond annotations. It explains that date filtering is by 'update date — when Congress.gov last touched the record — not by the bill's latest legislative action.' It also specifies parameter requirements for each operation (e.g., 'each requires congress + billType + billNumber'). These nuances add value beyond the readOnlyHint/openWorldHint/idempotentHint annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, information-dense paragraph with three sentences. It front-loads the purpose, states limitations, and enumerates operations and requirements. Although it is somewhat long, every clause adds necessary guidance and no filler is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main capabilities, operation modes, and parameter dependencies, and it explicitly mentions the absence of keyword search. With an output schema present and comprehensive parameter descriptions, the description doesn't need to explain return values. It leaves a minor gap on what 'related' returns, but this is acceptable given the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 adds meaningful parameter relationships and operation-specific constraints: 'list' requires congress, while 'get' and sub-resources require congress + billType + billNumber. It also clarifies the semantics of 'order' (sorts by update date) and 'fromDateTime' (filters by update date), which supplements the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Browse and retrieve U.S. legislative bill data from Congress.gov.' It distinguishes from sibling tools by focusing on bills and lists specific operations (list, get, actions, amendments, etc.). The scope is precise, including the absence of keyword search, which makes 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use each operation: 'Use 'list' to browse (requires congress, defaults to most-recently-updated first), 'get' for full bill detail... or drill into a specific bill with...' It also notes a clear limitation: 'there is no keyword search.' However, it does not explicitly compare against sibling tools (e.g., congressgov_committee_lookup), though it mentions 'committees' as a sub-resource.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congressgov_bill_summariesCongressgov Bill SummariesA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page (1-250).
offsetNoPagination offset.
billTypeNoBill type filter. Requires 'congress'.
congressNoCongress number. Optional — omit for summaries across all congresses.
toDateTimeNoEnd of date range (ISO 8601), filtered on the summary update time. Defaults to now.
fromDateTimeNoStart of date range (ISO 8601), filtered on the summary update time. Defaults to 7 days ago if neither date param is set.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesResult rows. Per-tool item shape is rendered in the markdown body.
noticeNoGuidance when results are empty, a page is past the end, or a caveat applies.
paginationYesPagination metadata: total count and next offset.
totalCountYesTotal results across all pages.
effectiveQueryYesThe browse scope and applied filters.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint. The description adds valuable behavioral context beyond those: date filters apply to summary update time rather than bill action date, results can include recently rewritten summaries of older bills, and each item displays both dates. No contradictions 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three focused sentences: primary purpose, key date behavior, and alternative usage. Every sentence earns its place with no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists and annotations cover safety/idempotency, the description covers essential nuances: purpose, date semantics, defaults, item contents, and sibling differentiation. No critical gaps for selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% per context signals, so baseline is 3. The description adds meaning beyond schema by explaining the non-obvious semantics of fromDateTime/toDateTime (update time vs action date) and the default 7-day window. This is significant but not exhaustive, so 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description opens with 'Browse recent CRS bill summaries' — a specific verb+resource pairing. It clarifies the tool's scope ('at each legislative stage') and explicitly distinguishes it from the sibling tool congressgov_bill_lookup by directing one-bill requests there.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on when to use an alternative ('For summaries of one specific bill, use congressgov_bill_lookup with operation='summaries' instead'). Also explains usage context: useful for 'what's happening in Congress?' and clarifies the meaning of date filters relative to update time, with defaults stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congressgov_committee_lookupCongressgov Committee LookupA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page (1-250).
orderNoSort order for the 'bills' sub-resource. 'recent' (default) returns newest update-date first; 'oldest' returns ascending update-date order. Ignored by other operations.recent
filterNoFilter 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.
offsetNoPagination offset.
chamberNoChamber filter for 'list', or override for 'get' and sub-resources (otherwise inferred from committeeCode prefix).
congressNoCongress number.
operationYesWhich data to retrieve.
committeeCodeNoCommittee 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoResult rows. Per-tool item shape is rendered in the markdown body.
noticeNoGuidance when results are empty, a page is past the end, or a caveat applies.
paginationNoPagination metadata: total count and next offset.
totalCountYesTotal results across all pages.
effectiveQueryYesThe browse scope and applied filters.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only state readOnly/openWorld/idempotent hints. The description adds substantial behavioral context: committee code format (chamber-prefix + abbreviation + 2-digit number), chamber inference from code prefix, order semantics for the 'bills' sub-resource, Senate-only restriction for nominations, client-side fuzzy matching for filter, and the upstream omission of bill titles. All disclosed behaviors align with annotations; no contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence serves a purpose: purpose, code discovery, operation usage, chamber inference, ordering behavior, and data omission/workaround. It is front-loaded with the primary action, follows a logical progression, and avoids filler or repetition of schema definitions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (8 parameters, 5 operations, multiple sub-resources, output schema present), the description covers all critical aspects: operation selection, code discovery, chamber inference/override, ordering behavior, Senate-only sub-resource, upstream data limitations, and recommended chaining to bill_lookup. The presence of an output schema means return value details are not the description's responsibility.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema description coverage is 100%, the description meaningfully enriches parameter understanding. It clarifies that committeeCode can be a code or a name to resolve, chamber is inferred from the prefix unless overridden, order only applies to 'bills' (with concrete 'recent' vs 'oldest' meanings), and filter fetches the full chamber set and matches client-side with approximate labels. This goes well beyond the schema's standalone descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 congressional committees and their legislation, reports, and nominations.' It clearly distinguishes this tool from siblings by identifying its committee-centric scope and enumerating sub-resources. The detailed operational examples (list/filter, get, bills, reports, nominations) further reinforce its unique purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides concrete workflow guidance: use 'list' with optional 'filter' to discover committee codes, then use 'get' or sub-resources. It also explains chamber inference/override and points to chaining congressgov_bill_lookup for missing bill titles. However, it does not explicitly contrast with sibling tools like congressgov_committee_reports or state when not to use this tool, so it falls short of full 'when/when-not' guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congressgov_committee_reportsCongressgov Committee ReportsA
Read-onlyIdempotent
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page (1-250).
offsetNoPagination offset.
congressYesCongress number.
operationYesWhich data to retrieve.
reportTypeNoReport type. Required for get and text operations.
reportNumberNoCommittee report number. Required for get and text operations.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoResult rows. Per-tool item shape is rendered in the markdown body.
noticeNoGuidance when results are empty, a page is past the end, or a caveat applies.
paginationNoPagination metadata: total count and next offset.
totalCountYesTotal results across all pages.
effectiveQueryYesThe browse scope and applied filters.
Behavior3/5

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 context about report types and content but does not disclose additional behavioral traits such as auth requirements, rate limits, or operation-specific behavior. With annotations present, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the tool's action and resource, and every sentence contributes meaningful context (what reports are, report types). There is no fluff or redundancy, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 6 parameters, an output schema, and rich annotations, the description covers the domain (committee reports) and report types, but does not explain the differences between the list/get/text operations. The schema does describe these operations and their required fields, so the tool is still complete enough, but a brief mention of operation semantics would elevate it to 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters are documented in the schema. The description adds value by explaining the report types (hrpt=House, srpt=Senate, erpt=Executive), which is not present in the schema's enum descriptions. This extends the meaning of the reportType parameter beyond the schema, justifying a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Browse and retrieve') and resource ('committee reports from Congress.gov'), clearly distinguishing it from sibling tools like committee_lookup or bill_summaries. It also explains what committee reports contain, leaving no ambiguity about the tool's function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool by explaining that committee reports accompany legislation reported out of committee and include purpose, amendments, dissenting views, and vote. However, it does not explicitly mention alternatives or when not to use this tool, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congressgov_crs_reportsCongressgov Crs ReportsA
Read-onlyIdempotent
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page (1-250).
offsetNoPagination offset.
operationYesWhich data to retrieve.
reportNumberNoCRS report ID (e.g., 'R40097'). Required for 'get'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoResult rows. Per-tool item shape is rendered in the markdown body.
noticeNoGuidance when results are empty, a page is past the end, or a caveat applies.
paginationNoPagination metadata: total count and next offset.
totalCountYesTotal results across all pages.
effectiveQueryYesThe browse scope and applied filters.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnly, openWorld, and idempotent hints. The description adds useful context about report IDs and what 'get' returns, but does not disclose additional behavioral traits such as rate limits, error behaviors, or prerequisites. Given the high annotation coverage, this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two well-structured sentences, front-loaded with the core purpose, followed by essential ID and operation details. Every sentence adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, the description does not need to explain return values. It provides sufficient context about the subject domain, ID format, and operations. It omits mention of pagination parameters, but these are documented in the schema and not critical for selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers all 4 parameters with descriptions, so baseline is 3. The description adds extra meaning by providing report ID format examples (e.g., R40097) and clarifying that 'get' returns authors, topics, summary, and download formats—details not fully in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Browse and retrieve CRS reports' with a specific verb and resource. It differentiates from sibling tools by naming CRS reports and explaining their nature, making it unmistakable which tool to select for this content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly defines the tool's purpose but does not explicitly mention when not to use it or provide alternatives like the sibling tools. It gives clear operational guidance ('Use list to browse... or get for full detail'), but lacks exclusions relative to other congressional tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congressgov_daily_recordCongressgov Daily RecordA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page (1-250).
offsetNoPagination offset.
operationYesWhich data to retrieve.
issueNumberNoIssue number within a volume. Required for 'articles'.
volumeNumberNoVolume number. Required for 'issues' and 'articles'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesResult rows. Per-tool item shape is rendered in the markdown body.
noticeNoGuidance when results are empty, a page is past the end, or a caveat applies.
paginationYesPagination metadata: total count and next offset.
totalCountYesTotal results across all pages.
effectiveQueryYesThe browse scope and applied filters.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint. The description adds behavioral context about the hierarchical navigation structure (volumes → issues → articles), which is useful beyond the annotations. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no redundant words. First sentence states purpose; second explains the navigation flow. Perfectly front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (5 params, 3 operations), the description covers purpose, navigation, and each operation's role. Output schema exists, so return values need no explanation. It is complete for agent understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters. The description adds semantic meaning by mapping each operation to the hierarchy (list for volumes, issues for issues, articles for articles), supplementing the schema's parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Browse the daily Congressional Record — floor speeches, debates, and legislative text published each day Congress is in session.' It uses a specific verb and resource, and distinguishes itself from sibling tools by naming its unique content area.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit navigation guidance: 'Use 'list' to find recent volumes, 'issues' to see what's in a volume, and 'articles' to access individual speeches and debate sections.' It doesn't explicitly mention alternatives, but the hierarchical instructions serve as clear usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congressgov_enacted_lawsCongressgov Enacted LawsA
Read-onlyIdempotent
Inspect

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"}).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page (1-250).
offsetNoPagination offset.
lawTypeNoLaw type — 'pub' (public laws, general application, most common) or 'priv' (private laws, specific individuals or entities). Required for 'get'.
congressYesCongress number.
lawNumberNoLaw number. Required for 'get'.
operationYesWhich data to retrieve.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoResult rows. Per-tool item shape is rendered in the markdown body.
noticeNoGuidance when results are empty, a page is past the end, or a caveat applies.
paginationNoPagination metadata: total count and next offset.
totalCountYesTotal results across all pages.
effectiveQueryYesThe browse scope and applied filters.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, so the description adds value by detailing the returned bill fields (sponsor, actions, summaries, text) and the law citation structure on the laws array. It also explains the difference between list and get operations, which is beyond what structured fields provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each carrying distinct useful information: purpose, operation differentiation, and return format. No filler or redundant details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with two operations, the description covers the key behavioral differences and return content. Combined with 100% schema description coverage and the law-citation example, an agent has enough context to correctly select and invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 depth by defining lawType semantics ('pub' vs 'priv'), operation-specific behavior (list vs get), and provides a concrete JSON example of the law citation, elevating the meaning beyond raw schema entries.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Browse enacted public and private laws from Congress.gov' — a specific verb and resource. It clearly distinguishes list from bill_lookup by noting the filtering capability 'bill_lookup does not offer', and clarifies get returns the origin bill record with a law citation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly positions list as an alternative to bill_lookup for enactment-status and law-type filtering. For get, it describes what is returned, making its use case clear, though it does not name an alternative for get or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congressgov_member_lookupCongressgov Member LookupA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page (1-250).
offsetNoPagination offset.
congressNoCongress number to filter by.
districtNoCongressional district number. Requires stateCode. Use 0 for at-large.
operationYesWhich data to retrieve.
stateCodeNoTwo-letter state code (e.g., 'CA', 'TX').
bioguideIdNoUnique member identifier (e.g., 'P000197'). Required for get/sponsored/cosponsored.
currentMemberNoFilter to currently serving members. Omit to include both current and former members.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoResult rows. Per-tool item shape is rendered in the markdown body.
noticeNoGuidance when results are empty, a page is past the end, or a caveat applies.
paginationNoPagination metadata: total count and next offset.
totalCountYesTotal results across all pages.
effectiveQueryYesThe browse scope and applied filters.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, idempotent, and open-world behavior, lowering the bar. The description adds behavioral context by explaining filter combinations and the dependency on bioguideId for certain operations, which is not fully captured by annotations or schema alone. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two well-structured sentences front-load the main purpose and then detail usage patterns. Every sentence adds functional value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 8 parameters and multiple operations, the description covers the main usage scenarios and limitations. The output schema exists, so return values need not be described. It omits edge cases like pagination or specific parameter requirements, but these are in the schema, making it sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds semantic value by explaining how to combine filters (e.g., stateCode with district, congress with stateCode) and why bioguideId is needed for get/sponsored/cosponsored, going beyond the schema's field-level descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool discovers congressional members and their legislative activity, distinguishing it from sibling tools like bills or committees. It enumerates specific operations (list, get, sponsored, cosponsored), making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear guidance on when to use each operation: 'list' with filters by stateCode, district, congress, or currentMember; 'get' and legislative portfolio operations once a bioguideId is obtained. It also notes 'No name search' as a limitation. However, it doesn't explicitly compare against sibling tools, so it loses a point.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congressgov_roll_votesCongressgov Roll VotesA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page (1-250).
orderNoSort 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
offsetNoPagination offset.
chamberNoChamber 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
sessionYesSession number (1 or 2). Odd years are session 1, even years session 2.
congressYesCongress number.
operationYesWhich data to retrieve.
voteNumberNoRoll call vote number. Required for 'get' and 'members'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoResult rows. Per-tool item shape is rendered in the markdown body.
noticeNoGuidance when results are empty, a page is past the end, or a caveat applies.
paginationNoPagination metadata: total count and next offset.
totalCountYesTotal results across all pages.
effectiveQueryYesThe browse scope and applied filters.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial behavioral context beyond the readOnly/idempotent annotations: house data comes from Congress.gov API, senate from the Senate's LIS feed, House sorting by vote update date with offset=0 returning the newest page, Senate sorting by roll call number, and operation-specific outputs. This is exactly the kind of nuance that annotations alone do not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences: the first states the overall purpose, the second covers chamber selection and data sources, the third enumerates the operations with their specific outputs. Every sentence earns its place, and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and 100% parameter description coverage, the description only needs to provide decision-level context. It covers the key choices (operation, chamber, sorting behavior) and crucial constraints (voteNumber required for certain operations), making the tool fully invocable based on the description plus schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 adds value by explaining operation semantics ('list' returns newest first; 'get' returns question, result, tallies, party breakdown; 'members' returns individual votes), the chamber data sources, and that voteNumber is required for get/members. It does not repeat every parameter but complements the schema effectively.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description explicitly states 'Retrieve U.S. congressional roll call votes and individual member voting positions for either chamber,' which is a specific verb+resource that clearly distinguishes this tool from sibling congressgov tools about bills, committees, reports, etc. It also immediately introduces the house/senate distinction, reinforcing its unique scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear operational guidance: use 'list' to find votes, 'get' for details, and 'members' for individual voting positions, plus how to choose chamber. It does not explicitly name sibling alternatives or state when not to use this tool, but the context is clear enough for an agent to select it for roll-call vote queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

congressgov_senate_nominationsCongressgov Senate NominationsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page (1-250).
offsetNoPagination offset.
ordinalNoBatch 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).
congressYesCongress number.
operationYesWhich data to retrieve.
nominationNumberNoNomination 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

ParametersJSON Schema
NameRequiredDescription
dataNoResult rows. Per-tool item shape is rendered in the markdown body.
noticeNoGuidance when results are empty, a page is past the end, or a caveat applies.
paginationNoPagination metadata: total count and next offset.
totalCountYesTotal results across all pages.
effectiveQueryYesThe browse scope and applied filters.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the tool read-only and idempotent, so the description does not need to restate safety. It adds a non-obvious behavioral trait: multi-part parents (e.g., PN851) carry no activity of their own, with all confirmation pipeline data on children (PN851-1, PN851-2). This explains the parent/child data model and the signal for when partitioning is required, which is exactly the kind of context annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a tight five-sentence paragraph: it leads with the core purpose, immediately moves to actionable operation guidance, then presents the critical exception/partitioning rule. Every sentence earns its place, and the structure front-loads the most important information while keeping the nuance at the end.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (six operations, multi-part nomination edge cases) and the presence of a rich output schema and parameter descriptions, the description fully covers what an agent needs: it defines the resource, lists all operations, explains how to disambiguate parent vs child data, and signals when to use the partitioned form. No critical usage aspect is left unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 tool description reinforces the PN numbering and partitioned form concepts, but these are already thoroughly described in the schema's `nominationNumber` and `ordinal` parameter descriptions (e.g., 'use the partitioned form (e.g. '851-1') for sub-resources'). The description adds narrative context but no new parameter-level semantics beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Browse presidential nominations to federal positions and track the Senate confirmation process' – a specific verb+resource that clearly distinguishes this tool from siblings focused on bills, committees, and members. It also enumerates the distinct operations ('list', 'get', 'actions', etc.), making the tool's scope unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly prescribes which operation to use for what ('Use 'list' to browse, 'get' for nomination detail...') and explains the crucial partitioned-form rule for multi-part nominations (PN851 vs PN851-1). It also tells the agent when the partitioned form is needed: when 'get' on a parent returns no `nominees` array. This is clear, actionable usage guidance beyond the schema's enum.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Remote 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.
    2
    5
    1
    AGPL 3.0
  • A
    license
    -
    quality
    C
    maintenance
    Enables querying legislative data from the LegiScan API, including bills and votes, via natural language through an MCP gateway.
    10
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    MCP server for the Congress.gov API that tracks US federal legislative process, providing tools to search bills and get bill details.
    10
    1
    Apache 2.0

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.