Skip to main content
Glama

congressgov-mcp-server

Congress.gov Enacted Laws

congressgov_enacted_laws
Read-onlyIdempotent

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

Input Schema

TableJSON 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, 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'.
operationYesWhich data to retrieve.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
lawNoDynamic upstream JSON record.
dataNoResult rows. Per-tool item shape is rendered in the markdown body.
errorNoPresent when the call failed. Absent on success.
noticeNoGuidance when results are empty, a page is past the end, or a caveat applies.
paginationNoPagination metadata: total count and next offset.
totalCountNoTotal results across all pages.
effectiveQueryNoThe browse scope and applied filters.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.4/5.0
Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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.