Skip to main content
Glama
cliwant

mcp-sam-gov

opengov_search_solicitations

Read-only

Search a government's public solicitations on OpenGov Procurement by portal slug. Filter status 'open' to find live bids with deadlines, contacts, and links.

Instructions

List a government's public solicitations on OpenGov Procurement (keyless; api.procurement.opengov.com, POST /project/list with the required publicView gate). Input governmentCode (the portal slug from opengov_list_governments, e.g. 'santacruzca', 'orlando', 'u-46'; REQUIRED), limit(1..100)/offset. Returns { governmentCode, solicitations:[{ id, title, solicitationNumber, status, type, department, releaseDate, proposalDeadline, contactName, link }] } + honest _meta. ★STATUS: status is surfaced VERBATIM — open = currently ACCEPTING responses; pending/evaluation/closed are ALSO returned (publicView shows all public projects), so filter status==='open' for live bids. link is the public portal page. HONESTY: totalAvailable = the API's count = the org's TOTAL public-project count (all statuses), NEVER the page length and NOT an open-only count (a note discloses this); pagination is the API's fixed page (offset is snapped to the page boundary, disclosed); a genuine no-match ⇒ complete:true/returned:0; a 429/5xx/timeout THROWS (never a fake empty); a non-array projects ⇒ schema_drift; a bad governmentCode ⇒ invalid_input pre-fetch. Genuinely keyless (the key-gated official API is NOT used). 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
limitNoSolicitations per page, 1..100, default 50 (→ API page size).
offsetNo0-based offset (snapped to the API's fixed page boundary). Page with _meta.pagination.nextOffset.
governmentCodeYesThe OpenGov portal slug (from opengov_list_governments `code`), e.g. 'santacruzca', 'orlando', 'u-46'. REQUIRED. Lowercase alnum/hyphen; a bad slug ⇒ invalid_input pre-fetch.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.12.0

TDQS

A5/5.0
Behavior5/5

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

Annotations already signal readOnlyHint=true and openWorldHint=true, and the description adds substantial behavioral context: status is returned verbatim, non-open statuses are included, totalAvailable reflects the total project count rather than page length, offset is snapped to page boundaries, errors throw rather than returning fake empties, and bad government codes trigger invalid_input pre-fetch. 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?

The description is longer than typical, but it is organized with bold section labels and each clause carries operational information. The purpose is front-loaded, and the detailed caveats about status semantics, count meaning, pagination, errors, and alternative data sources are load-bearing rather than padding.

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?

There is no output schema, so the description supplies a complete return shape and the non-obvious semantics an agent must know: status verbatim, all statuses returned, totalAvailable meaning, page snapping, throw behavior, and state-level alternatives. This is more than sufficient for correct selection and invocation.

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 coverage is 100%, the description adds meaning beyond the field docs: governmentCode is the portal slug sourced from opengov_list_governments with concrete examples, limit has a default and range, and offset is explained as page-boundary-snapped with _meta.pagination.nextOffset. This materially helps an agent pass correct values.

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 opening sentence names the verb ('List'), the resource ('a government's public solicitations'), and the platform (OpenGov Procurement), and gives the API endpoint. It is clearly distinguished from nearby siblings by explicitly carving out state-level feeds that belong to socrata_query and linking to opengov_list_governments for the slug.

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?

The description says when to use the tool (public solicitations for an OpenGov government slug) and when not: state-level bid feeds such as TX TxDOT lettings and IL CDB anticipated bids are explicitly routed to socrata_query with dataset IDs. It also provides task-level guidance to filter status==='open' when the agent wants live bids.

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