Skip to main content
Glama
cliwant

mcp-sam-gov

opengov_list_governments

Read-only

Find active US state/local government procurement portals on OpenGov by state or name, then use the returned code to search solicitations.

Instructions

List the government portals on OpenGov Procurement (formerly ProcureNow) — the directory for opengov_search_solicitations (keyless; api.procurement.opengov.com). OpenGov Procurement hosts the live open-solicitation portals of 525+ US state/local governments (cities, counties, school & special districts across 42 states + DC). The WHOLE directory arrives in ONE keyless GET and is filtered client-side: state (2-letter), query (case-insensitive name substring); limit(1..200)/offset. Only ACTIVE, non-internal portals are returned. Output: { governments:[{ code, name, city, state, website }] } + honest _meta. Feed a result's code to opengov_search_solicitations. HONESTY: this consumes ONLY the anonymous endpoints the public portal itself calls (the official key-gated api-key API is NOT used) — genuinely keyless; totalAvailable is the EXACT filtered portal count (never the page length); a 429/5xx/timeout THROWS (never a fake empty); a non-array body ⇒ schema_drift. STATE-LEVEL bid feeds on open-data portals are NOT in this directory: TX TxDOT lettings, advertised and taking bids = socrata_query data.texas.gov qh8x-rm8r; IL CDB capital bids that are ANTICIPATED and NOT YET POSTED = socrata_query data.illinois.gov 6rb8-ntpm (~48 rows, not IL's full register). Map: resource samgov://data-map/state-local.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoPortals per page, 1..200, default 50.
queryNoCase-insensitive name substring filter (client-side), e.g. 'county', 'school'. Optional.
stateNo2-letter US state filter (client-side), e.g. 'CA', 'FL'. Optional.
offsetNo0-based offset; page with _meta.pagination.nextOffset. totalAvailable = exact filtered portal count.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.12.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already mark readOnlyHint and openWorldHint, but the description goes well beyond: it discloses the keyless endpoint behavior, client-side filtering, active/non-internal portal filtering, exact totalAvailable semantics, error behavior (429/5xx/timeout throws), and schema-drift detection. This richly informs an agent about edge cases without contradicting 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 long but well-structured and front-loaded with the core purpose, followed by parameters, output, honesty notes, and exclusions. Some scope detail (525+ governments, 42 states + DC) is useful context rather than filler. It earns most of its length, though it could be tightened slightly.

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?

Despite having no output schema, the description specifies the output shape, the pagination metadata, error behavior, keyless access, and relevant alternatives. It also maps to a data resource. For a list tool with four optional parameters, nothing essential is missing.

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 value by explaining that state/query filtering is client-side, specifying limit range 1..200, offset pagination with _meta.pagination.nextOffset, and clarifying that totalAvailable is the exact filtered count rather than page length. This goes beyond the schema's basic 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: 'List the government portals on OpenGov Procurement,' and immediately frames it as 'the directory for opengov_search_solicitations.' It clearly distinguishes this tool from the search tool that consumes its output and from sibling tools.

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 states when to use this tool ('directory for opengov_search_solicitations'), what to do with results ('Feed a result's code to opengov_search_solicitations'), and explicitly names exclusions: state-level bid feeds are NOT in this directory and are handled by socrata_query with specific datasets. This is exemplary alternative routing.

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

Deploy Server

Other Tools