Skip to main content
Glama
govconapi

io.github.govconapi/govconapi

Official

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
GOVCONAPI_KEYYesYour GovCon API key. Must start with 'gca_' (e.g., gca_your_key_here).

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
search_opportunitiesA

Search federal contract opportunities (SAM.gov data) with filters.

At least one filter is required. Use specific values:
- naics: 6-digit NAICS code, e.g. "541330" (engineering services)
- psc: 1-4 char Product Service Code, e.g. "D302" (IT services)
- naics_multiple: comma-separated NAICS codes, e.g. "541511,541512"
- agency: agency name substring (use full names, e.g. "FEDERAL EMERGENCY MANAGEMENT" not "FEMA"; use lookup_agency tool first)
- keywords: full-text search across title, agency, description (min 3 chars)
- state: 2-letter state code (CA, TX) or full name (California)
- set_aside: a plain term (HUBZone, WOSB, 8(a), Veteran, Small Business, Indian Small
  Business, Buy Indian, ...) or an exact SAM code (SBA, SDVOSBC, HZC, ...). An
  unrecognized value returns 400 WITH THE FULL VALID-TERM LIST in the response body, retry using that list rather than guessing another synonym.
- notice_type: Solicitation, Combined Synopsis/Solicitation, Presolicitation, Sources
  Sought, Award Notice, Justification, Justification and Approval (J&A), Special
  Notice, Sale of Surplus Property, Modification/Amendment/Cancel, Consolidate/
  (Substantially) Bundle. Comma-separate several to match any. Invalid values 400
  the same way as set_aside, the full list comes back in the error.
- posted_after / due_before / due_after / date_from / date_to: YYYY-MM-DD. A
  date_from before your plan's history window is not silently dropped, it's
  clamped, and the response's `window` block (`clamped`, `date_from_requested`,
  `reason`) discloses exactly what happened.
- value_min / value_max: USD amounts (only Award Notice records have values)
- has_attachments: true/false
- sort_by: posted_date, due_date, award_amount, title, agency, relevance (used
  automatically when keywords is set and sort_by is omitted)
- sort_order: asc | desc (default desc), e.g. sort_by=due_date + sort_order=asc for
  "what's due soonest first"
- limit: max 1000

Returns JSON with `data` (matching opportunities), `pagination`, `filters_applied`,
and (only when a date_from clamp applied) `window`. For full-database sync use the
recent_changes tool instead. Each result's `award_uei_sam` (when present) is the same
identifier get_entity/get_company_profile take as `uei`, and `notice_id` is what
get_opportunity takes.
get_opportunityA

Fetch a single contract opportunity by its notice_id.

Returns the full record including agency, contacts, description, attachments,
award data (if applicable), and 50+ structured fields.
recent_changesA

List opportunities added or updated since a timestamp.

Use this for incremental sync instead of paginating through search results.
Keyset-based, so depth doesn't degrade performance.

- since: ISO 8601 timestamp, e.g. "2026-04-12T00:00:00Z"
- limit: max 1000 per page

Returns `data` (changed records), `pagination`, and `sync.server_time`, save server_time and pass it as `since` on your next call.
lookup_agencyA

Resolve an agency acronym or partial name to canonical SAM.gov agency strings.

