Skip to main content
Glama

NextBid — Government Bids for AI

search_opportunities

Search open government solicitations (SAM.gov, DLA DIBBS, CalProcure, OpenGov, PlanetBids, PublicPurchase, Bonfire, and agency notices syndicated by InstantMarkets) in NextBid's normalized corpus. Returns one deduplicated record per opportunity with agency, deadline, codes, document status and a source link, plus total and facets. Metered on two account meters: one request per call, and each solicitation the first time it reaches the account (repeats are free on that meter). page_size 0 = counts and facets only. Trial: 100 requests and 250 solicitations per account, page_size up to 25. If the solicitation allowance runs out mid-page, delivery.truncated is true and delivery.withheld says how many were held back.

Input Schema

NameRequiredDescriptionDefault
qNoKeywords (full-text over title and description).
cityNoA city (needs states). Keeps only rows tied to it; each row says how in location_match: work_site (place of performance), named_in_title, service_area (needs county), mentioned_in_description (work site not confirmed) or buyer_only (only the buyer's name/office; not the work site).
openNoDefault true: only opportunities that are still open. false also returns closed and past-deadline solicitations.
pageNo
sortNo
countyNoA county name without 'County' (needs states), e.g. "Riverside". Matches the record's service area or a county named in the title (service_area) or description (mentioned_in_description).
statesNoTwo-letter states, e.g. ["CA"]. Matched on the job location (place of performance, service area, buyer state, CalProcure=CA); each result carries a location object with its basis.
sourcesNoRestrict to sources: sam.gov, dibbs, calprocure, opengov, planetbids, publicpurchase, bonfire, instantmarkets.
agenciesNoAgency name fragments, e.g. ["Sacramento", "SMUD"].
page_sizeNoResults per page (default 25). 0 = counts and facets only. Trial max 25, paid max 100; above the plan max is a 400.
set_asidesNoSet-aside programs from list_set_asides: small_business, 8a, hubzone, sdvosb, wosb, isbee, california_sb_dvbe, open, or any alias ("8(a)", "HUBZone", "DVBE"). Results carry set_aside_basis: designated (the source marked it) or mentioned (title language only). Not an eligibility determination.
tradelinesNoTrade ids or any alias from list_tradelines: e.g. lowvoltage, "access control", "badge readers", "structured cabling", roofing. Omit for all trades.
specialtiesNoYour specialties, e.g. ["access control", "surveillance cameras", "fire alarm"]. Never filters: all matches stay; those naming a specialty in the title (2) or description (1) come first, each row lists specialty_matches.
location_matchNoKeep only these location tiers (needs city or county). Default: all five.
due_within_daysNoOnly opportunities closing within N days.
tradeline_matchNovalidated (default): a trade matches only with NAICS/PSC or text evidence for that trade; loose: tag only (noisier).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does it well: it discloses two metering dimensions (per request and per first-seen solicitation, repeats free), trial vs paid caps, the 400 on exceeding plan max, and mid-page truncation semantics via delivery.truncated and delivery.withheld. These are exactly the operational traits an agent cannot get from the schema.

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?

Front-loaded with the what-and-where, then returns, then metering, then edge cases. Dense but nearly every sentence earns its place given 16 parameters and no annotations; only the metering paragraph runs long enough to risk being skimmed.

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?

For a 16-parameter tool with no output schema and no annotations, it covers return shape (agency, deadline, codes, document status, source link, total, facets) and failure modes at page boundaries. It stops short of clarifying how results hand off to get_opportunity or the document siblings, which is the main remaining gap.

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 88%, so the schema already carries most parameter meaning and baseline is 3. The description still adds value on top: page_size 0 = counts/facets only, trial max 25 vs paid max 100 with a 400 above the plan cap, and the fact that specialties never filter but only re-rank.

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

Purpose4/5

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

Specific verb+resource: 'Search open government solicitations ... in NextBid's normalized corpus,' with the source list and the shape of the returned record spelled out. It clearly reads as the search entry point, but it never names or contrasts a sibling such as get_opportunity (single fetch) or corpus_stats, so an agent must infer the boundary itself.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: defaults (open=true), the page_size 0 shortcut for counts/facets, and cross-references to list_set_asides and list_tradelines for valid parameter values. There is no explicit when-to-use-this-vs-get_opportunity guidance and no exclusions, which leaves real routing ambiguous.

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.

Resources