Open & historical US government bid solicitations from city/county portals — updated daily
Two tools with clear, detailed descriptions and well-structured schemas. open_bids_search has excellent documentation (250+ chars) explaining use cases and filtering options. gov_bids_jurisdictions is minimal but adequate. Both tools have proper JSON Schema with typed parameters and enums. However, output schemas are not formally documented, LLMs must infer response structure from description text. Parameter descriptions are strong (e.g., jurisdiction, keyword, closing_within_days), but no explicit output schema definition exists. Error handling returns generic error objects without recovery guidance. No tool annotations (readOnlyHint, idempotentHint) despite both being read-only operations.
List the US city & county procurement portals covered by open_bids_search, with each jurisdiction key, name, and current open-bid count.
Find OPEN US government bid solicitations (RFPs/RFQs/IFBs) that vendors can currently respond to, from city & county procurement portals — updated daily. Filter by keyword (matches solicitation title/reference), jurisdiction, and closing window. Returns each opportunity with title, reference number, awarding jurisdiction, close date, and the URL to respond. By default returns OPEN bids sorted by soonest close date; set status to 'closed' or 'all' to search past solicitations too (we retain history). Use for 'what is <city/county> currently bidding out' or 'open RFPs for <keyword>'. This is LIVE OPEN BIDS (for awarded contracts use gov_contracts_search).
Output schemas not formally documented. LLMs must infer response structure from description text alone. open_bids_search returns {status, count, open_bids: [{jurisdiction, jurisdiction_name, title, reference, close_date, status, url, source}]} and gov_bids_jurisdictions returns {count, jurisdictions: [{key, name, open_bids}]}, but these are not declared in tool definitions.
Error handling returns generic {error: string} without recovery guidance. When credentials are missing or API fails, LLMs receive no actionable next steps. Should return categorized errors (retryable, user-fixable, fatal) with suggestions.
Tool annotations missing. Both tools are read-only and idempotent, but lack readOnlyHint and idempotentHint annotations. This prevents agents from optimizing retry logic and caching strategies.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
gov_bids_jurisdictions description is minimal (72 chars). While adequate, it lacks context on when to call it (e.g., 'Call this first to discover available jurisdiction keys for filtering open_bids_search').
No pagination guidance in open_bids_search description. While limit parameter exists (max 100), description should clarify that results are capped and sorted by close_date, and suggest pagination strategy for large result sets.