search_exclusions
Search SAM.gov exclusion records with flexible filters.
All filters are AND-ed. Unlike Entity Management, Exclusions uses 'size'
(not 'limit') for pagination. Size can go up to 100 per page.
Key filter notes:
- entity_name: firm name for classification=Firm; for individuals use
the full name. Cannot contain &, |, {, }, ^, backslash.
- cage_code: 5-character CAGE of the excluded entity.
- classification: Firm, Individual, Vessel, or Special Entity Designation.
- exclusion_program: Reciprocal (cross-agency), NonProcurement, or Procurement.
- excluding_agency_code: agency code that imposed the exclusion (e.g., DOD, HHS).
- country: MUST be 3-character ISO alpha-3 (USA, CAN, GBR). 2-char codes
(US, CA, GB) return 0 results.
- activation_date_range: use bracket format [MM/DD/YYYY,MM/DD/YYYY].
- free_text (q parameter): supports wildcards (*), AND, OR operators.
Example: "acme*" matches any company starting with acme.
search_opportunities
Search contract opportunities on SAM.gov.
posted_from and posted_to are MANDATORY. Format is MM/DD/YYYY (not ISO 8601).
The date range cannot exceed 364 days. For older notices or longer ranges,
chain multiple calls with sequential date windows.
Notice type codes:
- p = Presolicitation
- o = Solicitation
- k = Combined Synopsis/Solicitation
- r = Sources Sought
- s = Special Notice
- i = Intent to Bundle
- a = Award Notice
- u = Justification (J&A)
- g = Sale of Surplus Property
WORKING filters: title, solicitation_number, notice_id, notice_type,
naics_code, psc_code, set_aside, state, zip_code, response_deadline_from,
response_deadline_to.
BROKEN filters (do not use): deptname, subtier. The SAM.gov API silently
ignores these. To filter by agency, use agency_keyword — this tool will
post-filter the results by checking fullParentPathName for a substring match.
PSC code filter (psc_code) requires exact 4-character match. Prefix
matching (e.g. 'R4') returns 0 results; use 'R425'.
Set-aside codes: SBA, SBP, 8A, 8AN, HZC, HZS, SDVOSBC, SDVOSBS, WOSB,
WOSBSS, EDWOSB, EDWOSBSS, VSA, VSS.
The 'description' field in each result is a URL, not inline text. Use
get_opportunity_description() to fetch the actual description HTML.
get_opportunity_description
Fetch the full description text for a contract opportunity by notice ID.
The 'description' field in search_opportunities results is a URL, not
inline text. This tool handles the second fetch to retrieve the actual
HTML description. Pass the noticeId from the search results.
lookup_psc_code
Look up a Product/Service Code (PSC) by its code value.
Returns the PSC name, full name, level 1 and level 2 category information,
and includes/excludes guidance. Useful for validating PSC codes before
using them as filters in other searches.
search_psc_free_text
Free-text search for Product/Service Codes (PSC).
Searches across PSC names, descriptions, and category hierarchy. Returns
matching PSC codes with full context. Useful for discovering PSCs from
plain-language descriptions like 'engineering' or 'application development'.
search_contract_awards
Search contract award records on SAM.gov (FPDS replacement).
This is the replacement for FPDS.gov (decommissioned Feb 2026). Same data,
new endpoint. Uses limit/offset pagination (NOT page/size).
CRITICAL date format: MM/dd/yyyy for single dates, [MM/dd/yyyy,MM/dd/yyyy]
for ranges (brackets included). ISO 8601 dates are rejected.
Boolean operators: use ~ for OR (e.g. naics_code="541512~541511"),
use ! for NOT (e.g. extent_competed_code="!A").
Key parameters:
- awardee_name: awardeeLegalBusinessName (partial match). NOT "vendorName".
- awardee_uei: awardeeUniqueEntityId (exact match)
- awardee_cage_code: awardeeCageCode (exact match)
- piid: Procurement Instrument Identifier. Returns all mods for that PIID.
- naics_code: 6-digit NAICS. Supports ~ for OR, ! for NOT.
- psc_code: Product/Service Code (4-char). Supports ~ for OR.
- contracting_department_code: top-level department (e.g. "9700" for DoD)
- contracting_subtier_code: subtier agency (e.g. "1700" for Navy)
- contracting_office_code: contracting office (e.g. "N00039")
- date_signed: date of award action. MM/dd/yyyy or [MM/dd/yyyy,MM/dd/yyyy]
- last_modified_date: when record was last modified. Same format.
- fiscal_year: filter by FY (e.g. "2026")
- award_or_idv: "AWARD" for contracts/orders, "IDV" for indefinite-delivery vehicles
- type_of_contract_pricing_code: J=FFP, U=CPFF, etc.
- type_of_set_aside_code: SBA, 8A, HZC, SDVOSBC, etc.
- extent_competed_code: A=Full, B=Not Available, CDO=Competed Under SAP, etc.
- dollars_obligated: bracket range [min,max] as string
- modification_number: "0" for base award, specific mod number, or range
- free_text: q parameter for full-text search across all fields
- include_sections: comma-separated: contractId, coreData, awardDetails (default: all)
- limit: max records per page (1-100, default 10)
- offset: 0-based record skip count for pagination
Returns normalized response with awardSummary list and totalRecords count.
Each record has up to 3 sections: contractId, coreData, awardDetails.
lookup_award_by_piid
Look up all contract award modifications for a single PIID.
Returns all modification records for the given Procurement Instrument
Identifier, sorted by modification number. This is the primary way to
get the full history of a contract action.
PIIDs are alphanumeric identifiers assigned by the contracting office.
Format varies by agency (e.g. "GS-35F-0119Y", "W912BV22P0112",
"N0003925F7516"). The search is exact match.
include_sections: comma-separated list of contractId, coreData, awardDetails.
Defaults to all sections if not specified.
Returns normalized response with awardSummary list containing all
modifications. Check totalRecords for the number of mods found.
search_deleted_awards
Search contract award records that have been deleted from FPDS/SAM.gov.
Uses the same Contract Awards endpoint with deletedStatus=Y. Deleted
records are removed from normal search results but remain accessible
through this parameter. Useful for audit trails and historical research.
Supports the same date format as search_contract_awards:
MM/dd/yyyy or [MM/dd/yyyy,MM/dd/yyyy] for ranges.
limit: 1-100 (default 10). offset: 0-based pagination.
vendor_responsibility_check
Composite pre-award vendor responsibility check per FAR 9.104-1.
Performs TWO API calls in sequence:
1. Entity Management lookup (registration status, business types,
CAGE, activation/expiration dates, exclusion flag on the entity record)
2. Exclusions lookup (active debarment/suspension records)
Returns a structured summary with:
- registration: full registration details or None if not registered
- exclusion: exclusion record count and active exclusion details
- flags: list of responsibility concern flags
Flag meanings:
- NOT_REGISTERED: entity has no SAM registration (cannot receive award per FAR 4.1102)
- REGISTRATION_NOT_ACTIVE: registration expired or inactive
- EXCLUSION_FLAG_ON_ENTITY: entity record indicates exclusion exists
- ACTIVE_EXCLUSION_FOUND: confirmed active exclusion (FAR 9.405 prohibits award)
No flags = clear for responsibility determination.