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

A
Description quality
100%
Schema completeness
63%
Naming quality
94%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,591Tokens (tool definitions)
~1.2 KBTypical response size
Significant attention impact (2.02% of 128k context)

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-http

What it can do

Tool inventory

Tools (14)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded14 tools