Skip to main content
Glama
Panda Federation Tools

Panda Federation Tools

SAM.gov Contract Opportunities: Open Federal Bids, No API Key

sam_gov_opportunities
Read-only

Find open US federal contract opportunities in SAM.gov notices by NAICS, PSC, set-aside, agency, state or keyword, plus award notices to identify primes for teaming.

Instructions

List current US federal contract opportunities from the official SAM.gov public Contract Opportunities data extract (GSA, refreshed daily, no SAM.gov API key): solicitations, combined synopsis/solicitations, presolicitations, sources sought, special notices and award notices, with title, solicitation number, notice type, posted date, response deadline and days left, department/sub-tier/office, NAICS and PSC codes, set-aside, place of performance, contracting officer name, email and phone, and awardee and amount for award notices. Unlike federal_contract_finder (past USAspending awards, incumbents and recompete dates) and grants_finder (assistance grants), this is open SAM.gov notices you can respond to now. Use when small businesses, GovCon BD teams, proposal writers or subcontractors need new bids by NAICS, PSC, set-aside, agency, state or keyword, or award notices to find primes for teaming. Do not use to download attachments or submit bids (open samUrl on SAM.gov), or for state/local or EU tenders (use eu_ted_tenders). Parameters: daysBack (default 7) or postedFrom/postedTo set the posted window (the file is newest first, so short windows are fast); keywords and excludeKeywords match title and description; naicsCodes and pscCodes are prefix matches (e.g. 5415, D3); setAsides takes SAM codes (SBA, 8A, HZC, SDVOSBC, WOSB, EDWOSB, NONE...); noticeTypes, agencies (department/sub-tier/office contains) and states (place of performance or office state) narrow rows; openOnly (default true) drops passed deadlines but keeps notices with no deadline; minDaysToDeadline keeps biddable notices only; requireContactEmail; descriptionChars (default 600); maxResults caps billed notices. Runs with no matches are free. Returns per item: agentSummary, noticeId, title, solicitationNumber, noticeType, postedDate, responseDeadline, daysToDeadline, department, subTier, office, naicsCode, pscCode, setAsideCode, setAside, popCity, popState, awardDate, awardAmount, awardee, contactName, contactEmail, contactPhone, samUrl, description; plus SAM_XLSX (with By deadline and Award notices sheets)/CSV.

Behavior: read-only; runs the Apify Actor pandadad0214/sam-gov-opportunities (https://apify.com/pandadad0214/sam-gov-opportunities) on your own Apify account. Price: $0.0015 per opportunity returned. Runs that find nothing are not charged per result, and spending is capped per call by run_max_charge_usd (default $0.50). run_max_items (default 50) limits items returned and fills maxResults when you leave it unset, so it also limits what is billed; setting maxResults higher can bill more than is returned. Most calls finish in 5-15 s for a few inputs; large inputs or crawls can take minutes, so raise run_timeout_secs (max 300) or shrink the input after a timeout error. Returns JSON {actor, count, items}; long text output is trimmed to whole items, with all items in structuredContent.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "sam_gov_opportunities"
  }
}

Input Schema

NameRequiredDescriptionDefault
statesNoStates. Two-letter codes matched on the place of performance or the contracting office state, e.g. AZ, TX, VA.
agenciesNoAgency contains. Match department, sub-tier or office (case-insensitive), e.g. veterans affairs, army, GSA, NASA.
daysBackNoPosted in the last N days. Default 7. Matches the SAM.gov posted date. Use 1 or 2 on a daily schedule. The source file is newest first, so short windows are fast.
keywordsNoKeywords (any). Keep notices whose title or description contains any of these words or phrases (case-insensitive), e.g. janitorial, cybersecurity, HVAC.
openOnlyNoOpen only. Default on. Drops notices whose response deadline has passed. Notices with no deadline (award notices, many special notices) are kept.
postedToNoPosted on or before. Optional YYYY-MM-DD.
pscCodesNoPSC codes (prefix). Product/service code starts-with, e.g. D3 (IT), R4 (professional services), Z2 (building repair), S2 (housekeeping).
setAsidesNoSet-asides. Empty = any. NONE keeps notices with no set-aside (full and open).
activeOnlyNoActive notices only. Default on (SAM.gov Active = Yes).
maxResultsNoMaximum results. You pay per notice returned, so this also caps the cost. Default 500; hard max 10000.
naicsCodesNoNAICS codes (prefix). Starts-with match, e.g. 5415 (IT services), 541330 (engineering), 236220 (commercial building), 561720 (janitorial).
postedFromNoPosted on or after. Optional YYYY-MM-DD; overrides days back.
noticeTypesNoNotice types. Empty = all. Award Notice rows carry the awardee and amount (teaming and subcontracting leads).
run_max_itemsNoOptional. Most results to return from this call (default from PANDA_MAX_ITEMS, 50). Also limits how many results the Actor produces and charges for, unless you set its own max field.
excludeKeywordsNoExclude keywords. Drop notices containing any of these words, e.g. brand name only.
descriptionCharsNoDescription length. Characters of the notice description to include. Default 600; 0 = none.
run_timeout_secsNoOptional. Seconds to wait for results (default from PANDA_TIMEOUT_SECS, 120; max 300).
minDaysToDeadlineNoAt least N days to deadline. Optional. Keep notices with at least this many days left to respond (drops notices with no deadline).
run_max_charge_usdNoOptional. Hard spending cap for this call in USD (default from PANDA_MAX_CHARGE_USD, 0.50).
requireContactEmailNoOnly with a contracting contact email. Keep notices that list a primary point-of-contact email.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.8.0

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint, openWorldHint, destructiveHint=false), it discloses the billing model ($0.0015 per opportunity, free runs with no matches, run_max_charge_usd cap), how run_max_items interacts with maxResults and billing, typical latency (5-15 s, up to minutes), and the consequence of exceeding run_timeout_secs. It also notes output trimming to whole items, which is behavior an agent could not infer from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is long, but the structure is front-loaded: purpose first, then differentiation, then use cases, then exclusions, then parameters, then return fields, then behavior and pricing. Some parameter restatement duplicates the already-detailed schema descriptions, particularly around maxResults and run_max_items, which costs a point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 20 parameters, no output schema and no required fields, the description carries the needed load: it lists every returned field, names the CSV/XLSX export sheets, and documents pricing, caps, timeouts and the JSON envelope {actor, count, items}. Nothing material for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real interpretive value: it flags that the source file is newest first so short windows are fast, explains prefix matching for naicsCodes/pscCodes, gives SAM set-aside code examples, and clarifies that setting maxResults higher can bill more than is returned. The one ambiguity is that both maxResults and run_max_items affect billing, which is explained but takes effort to parse.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('List current US federal contract opportunities from the official SAM.gov public Contract Opportunities data extract') and enumerates the notice types covered. It explicitly distinguishes itself from federal_contract_finder (past awards) and grants_finder (assistance grants), so an agent can route correctly without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete when-to-use triggers (small businesses, GovCon BD teams, proposal writers, subcontractors needing bids by NAICS/PSC/set-aside/agency/state/keyword) and explicit when-not-to-use cases (downloading attachments, submitting bids, state/local or EU tenders, with eu_ted_tenders named as the alternative). Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.