Skip to main content

company_gov_opportunities next channel

Status: Modified (additive output fields resolutionStatus + matchedEntityName, plus description fixes; parameters and existing output fields unchanged) This tool is on the private next MCP channel for allow-listed orgs. When promoted, this file moves to mcp-tools/company-gov-opportunities.md.

Find open federal solicitations where a specific company is the incumbent contractor or a likely bidder, based on its NAICS codes and existing contract portfolio. Resolves the company via SAM.gov, then searches for matching opportunities. Use when a user names ONE specific company and asks whether it holds or could win federal contracts, is an incumbent, or has open solicitations to bid on.

Result interpretation: check resolutionStatus. "resolved" means the company was found in SAM.gov (matchedEntityName holds its canonical legal name); a "resolved" company with totalOpportunities: 0 is NORMAL and expected for most companies — do not retry or invent a reason. "not_found" (matchedEntityName null) means the company is not registered in SAM.gov, so no opportunity search ran.

Integration required: datagov (SAM.gov / Data.gov) Cache schema version: super.getCacheSchemaVersion() + 1 (differs from base — the output envelope gained fields, so a next caller will not be served a v1-shaped cached payload that lacks resolutionStatus / matchedEntityName)

Parameters

ParameterTypeRequiredDefaultDescription
companyDomainstringRequiredThe company domain to look up (e.g. "boozallen.com"), 1–253 chars. Protocol prefixes (http://, https://), leading www., and trailing paths/queries/fragments are accepted and stripped automatically; case is normalized.
includeIncumbentOnlybooleanOptionalfalseOnly show opportunities where the company is the incumbent.
daysUntilDeadlinenumberOptionalFilter by deadline (e.g. 90 = opportunities closing in the next 90 days). Range 1–365.
limitnumberOptional25Maximum number of opportunities to return (1–50).

Response Format

{
"companyName": "BOOZ ALLEN HAMILTON INC.",
"companyDomain": "boozallen.com",
"resolutionStatus": "resolved",
"matchedEntityName": "BOOZ ALLEN HAMILTON INC.",
"samEntity": {
"uei": "ABC123DEF456",
"cageCode": "1ABC2",
"legalBusinessName": "BOOZ ALLEN HAMILTON INC."
},
"opportunities": [
{
"opportunityId": "SOL-2026-00123",
"title": "Enterprise IT Modernization Services",
"agency": "Department of Defense",
"responseDeadline": "2026-10-15T17:00:00Z",
"daysUntilDeadline": 64,
"incumbentStatus": "incumbent",
"matchReason": "Existing contracts with Department of Defense in NAICS 541512",
"link": "https://sam.gov/opp/SOL-2026-00123"
}
],
"totalOpportunities": 1
}

Response fields

FieldMeaning
resolutionStatusNew in next. Whether the company was resolved in the SAM.gov registry. "resolved" = found (matchedEntityName populated); "not_found" = could not resolve (no opportunity search ran).
matchedEntityNameNew in next. Canonical SAM.gov legal business name when resolved; null when the company could not be resolved. Distinct from the companyDomain echo.
companyNameResolved company name from SAM.gov (when resolved) or the name derived from the domain (when not found).
companyDomainThe normalized company domain that was looked up.
samEntitySAM.gov entity registration details; omitted when the company was not found. Contains uei, optional cageCode, and legalBusinessName.
opportunitiesArray of matching federal opportunities with incumbent status. Empty when none match or the company was not resolved.
opportunities[].opportunityIdSolicitation identifier.
opportunities[].titleSolicitation title.
opportunities[].agencyContracting agency.
opportunities[].responseDeadlineResponse deadline (ISO 8601); may be absent.
opportunities[].daysUntilDeadlineDays remaining until the response deadline; may be absent.
opportunities[].incumbentStatusOne of incumbent, likely_bidder, or unknown.
opportunities[].matchReasonHuman-readable explanation of why the opportunity matched (agency and/or NAICS overlap).
opportunities[].linkLink to the opportunity on SAM.gov.
totalOpportunitiesTotal number of matching opportunities (before limit truncation). A "resolved" company with 0 here is normal.

Example Usage

{
"tool": "company_gov_opportunities",
"parameters": {
"companyDomain": "boozallen.com",
"daysUntilDeadline": 90,
"limit": 25
}
}
  • search_gov_opportunities — use for cross-company keyword/agency/NAICS opportunity searches (not tied to one company). (No next-channel variant; links to the stable page.)
  • company_gov_relationships — use for prime/subcontractor teaming relationships. (No next-channel variant; links to the stable page.)
  • company_contracts — use for a company's existing awarded contracts (not open opportunities).

Changelog

2026-08-12 — Resolution status output fields + description fixes (PR 1/2)

Availability: Live on next only (allow-listed orgs via POST /api/mcp/next). This entry graduates to the public channel when promoted in PR 2/2.

Why this changed: A live audit found the tool returned totalOpportunities: 0 for every company tried — including federal heavyweights (Booz Allen, Palantir, Cisco, Microsoft) — with the EXACT same empty shape as a fabricated domain. A caller could not distinguish "company resolved in SAM.gov but has no open matching solicitations" (normal, expected for most companies) from "the domain could not be resolved". The description also lacked when-NOT-to-use guidance and neighbor cross-references, so a model could equally reach for search_gov_opportunities or company_gov_relationships.

Additive changes

  • Added resolutionStatus + matchedEntityName output fields. resolutionStatus is "resolved" (found in the SAM.gov registry) or "not_found" (could not resolve — no opportunity search ran). matchedEntityName is the canonical SAM.gov legal business name when resolved, or null when not. Together they let callers attribute a totalOpportunities: 0 result to "resolved, no open matches" vs "could not resolve", which v1 could not express.
  • Added when-to-use / when-NOT-to-use with neighbor cross-references. Use when a user names ONE specific company and asks whether it holds or could win federal contracts, is an incumbent, or has open solicitations. Do NOT use for cross-company keyword/agency/NAICS searches (use search_gov_opportunities) or for prime/subcontractor teaming relationships (use company_gov_relationships); for a company's existing awarded contracts use company_contracts.
  • Documented that totalOpportunities: 0 on a resolved company is normal. The description now states that a "resolved" company with totalOpportunities: 0 is expected for most companies and is NOT an error to retry or rationalize.

What stayed the same

  • All parameters (companyDomain, includeIncumbentOnly, daysUntilDeadline, limit) are unchanged.
  • The existing envelope fields (companyName, companyDomain, samEntity, opportunities[], totalOpportunities) are unchanged — the two new fields are additive.
  • Tool key (company_gov_opportunities), credit cost, and the SAM.gov/USAspending resolution + scoring logic are identical to v1.

Cache schema version: super.getCacheSchemaVersion() + 1 — the output envelope gained fields, so a next caller must not be served a v1-shaped cached payload.