SAM.gov stores agency names like "HOMELAND SECURITY, DEPARTMENT OF.FEDERAL
EMERGENCY MANAGEMENT AGENCY..." not "FEMA". Use this to find the right
substring to use as the `agency` filter on search_opportunities, search_companies,
or most other tools that take an `agency` parameter. EXCEPTION: search_forecasts'
`agency` filter uses its own natural-language agency names (e.g. "Department of
Health and Human Services"), not this SAM-hierarchy string, this tool's suggestion
will not match there.

- query: acronym (FEMA, DoD, NASA), partial name, or full agency name

Returns matching agencies grouped by canonical name with the suggested
filter value to use. `suggested_filter_value` is the CANONICAL grouping, which can
be much broader than one component of it (e.g. a sub-agency's contracting office
grouped under its parent's canonical name), if the match count looks too high, use
one of that group's own `raw_variations` entries instead for a narrower filter.
check_exclusionA

Check the SAM.gov exclusions list (debarred / suspended entities).

Use this before subcontracting or teaming, and again periodically post-award to
catch a teammate getting excluded mid-performance. Provide at least one of:
- name: company or individual name (partial match)
- uei: Unique Entity ID (same identifier search_companies/search_entities return)
- cage_code: CAGE code

Returns matching exclusion records with the reason, agency, and dates.
search_awardsA

Search SAM Award Notices (who won, how much, when), a SPARSE, self-reported subset of federal awards (~52K notices), NOT the comprehensive federal award record. ~60% of contractors here have only a single notice; a diversified contractor's real award book is usually much bigger than what shows here. For the comprehensive, authoritative award record (10.6M+ FPDS/USAspending transactions), use search_contracts instead, reach for THIS tool specifically when the question is about a SAM-noticed award, not the company's overall federal business.

- awardee: company name (partial match)
- uei: Unique Entity ID
- naics: 6-digit NAICS code
- agency: agency name substring
- value_min / value_max: USD
- date_from / date_to: YYYY-MM-DD
- limit: max 1000
discover_officesA

Find which contracting offices buy a NAICS code, ranked, each with its own win-facts.

Market Research tool: answers "who actually buys this, not just which department."
Competition and set-aside behavior vary a lot office-to-office even within one agency;
this ranks offices instead of reporting only a department-wide average.

- naics: 2-6 digit NAICS code, required (e.g. "541512")
- sort: biggest (total obligations) | most_open (highest full-and-open share) |
  most_setaside (highest set-aside share)
- limit: max 100

Returns each office's code, name, total obligations, competition rate, and set-aside
share for this NAICS. Pass an office's `office_code` to get_office_profile for the
full picture of how that office buys across ALL NAICS, not just this one.
Free on every plan. No shared identifier (UEI/PIID) links out from this tool to
contract- or company-level tools, office_code is its own namespace.
get_office_profileA

Get one contracting office's full buying profile: obligations, competition, set-aside lean, and every NAICS it buys.

Market Research tool. Use this after discover_offices (or when you already have an
office_code from a contract/award record) to see an office's behavior across its
ENTIRE buying pattern, not just one NAICS.

- office_code: the office's FPDS office code (from discover_offices or a contract record)

Free on every plan. Returns 404 if the office has no FPDS activity on record; 503
briefly if the office index is still building (retry).
list_organizationsA

Search the federal agency organization tree (~907 departments/agencies/offices).

Market Research tool. Use `search` to resolve a name/acronym to an org, or
`parent_id` to list an agency's direct sub-units. Free tier.

- type: DEPARTMENT or AGENCY
- cgac: Treasury account code (e.g. "097" for DoD), NOT the same code space as
  `awarding_agency_code` on contract/award tools; there is no shared identifier
  between federal_hierarchy and contract-level data, cgac requires a separate
  lookup, it does not chain directly
- parent_id: filter to direct children of one organization_id
- hierarchy_level: 1 = root department
- search: matches canonical name, short name, or any alternative name (min 2 chars)
- limit: max 1000

Returns each org's organization_id, pass that to get_organization for the full
record with parent/children/ancestors inline, or to list_organizations again as
parent_id to page through its children.
get_organizationA

Get one federal organization's full record, with its parent, immediate children, and full ancestor chain (root department down to immediate parent) all included in one call.

Market Research tool. This already includes what get_org_relationships would give
you separately, use this first; only call get_org_relationships if you want JUST
the children or JUST the ancestors without the rest of the record (a narrower,
cheaper call for e.g. listing every sub-agency of a department).

- organization_id: from list_organizations

Free tier. 404 if the organization_id doesn't exist.
get_org_relationshipsA

Get JUST an organization's immediate children or its ancestor chain, without the rest of the record (get_organization already includes both if you need everything).

Market Research tool, narrow form: e.g. "list every sub-agency under DoD" doesn't
need DoD's own full record, just its children.

- organization_id: from list_organizations or get_organization
- direction: "children" (immediate sub-organizations) | "ancestors" (root department
  down to immediate parent; empty if this org is already a root department)

Free tier. 404 (ancestors direction only) if organization_id doesn't exist.
search_forecastsA

Search agency procurement forecasts, the only FORWARD-LOOKING layer in this API. These are pre-solicitation: work an agency has planned but hasn't posted an opportunity for yet.

Market Research tool. Use this to find what's coming before it's postable, not what's
live now (for live notices, use search_opportunities instead).

- source: fco | dhs | hhs (which agency forecast feed)
- naics: 2-6 digit code, prefix match (e.g. "5415" matches 541511, 541512...)
- is_recompete: true = only forecasts that name a current incumbent (see below)
- amount_min/amount_max: USD, matched against the forecast's value range
- active_only: default true, excludes already-awarded/cancelled forecasts
- keywords: full-text search over title + description
- sort_by: est_award_fy | est_solicitation_date | value_high | agency | last_updated_date

Recompete signal: when `is_recompete` is true, each row's `incumbent_piid` is the SAME
identifier `get_contract` and `get_vehicle` take as `piid`, chain into either to see who
currently holds it, its value, and when it expires (Pro accounts get this pre-joined
inline as `incumbent_award`, so check that field before making the extra call).
Direct-line PoC contact fields (poc_email, poc_phone, co_email, sb_specialist_email/phone)
are Pro-gated; poc_name stays visible on every plan.
find_naics_codesA

Discover NAICS codes by current federal spending and small-business set-aside leverage, use this when you don't already know which NAICS code to look at.

Market Research tool, the entry point into the NAICS/Market Pulse tools below.

- sector: 2-digit NAICS sector prefix (e.g. "54")
- prefix: any-length NAICS prefix (e.g. "5415")
- min_market: minimum FY2025+ obligated dollars
- max_competitors: maximum distinct winning firms (a low number = a thin, less-contested market)
- set_aside_family: total_small_business | 8a | sdvosb | wosb | hubzone | veteran | native
- keywords: matches the NAICS description text
- sort_by: market (size) | competitors | setaside_pct (aggregate small-business share
  across ALL families; when set_aside_family is also set, sorts by THAT family's own
  share instead, read each row's `family_share_pct` for the honest per-family number,
  populated only when set_aside_family is set)

Returns each matching code's `naics_code`, pass that to get_naics_market,
get_naics_positioning, get_naics_simplified_acquisition, or get_naics_competition for
the deeper reads below. 503 briefly if the market index is still building.
get_naics_leaderboardA

Browse curated, ranked NAICS market leaderboards, a fixed set of named rankings, distinct from find_naics_codes' open filtered search.

Market Research tool.

- board: the named ranking to view , "biggest" | "least_crowded" | "most_open" |
  "most_locked" | "setaside_total_small_business" | "setaside_8a" | "setaside_sdvosb" |
  "setaside_wosb" | "setaside_hubzone" | "setaside_veteran" | "setaside_native"
- limit: max 100

Returns each ranked NAICS code's `naics_code`, pass that to get_naics_market or the
other NAICS tools below. 400 if `board` isn't a recognized name; 503 briefly if the
market index is still building.
get_naics_marketA

Get the federal market profile for one NAICS code: spending, competition, set-aside leverage, top buyers, and top incumbents.

Market Research tool, the AWARD side of a market (who's winning, how much). Pair with
get_naics_positioning for the SOLICITATION side (the language contracting officers
use), get_naics_simplified_acquisition for the small-buy value bands, and
get_naics_competition for the deeper contestability read.

- code: 2-6 digit NAICS code

`size_standard` is null (`size_standard_status: "pending_sba_table"`), the SBA
small-business size threshold isn't part of this dataset. Check SBA's table directly
for small-business eligibility rather than relying on this response for it.

Free tier. 404 if there's no FY2025+ federal contract activity for this code.
get_naics_positioningA

Get the language and set-aside makeup for a NAICS code's SOLICITATION side: the phrase vocabulary contracting officers actually use in notices, the set-aside share of notices, and the top soliciting agencies, over the last 24 months of SAM opportunities.

Market Research / Capture tool. This is what to put in a SAM/DSBS profile or
capability statement so contracting officers find you. Pair with get_naics_market for
the award side (spending, incumbents, competition) of the same NAICS.

- code: 2-6 digit NAICS code

Free tier. 404 if there's no SAM opportunity activity for this code in the last 24 months.
get_naics_simplified_acquisitionA

Get the award-value breakdown for a NAICS code over the last 12 months of FPDS prime awards: counts of micro / simplified-acquisition / above-SAT awards, and which offices are making simplified-acquisition-band awards, with distinct-firm and set-aside counts for that band.

Market Research tool, the SMALL-BUY value-band read (FAR Part 13 context: the
$15k-$350k simplified-acquisition band is reserved for small business under FAR
19.502-2(a)'s Rule of Two). Pair with get_naics_positioning (the language) and
get_naics_market (the whole-market picture) for the same code.

- code: 2-6 digit NAICS code

Free tier. Factual, never scored, the facts only, no recommendation on whether to
pursue this band. 404 if there's no FPDS prime-award activity for this code in the
last 12 months.
get_naics_competitionA

Get how contested a NAICS market is, over the whole FPDS prime-award market: offers received per award, single-bidder share, top place-of-performance states, award-volume trend by quarter, the share of recent winners holding only one or two awards (the long-tail signal that a market ISN'T locked up by incumbents), and the winner-cert socioeconomic mix (the dollar share going to firms holding each set-aside certification, e.g. 8(a), SDVOSB, WOSB, HUBZone).

Market Research / Capture tool, the CONTESTABILITY read , the facts a would-be
competitor needs before committing a capture cycle to this market. Distinct from
get_naics_market (size + concentration), get_naics_simplified_acquisition (the
small-buy value bands), and get_naics_positioning (the language).

- code: 2-6 digit NAICS code

Free tier. Factual, never scored. 404 if there's no FPDS prime-award activity for this
code in the last 12 months.
search_companiesA

Search companies that have WON at least one federal award, by name, across both SAM Award Notices and FPDS prime contracts. For ALL registered SAM firms (won an award or not), use search_entities instead.

Capture & Teaming tool, Pro only. Case-insensitive substring match on the name.

- q: name substring, min 2 chars, REQUIRED, naics/agency/naics_small only narrow an
  existing name search, they don't work standalone (for a direct UEI lookup use
  get_company_profile instead)
- naics: 6-digit code, filters to companies with 1+ award in this NAICS
- agency: top-level agency name (e.g. "DEPT OF DEFENSE"), filters to companies with
  1+ award from this agency
- naics_small: exact 6-digit NAICS code (e.g. "236220"), SBA DSBS small-business
  determination for this NAICS (Pro), pairs award history with actual eligibility,
  distinct from SAM's self-reported flag
- limit: max 100

Returns each company's `uei`, the SAME identifier every other Capture/Teaming tool
takes as `uei` (get_company_profile, get_company_awards, get_company_peers,
check_exclusion, get_company_contact). `total_value`/`total_awards` cover SAM Award
Notices only; `fpds_obligated_total`/`fpds_transaction_count` cover the broader FPDS
prime-contract activity independently, a contractor can show $0 in one and millions
in the other, check both.
get_company_profileA

Get one company's aggregate profile: SAM registration (legal name, address, NAICS, PSC, certifications) combined with award-history totals.

Capture & Teaming tool, Pro only. This is the SUMMARY view, for the full paginated
list of individual awards use get_company_awards; for similar/competitor firms use
get_company_peers.

- uei: 12-character Unique Entity ID (from search_companies, search_opportunities'
  `award_uei_sam`, or any other tool that returns a `uei` field)

IMPORTANT scope note: `total_awards`/`total_value`/`avg_value` here count SAM Award
Notices ONLY (roughly 10-30% of federal obligations), NOT the company's total
federal contract value. A contractor active only in FPDS shows `total_value: 0` here
by design; check the FPDS-sourced fields for the fuller picture.
get_company_awardsA

Get the full paginated award history for one company (every individual award, not just the summary totals get_company_profile gives you).

Capture & Teaming tool, Pro only.

- uei: 12-character Unique Entity ID
- sort_by: award_date | award_amount
- sort_order: asc | desc
- limit: max 1000

Each row's `notice_id` is the same identifier get_opportunity takes, for pulling the
full original notice behind an award, but it's `null` on FPDS-sourced rows
(`source: "fpds_prime_contract"`), since those contracts were never posted as SAM
opportunities. Only `source: "sam_award_notice"` rows have one.
get_company_peersA

Find companies similar to this one by NAICS + agency overlap, the competitive landscape around a firm, not its own history.

Capture & Teaming tool, Pro only. Use this to answer "who else competes where this
company competes," distinct from get_company_profile (this firm's own stats) or
search_companies (open name search).

- uei: 12-character Unique Entity ID
- limit: max 50

Returns each peer's `uei`, chain into get_company_profile or check_exclusion for any
of them.
search_entitiesA

Search ALL SAM-registered entities by name (won a federal award or not). For companies that have actually WON an award, use search_companies instead, it has richer award-history fields; use this one when you need the full registry, including firms with no award history yet.

Capture & Teaming tool. `q` alone works on every plan; the other filters are Pro.

- q: name substring, min 2 chars
- naics: NAICS code, no Y/N suffix (Pro)
- state: 2-letter US state (Pro)
- business_type: SAM business-type code, e.g. "8W" (WOSB), "QF" (SDVOSB), "27"
  (self-cert SDB) (Pro), an unrecognized code returns 400 with the full valid list
- active_only: only Active registrations (Pro)
- naics_small: exact 6-digit NAICS code (e.g. "236220"), SBA DSBS small-business
  determination for this NAICS (Pro)
- limit: max 100

Returns each entity's `uei`, the same identifier get_entity, get_company_profile,
check_exclusion, and get_company_contact all take as `uei`.
get_entities_expiringA

Find SAM registrations expiring within N days, a monitoring/list question, distinct from a name lookup. A lapsed registration makes a firm invisible to contracting officers and ineligible for award, so this is useful both for self-monitoring and for spotting teammates/subs whose registration needs renewal.

Capture & Teaming tool, Pro only.

- within_days: 1-365, default 60
- state / naics: optional narrowing filters
- limit: max 500

Returns each entity's `uei`, chain into get_entity for the full registration record.
get_entityA

Get one SAM entity's full registration record by UEI or CAGE code, the same question, two different keys, so this is one tool, not two.

Capture & Teaming tool. Provide exactly one of `uei` or `cage_code`.

- uei: 12-character Unique Entity ID (from search_entities, search_companies, or any
  other tool's `uei` field)
- cage_code: CAGE code (from a contract/award record's `cage_code` field)

Free tier (Developer). Returns the same shape either way.
search_partnersA

Find teaming/partner firms with REAL past performance, by NAICS + agency + state + set-aside, who's actually done this kind of work, not just who's registered for it.

Capture & Teaming tool, Pro only. This is the "who could I team with" question,
distinct from search_companies (open name search) or get_company_peers (similar to
ONE specific company).

- naics: 6-digit code, exact
- agency: name/acronym, crosswalk-resolved (e.g. "Army", "Navy", "USACE")
- state: place-of-performance, 2-letter
- set_aside: sdvosb | vosb | wosb | woman_owned | hubzone | 8a | sdb | minority_owned
- psc: Product/Service Code, exact
- keywords: matches the award description
- limit: max 50

Returns each firm's `uei`, chain into get_company_profile, check_exclusion, or
get_company_contact. NOTE: this tool's `agencies` field is an array of sub-agency
names with no agency CODE, it does not chain into contract-level `awarding_agency_code`
filters directly.
get_company_contactA

Resolve a vendor's REAL decision-maker contact, SAM registration agents (third-party filing services) are filtered out, so this is the actual point of contact at the company, not their SAM paperwork filer.

Capture & Teaming tool, Pro only. Distinct from search_contacts (finds a
CONTRACTING OFFICER at an agency, the buyer side), this is the vendor/teammate side.

- uei: 12-character Unique Entity ID

Rate-limited more tightly than other tools (separate IP + key burst limits), avoid
calling this in a tight loop across many UEIs at once.
search_contactsA

Look up a CONTRACTING OFFICER's contact info, the buyer side, distinct from get_company_contact (the vendor/teammate side).

Capture & Teaming tool, Pro only (`contacts_access`). A RESOLVER, not a directory, you cannot list/browse all contacts through this tool, only look up a specific one.

Two modes, provide one:
- name (+ optional agency, state for disambiguation): substring match, returns up to 5
- email: exact match, returns one record, useful when you already have an email on
  file and want the current name/agency/phone for it

Returns 404 if nothing matches, 402 if the caller's plan doesn't include contacts_access.
search_recompetesA

Find contracts entering recompete within a window, a market read for NEW business (who else's contract is about to be up for grabs), and also useful post-award to watch your OWN contract's expiration (see get_recompete for the single-contract form of that).

Capture & Teaming / Post-Award tool, Pro only, factual, never scored (no win-probability
guess, just the facts: option runway, offer count, incumbent history).

- naics: exactly 6 digits
- agency: name substring
- ends_after_months / ends_within_months: the window, e.g. 0-18 = "ending in the next
  18 months," set ends_after_months higher (e.g. 6) to skip the too-late-to-influence band
- date_anchor: current_end (next decision point) | potential_end (guaranteed recompete,
  all options used)
- options_exhausted_only: true = only contracts whose options are ~exhausted (the
  high-confidence "must recompete" subset)
- incumbent_excluded: true = only recompetes whose incumbent is CURRENTLY on the SAM
  exclusions list (can't legally win the recompete); false = only clean incumbents;
  omit for both
- sort_by: ends_soonest | value | mod_churn | de_obligated

Returns each row's `agency_code`/`sub_agency_code` alongside the published `agency`/
`sub_agency` names, and `award_id_piid`, pass that to get_recompete for the full
incumbent-vulnerability read, or to get_contract/get_vehicle for the raw FPDS record.
`incumbent_uei` is the same identifier every Capture/Teaming tool takes as `uei`. NOTE:
get_recompete (the single-PIID detail form) does not yet carry agency_code/sub_agency_code,
only this search does.
get_recompeteA

Get one recompeting/expiring contract by PIID, plus incumbent-vulnerability signals (cert-lapse, lone-holder, single-agency dependence) composed from the incumbent's DSBS certifications and FPDS obligation history.

Capture & Teaming / Post-Award tool, Pro only. Factual, signals-not-scores, no
win-probability guess. Not windowed, a direct ID lookup (unlike search_recompetes).

- piid: from search_recompetes, get_contract, or get_vehicle

`incumbent_uei` in the response is the same identifier every Capture/Teaming tool
takes as `uei`.
get_price_benchmarkA

Get the percentile distribution of comparable contract VALUE for a NAICS, broken out by pricing type. A price-analysis / market-range read for the Negotiate stage, not a win predictor. Factual, not scored.

Bid & Proposal / Negotiate tool, Pro only. Pair with get_price_position to see where
YOUR specific value sits, or get_labor_rate_benchmark for the labor-cost input.

- naics: 6-digit code, required
- set_aside: exact code, e.g. "8A", "SBA", "SDVOSBC", "WOSB", "HZC", "NONE"
- psc: 1-4 alphanumeric Product/Service Code, finer scope than NAICS
- pricing_type: pin one, e.g. "FIRM FIXED PRICE", "TIME AND MATERIALS", a rarer
  pricing arrangement can surface as a raw, undecoded single-letter FPDS code
  (e.g. "J", "Y", "Z") instead of a readable name; that's passthrough source data,
  not an error
- agency: name / acronym / CGAC code, narrows the comparable set to that agency
- value_basis: current (default) | potential | obligated
- date_from/date_to: filters on the FPDS transaction's `action_date` (when a
  modification/closeout action was recorded), NOT the award date or period of
  performance, a years-old contract can appear as a "current" comparable via a
  recent action on it

IMPORTANT: pricing type shifts the median 8x-3000x within a NAICS, use the
per-pricing-type blocks (`pricing_types`), not `combined`, for a meaningful
comparable. `combined` is blended context only, not a real number to price against.
get_price_positionA

Get where YOUR specific contract/bid value sits (percentile rank) against real comparable contracts, plus a sample of the nearest ones by value.

Bid & Proposal / Negotiate tool, Pro only. This is the "is my number reasonable"
check, distinct from get_price_benchmark, which gives the market range without
placing any one number in it.

- naics: 6-digit code, required
- value: YOUR contract/bid value in dollars, e.g. "2200000" or "$2,200,000", required
- set_aside / psc / pricing_type / agency / value_basis / date_from / date_to: same as
  get_price_benchmark, narrows the comparable set the same way (see its docstring for
  the `pricing_type` raw-code and `date_from`/`date_to` action_date caveats)
- sample_limit: how many nearest comparable contracts to return, max 25

Each sample contract's `recipient_uei` and `award_id_piid` chain into
get_company_profile / get_contract for a closer look at a specific comparable.
Factual positioning, not a recommendation on what to bid.
get_labor_rate_benchmarkA

Get the awarded labor-rate (should-cost) benchmark for a labor category, from GSA CALC, the labor-cost input for a proposal, paired with get_price_benchmark's contract-value read.

Bid & Proposal / Negotiate tool, Pro only.

- labor_category: required, e.g. "Senior Software Engineer"
- match: contains (default, substring) | exact
- education_level: HS | AA | BA | MA | PHD | OTHER
- min_experience / max_experience: years, 0-60
- naics: 6-digit, via the SIN bridge
- vendor: substring match, use for a competitor's or your own rate-card lookup
- worksite: Customer | Contractor | Virtual
- business_size: S (small business) | O (other than small)
- security_clearance: Yes | No
- value_basis: current (default) | next_year | second_year, the escalated out-year
  rate directly, a distinct enum from get_price_benchmark's current/potential/obligated
- sample_limit: how many comparable rates to return, max 25

Use `vendor` with a specific company name (e.g. from search_companies) to check a
known competitor's or teammate's actual awarded rate card.

Response includes `rate_distribution` (hourly percentiles p10-p90 + min/max/avg),
`escalation` (median year-over-year ceiling-rate growth for next_year and
second_year, the real input for pricing an out-year, not a guessed 2-3% flat
escalator), `category_breakdown`, and `rates_sample` (individual comparable rate rows).
search_wage_determinationsA

Search Davis-Bacon (DBA), Service Contract Act (SCA), and CBA wage determinations by jurisdiction, number, or revision date.

Bid & Proposal / Negotiate tool. For "which WDs apply where I'm bidding" use
get_wds_by_location instead (the compliance shortcut); use this one when you need
to browse/filter broadly or track revisions over time.

- type: DBA | SCA | CBA
- state: 2-letter US state code
- county: substring
- wd_number: substring (e.g. "AK2026", "1994-2371")
- active_only: only currently-effective WDs
- date_from/date_to: modified-date window, YYYY-MM-DD
- construction_type: DBA only, Building | Heavy | Highway | Residential
- sort_by: modified_date | publish_date | wd_number | revision_number
- limit: max 100

Returns each WD's identifier, pass to get_wage_determination for the full
classification/rate detail.
get_wds_by_locationA

The compliance shortcut: "I'm bidding a contract in this state/county, which wage determinations apply?" Returns every currently-active DBA, SCA, and CBA record covering that jurisdiction.

Bid & Proposal / Negotiate tool. Statewide DBAs are included regardless of `county`
(they apply everywhere in the state). No date filter, this answers "what's in
force here right now," not a historical query (use search_wage_determinations for that).

- state: 2-letter US state code, required
- county: optional; omit for statewide only
- type: DBA | SCA | CBA, filter to one type; omit for all. Rows default-sort with
  CBA first alphabetically, which can bury the DBA/SCA coverage a construction or
  services bidder actually wants (e.g. VA/Fairfax is 47 CBA vs 6 SCA vs 5 DBA), use
  this to skip straight to the type you need instead of paging past CBAs.
- limit: max 100
get_wage_ratesA

Query prevailing-wage rates ACROSS wage determinations, by occupation, "what does a given trade actually pay," distinct from search_wage_determinations / get_wds_by_location which answer "which WDs apply."

Bid & Proposal / Negotiate tool. Each row is one classification's hourly base wage
plus fringe, tied to the WD it came from. For the aggregated distribution/floor
across many WDs at once, use get_wage_rate_summary instead of paging through this.

- classification: trade/occupation name substring, e.g. "Electrician"
- type: DBA | SCA (CBAs have no rate table)
- occupation_code: SCA 5-digit code, e.g. "23210"
- wd_number: exact
- state: 2-letter, via the WD's jurisdictions
- sort_by: base_rate | classification | wd_number
- limit: max 100
get_wage_rate_summaryA

Get the labor-cost FLOOR for one occupation, aggregated across wage determinations: base hourly percentiles + Health & Welfare fringe + how many WDs set it, what a services bidder needs to price loaded labor, which on an SCA contract drives the bid far more than the award value.

Bid & Proposal / Negotiate tool, the DISTRIBUTION view, distinct from get_wage_rates
(individual county rate lines). Pair with get_labor_rate_benchmark for the awarded
(as-bid) rate comparison, this tool gives the regulatory floor instead.

- occupation_code: SCA 5-digit code, e.g. "11150" (Janitor), "27101" (Guard), the
  precise key, prefer this when known
- classification: name substring, e.g. "Guard", used when no occupation_code is given
- type: SCA (default) | DBA (CBAs have no rate table)
- state: 2-letter, scope to WDs covering that state

Response includes `distinct_classifications` (COUNT DISTINCT of matched titles), a broad `classification` substring can blend several distinct, differently-paid
titles into one distribution (e.g. "Computer" spans 10 titles from $10-$53/hr);
this discloses whether the returned label is one occupation or a blend. Prefer
`occupation_code` over `classification` whenever the pay spread matters.
get_wage_determinationA

Get one wage determination's full record: location array, every classification's hourly wage + fringe, and (for CBAs) the contractor/union detail block.

Bid & Proposal / Negotiate tool.

- wd_id: the internal sgs id (e.g. "43309") OR the human-readable WD number (e.g.
  "AK20260001"), from search_wage_determinations, get_wds_by_location, or get_wage_rates
get_vendor_risk_reportA

Get a 7-signal vendor risk report for one UEI, screening facts for teaming or subcontracting due diligence, before you commit to a partner.

Bid & Proposal / Negotiate tool, Pro only. Distinct from check_exclusion (a binary
debarment check), this is a broader risk-signal read.

- uei: 12-character Unique Entity ID (from search_companies, search_entities,
  search_partners, or any other tool's `uei` field)

The 7 signals (under `signals`): exclusion_status, address_cluster (other entities
registered at the same address), name_variant_cluster, individual_exclusions_at_address,
wave_membership, timing_gap, dual_cage. Check `triage` first, it's a pre-computed
summary (`category`, `label`, `reasons`) so you don't have to interpret all 7 signals
yourself; `category: "clean"` with empty `reasons` means nothing surfaced.

Also includes `contract_exposure` (FPDS obligated total, distinct contracts, top
agencies) and `subaward_exposure` (as-prime/as-sub FFATA payment history), how much
is actually at stake with this vendor, alongside the risk signals themselves.
search_contractsA

Search FPDS prime contract transactions, the comprehensive, authoritative award record (10.6M+ transactions). For the sparse SAM Award Notice slice specifically, use search_awards instead (see its docstring for when that's actually the right tool).

Award & Compliance tool.

- uei / parent_uei: exact 12-char (parent_uei = corporate roll-up)
- piid: exact award PIID; parent_piid: the vehicle/IDV it was ordered against
- agency: name substring
- naics: exactly 6 digits
- award_type_code: FPDS type A | B | C | D
- date_from/date_to: action_date window, YYYY-MM-DD
- amount_min/amount_max: federal_action_obligation
- sort_by: action_date | current_total_value_of_award | federal_action_obligation |
  recipient_name (default action_date). sort_order: asc | desc.
- limit: max 250

Data coverage starts FY2025 (~2024-10-01) and cannot go earlier on any plan, a
`date_from` before that floor is silently clamped, not rejected; the response's
`window` block (`clamped`, `earliest_searchable`, `reason`) discloses what actually
ran. Contrast search_vehicles, which is NOT floored this way.

Returns each transaction's `award_id_piid`, pass that to get_contract for the full
roll-up, get_contract_modifications for the full history, or get_contract_vehicle for
what vehicle it's under. `recipient_uei` chains into every Capture/Teaming tool.
get_contractA

Get one contract's LATEST transaction plus a roll-up of obligation/value totals across every modification.

Award & Compliance tool. This is the SUMMARY view, for every individual
modification row use get_contract_modifications; for what vehicle it's under use
get_contract_vehicle.

- piid: award PIID (from search_contracts, search_recompetes, or a company's award
  history)

Top-level keys: `contract` (the latest transaction), `transaction_rollup` (counts +
obligated/value totals across every modification, transaction_count, total_obligated,
max/latest current and potential value, first/latest action date), and `subaward_rollup`
(Pro only; who this prime paid as subs, subaward_count, total_subcontracted,
distinct_sub_vendors, top_subs; a legitimate `subaward_count: 0` means no subs, not
an error). All three are siblings, not nested inside `contract`.
get_contract_modificationsA

Get EVERY transaction row for a contract, oldest action first, the full modification trail (amendments, options exercised, partial terminations), not just the latest snapshot get_contract gives you.

Award & Compliance tool. There's no per-request date filter, but the underlying data
itself only carries FY2025 onward, a contract whose real history predates that floor
will start mid-sequence (e.g. first row `P00026`, not `P00001`), with earlier
modifications simply never ingested, not filtered out. Check the response's `window`
block (`clamped`, `earliest_searchable`, `reason`) before treating the returned rows
as the complete history.

- piid: award PIID
- limit: max 500
get_contract_vehicleA

Get the contract vehicle (IDIQ, GWAC, FSS schedule, or BPA) this order was placed against.

Award & Compliance tool. Returns the vehicle's own PIID, chain into get_vehicle for
the vehicle's own ceiling/period detail, or get_vehicle_holders to see who else can
compete for orders on it.

- piid: the ORDER's PIID (not the vehicle's own PIID), from search_contracts or get_contract

If the contract was awarded directly, not against a vehicle, returns
`{status: "standalone", vehicle: null, message: ...}` instead, check `status` before
reading `vehicle.award_id_piid` or chaining into get_vehicle.
search_vehiclesA

Search contract vehicles: IDIQs, GWACs, FSS schedules, BPAs, BOAs.

Award & Compliance tool. Vehicles are long-lived and NOT limited to a rolling
window the way prime-contract search is, a GWAC awarded years ago is still the
vehicle you must hold today to compete for its orders.

- uei/parent_uei: vehicle holder, exact 12-char
- piid: vehicle PIID, exact
- idv_type: IDC | FSS | BPA | GWAC | BOA
- active_only: only vehicles whose period of performance hasn't ended
- ceiling_min/ceiling_max: potential_total_value_of_award. A ceiling of `999999999999`
  (or `.99`) is FPDS's own placeholder for "no negotiated ceiling" (typical on GSA
  MAS/GWAC-style vehicles), not a literal dollar figure.
- limit: max 250

Returns each vehicle's `award_id_piid`, pass to get_vehicle for detail or
get_vehicle_holders (Pro) to see who holds it and who's actually earning through it.
get_vehicleA

Get one contract vehicle's detail: ceiling, period, and what's been ordered through it.

Award & Compliance tool.

- piid: vehicle's own PIID (from search_vehicles or get_contract_vehicle)

Also returns a `vehicle_family` block (`is_multiple_award`, `piid_count`,
`solicitation_identifier`, `note`) disclosing whether this PIID is one award among
several placed under the same solicitation, distinct from get_vehicle_holders' own
`vehicle_family.piids`, which lists every sibling PIID; this one only counts them.
NOTE: `transaction_rollup.distinct_awardees` / `orders_rollup.distinct_holders` above
are scoped to THIS piid only and read `1` even when `vehicle_family.is_multiple_award`
is true (FPDS gives every awardee of a multi-award vehicle its own separate PIID), use get_vehicle_holders for the real family-wide count. A ceiling of `999999999999`
(or `.99`) is FPDS's own placeholder for "no negotiated ceiling" (typical on GSA
MAS/GWAC-style vehicles), treat it as effectively unlimited, not a literal ~$1T figure.
get_vehicle_holdersA

Get who holds a vehicle AND who's actually earning through it, two distinct populations, don't conflate them: a firm can hold a vehicle for years and earn nothing on it.

Award & Compliance tool, Pro only. The "can I even compete for this work" answer, on a multi-award vehicle, only holders can bid task orders.

- piid: vehicle's own PIID (from search_vehicles or get_contract_vehicle)
- limit: max 250

Returns `awardees` (hold the vehicle) and `earners` (have actually been paid through
it) as separate lists with counts (`awardee_count`/`earner_count`), on a real
multi-award vehicle these can be wildly different (e.g. 1,596 awardees, 2 earners),
which is the whole point of the distinction. Each entry's `recipient_uei` chains into
Capture/Teaming tools. Also returns `vehicle_family.piids`: this rolls up EVERY
related PIID under the same vehicle family, not just the one you asked for, so
`awardee_count` reflects the whole family, not a single order.
search_subawardsA

Search FFATA subawards: who primes paid as subcontractors.

Award & Compliance tool. For a single company's subs-paid or primes-that-paid-them
reverse lookups, use get_prime_subawards / get_prime_relationships instead, narrower
and simpler when you already have one UEI.

- prime_uei / sub_uei: exact 12-char
- piid: the PRIME contract's PIID
- naics: exactly 6 digits
- sub_name: substring, min 3 chars
- limit: max 250

Data coverage starts FY2025 (~2024-10-01) and cannot go earlier on any plan, a
`date_from` before that floor is silently clamped, not rejected; the response's
`window` block (`clamped`, `earliest_searchable`, `reason`) discloses what actually
ran.

NOTE: this table has no `cage_code` field, you cannot CAGE-cross-check a
subawardee through this tool, only by UEI/name.
get_subawardA

Get one FFATA subaward report by its SAM report ID.

Award & Compliance tool.

- subaward_sam_report_id: UUID, from search_subawards or a company's subaward list
get_prime_subawardsA

Get every subaward THIS company (as a prime) paid out, "who did they subcontract to."

Award & Compliance tool. The opposite direction from get_prime_relationships (who
paid THIS company as a sub), both use the same `uei`, pick based on which
direction you're asking.

- uei: 12-character Unique Entity ID (the PRIME's UEI)
- limit: max 250

Includes a `summary` block (total_subaward_amount, distinct_sub_vendors,
distinct_prime_contracts, first/last subaward date) alongside the paginated `data`
rows, read `summary` first rather than summing the page yourself.
get_prime_relationshipsA

Get every prime that has paid THIS company as a subcontractor, "who subcontracts to them," the opposite direction from get_prime_subawards.

Award & Compliance tool.

- uei: 12-character Unique Entity ID (the SUB's UEI)
- limit: max 250

Includes a `summary` block (total_received, distinct_primes, top_primes, first/last
subaward date) alongside the paginated `data` rows, read `summary` first.
search_protestsA

Search GAO bid protests: who protested, on which solicitation, when, and the outcome.

Award & Compliance tool. `status=Open` is the live set (still pending before GAO,
the award may be under a performance stay); filter to `outcome=Sustained` for
protests that actually disturbed an award.

- protester: the firm that FILED the protest (use this, not `search`, for
  competitor research, `search` also matches the agency column)
- search: full-text over protester, agency, solicitation number, file number
- case_number: GAO case, e.g. "B-424433", returns every docket on that case
- outcome: Denied | Dismissed | Sustained | Withdrawn | Granted
- status: Open | Closed
- sort: recent (default) | oldest | filed | due (due = soonest statutory deadline first)
- limit: max 100

Factual, never scored. Returns each protest's solicitation number, pass to
get_protests_on_solicitation for every protest on that same procurement.
get_protests_on_solicitationA

Get every protest filed on ONE solicitation, the contestability read for a specific opportunity or award: any protest pending right now, and the statutory date GAO must decide by.

Award & Compliance tool, Pro only.

- solicitation_number: from search_opportunities, search_contracts, or search_protests

Returns `any_open` and `any_sustained` (pre-computed booleans, check these first
before scanning the `protests` list yourself) and `earliest_open_due_date` (the
nearest statutory deadline among any still-pending protest on this solicitation).

Resolves the WHOLE GAO case: if your `solicitation_number` matches any docket of a
case, this returns every docket across all solicitation-number spellings GAO
recorded for that case (GAO sometimes records one case differently across its own
dockets, e.g. an `RFQ-` prefix present on some rows, absent on others), two
different, both-real spellings for the same case return the identical, complete set.
resolve_identifierA

Resolve between legacy DUNS (9 digits, or 13-digit DUNS+4) and current UEI (12 alphanumeric), accepts either side, returns both plus the entity name.

Free tier.

- identifier: a DUNS or a UEI

COVERAGE TRUTH: built from FFATA subaward filings since FY2025 where both
identifiers co-exist (~24K firms indexed). A 404 means "not in this FFATA-derived
crosswalk," NOT "not in SAM", the official SAM DUNS↔UEI translator is admin-gated
and not publicly available, so a 404 here is inconclusive, not a negative proof.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/govconapi/govconapi-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server