NextBid — Government Bids for AI
Search open U.S. federal, state and local government bids and read their documents. Paid; trial.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"data": {
"url": "https://api.nextbid.us/mcp"
}
}
}Remote endpoints
https://api.nextbid.us/mcpstreamable-httpWhat it can do
Tool inventory
Tools (14)
🟢search_opportunities(tradelines, q, specialties, states, city, ...)
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
{
"type": "object",
"properties": {
"tradelines": {
"type": "array",
"items": {
"type": "string"
},
"description": "Trade ids or any alias from list_tradelines: e.g. lowvoltage, \"access control\", \"badge readers\", \"structured cabling\", roofing. Omit for all trades."
},
"q": {
"type": "string",
"description": "Keywords (full-text over title and description)."
},
"specialties": {
"type": "array",
"items": {
"type": "string"
},
"description": "Your 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."
},
"states": {
"type": "array",
"items": {
"type": "string"
},
"description": "Two-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."
},
"city": {
"type": "string",
"maxLength": 80,
"description": "A 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)."
},
"county": {
"type": "string",
"maxLength": 80,
"description": "A 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)."
},
"location_match": {
"type": "array",
"items": {
"type": "string",
"enum": [
"work_site",
"named_in_title",
"service_area",
"mentioned_in_description",
"buyer_only"
]
},
"description": "Keep only these location tiers (needs city or county). Default: all five."
},
"tradeline_match": {
"type": "string",
"enum": [
"validated",
"loose"
],
"description": "validated (default): a trade matches only with NAICS/PSC or text evidence for that trade; loose: tag only (noisier)."
},
"agencies": {
"type": "array",
"items": {
"type": "string"
},
"description": "Agency name fragments, e.g. [\"Sacramento\", \"SMUD\"]."
},
"sources": {
"type": "array",
"items": {
"type": "string"
},
"description": "Restrict to sources: sam.gov, dibbs, calprocure, opengov, planetbids, publicpurchase, bonfire, instantmarkets."
},
"set_asides": {
"type": "array",
"items": {
"type": "string"
},
"description": "Set-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."
},
"due_within_days": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "Only opportunities closing within N days."
},
"open": {
"type": "boolean",
"description": "Default true: only opportunities that are still open. false also returns closed and past-deadline solicitations."
},
"sort": {
"type": "string",
"enum": [
"deadline",
"relevance"
]
},
"page": {
"type": "integer",
"exclusiveMinimum": 0
},
"page_size": {
"type": "integer",
"minimum": 0,
"maximum": 100,
"description": "Results per page (default 25). 0 = counts and facets only. Trial max 25, paid max 100; above the plan max is a 400."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_opportunity(nb_id)
Full record for one opportunity by NextBid id (NB########): description, AI summary, buyer contacts (current and historical), amendments, filed documents. One request; counts as a delivered solicitation the first time this account receives it.
Input Schema
{
"type": "object",
"properties": {
"nb_id": {
"type": "string",
"pattern": "^NB\\d{8}$"
}
},
"required": [
"nb_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡list_documents(nb_id)
The document set for one opportunity: source_documents (listed by the source engine: name, size, sha256, source url, whether NextBid stores the original) and nextbid_documents (the current Document 0 and normalized text, readable with read_file). Pipeline artifacts are counted, not listed. Names and metadata only.
Input Schema
{
"type": "object",
"properties": {
"nb_id": {
"type": "string",
"pattern": "^NB\\d{8}$"
}
},
"required": [
"nb_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_document_download(nb_id, sha256)
A time-limited download link for one stored original document of an opportunity (sha256 from list_documents, where stored is true). One request; the file is served by NextBid's object store, not through the API.
Input Schema
{
"type": "object",
"properties": {
"nb_id": {
"type": "string",
"pattern": "^NB\\d{8}$"
},
"sha256": {
"type": "string",
"pattern": "^[0-9a-f]{64}$"
}
},
"required": [
"nb_id",
"sha256"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_evidence(nb_id, claims_offset, claims_limit)
The evidence for one opportunity: every indexed document (identity, version, hashes, whether the original is downloadable, whether the AnyDoc extracted text is verified) and the Graphify claims - each a GENERATED label with the SOURCE passage it cites (document, UTF-16 offsets, exact quoted text) and a verification status (RESOLVED = offsets match the hash-verified text and the graph quote). Gaps (pending custody, unavailable extraction, unresolved citations) are listed explicitly. One request.
Input Schema
{
"type": "object",
"properties": {
"nb_id": {
"type": "string",
"pattern": "^NB\\d{8}$"
},
"claims_offset": {
"type": "integer",
"minimum": 0
},
"claims_limit": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 1000
}
},
"required": [
"nb_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_document_text(nb_id, sha256, max_chars)
The AnyDoc extracted text of one document (sha256 = the text sha256 or the original sha256 from get_evidence), verified against its indexed hash. Offsets in get_evidence index into this text. One request.
Input Schema
{
"type": "object",
"properties": {
"nb_id": {
"type": "string",
"pattern": "^NB\\d{8}$"
},
"sha256": {
"type": "string",
"pattern": "^[0-9a-f]{64}$"
},
"max_chars": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2000000
}
},
"required": [
"nb_id",
"sha256"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_files(nb_id, include)
The current stored documents for one opportunity: Document 0 markdown/json and normalized attachment markdown (class document0 / normalized_text). include="all" adds pipeline artifacts (case files, graphs, packets) and superseded Document 0 generations. Use read_file to fetch one.
Input Schema
{
"type": "object",
"properties": {
"nb_id": {
"type": "string",
"pattern": "^NB\\d{8}$"
},
"include": {
"type": "string",
"enum": [
"current",
"all"
]
}
},
"required": [
"nb_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢read_file(nb_id, path, max_chars)
Read one stored text artifact of an opportunity (path from list_files). Returns the text, truncated to max_chars (default 60,000).
Input Schema
{
"type": "object",
"properties": {
"nb_id": {
"type": "string",
"pattern": "^NB\\d{8}$"
},
"path": {
"type": "string",
"minLength": 1
},
"max_chars": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 400000
}
},
"required": [
"nb_id",
"path"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡corpus_stats
The corpus numbers with their definitions: total_solicitations (distinct, duplicates excluded), open (listed open by the source with the deadline ahead or unstated, or deadline ahead with no status; passed deadlines and unknown status are separate: listed_open_past_deadline, status_unknown), due_30d (known deadline only), open_set_asides (distinct open solicitations designated under any supported program; each counts once; open competition excluded), open_set_aside_mentions (title language only), set_asides_by_program, unmapped_set_aside_values (for review), open by source, documents, as_of and replica_as_of.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡list_set_asides
Set-aside and small-business programs NextBid recognizes (federal SBA programs, California SB/DVBE, open competition): id, name, level, what it means, official reference, aliases and today's counts split into open_designated (source-marked) and open_mentioned (title language only). Use an id or alias in search_opportunities.set_asides. Never an eligibility determination.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪my_account
The account's meter: plan, allowance used and remaining, period reset or trial expiry, keys, what counts as a call, how to upgrade, and the business profile. Free.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪mark_pursuit(nb_id, status, note)
Record that the customer is watching, pursuing, has submitted, won, lost or dropped an opportunity. Call it only when the customer says so; reading a bid is never a pursuit. Free.
Input Schema
{
"type": "object",
"properties": {
"nb_id": {
"type": "string",
"pattern": "^NB\\d{8}$"
},
"status": {
"type": "string",
"enum": [
"watching",
"pursuing",
"submitted",
"won",
"lost",
"dropped"
]
},
"note": {
"type": "string",
"maxLength": 500
}
},
"required": [
"nb_id",
"status"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_tradelines
The trade catalog: each trade id with its name, description, specialties and search aliases, plus today's open count. Use an id or any alias in search_opportunities. Specialties describe supported categories, not open bids.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪my_usage
The account's meters: requests used and remaining, unique solicitations delivered and remaining, plan period or trial expiry. Free.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence