Skip to main content
Glama

search_opportunities

Read-only

Search active SAM.gov contract opportunity notices: solicitations, combined synopses, presolicitations, sources sought, special notices, award notices, and justifications.

All filters combine. Keyword search covers titles and full descriptions. By default, only the latest version of each amended notice is included. Notices whose response deadline has passed are left out, except award notices and justifications; notices with no deadline are also included. Set include_past_deadlines to true to include other past-deadline notices. Results are sorted by soonest deadline, with notices that have no deadline last. Returns up to 100 notices per call with the total match count; use offset to page. Use get_opportunity for a notice's full description and contacts.

Data is SAM.gov's public daily file of active notices, not live SAM.gov. Archived notices and attachments are not included.

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": "search_opportunities"
  }
}

Input Schema

NameRequiredDescriptionDefault
sortNodeadline: soonest response deadline first. newest: most recently posted first. relevance: best keyword match first (needs keywords).deadline
limitNo
agencyNoText matched against the department, sub-tier, and office names, e.g. Army, Veterans Affairs, NSWC Dahlgren. Field activities post under their own office names, so a command name matches only its headquarters office (NAVSEA matches NAVSEA HQ, not NSWC or NUWC offices).
offsetNo
keywordsNoWords that must all appear in the title or full description. Put exact phrases in double quotes, e.g. zero trust "cloud migration". Word endings are matched loosely (bridge matches bridges).
posted_toNoLatest posted date, YYYY-MM-DD.
psc_codesNoProduct and service codes or prefixes, e.g. D3 or R425.
deadline_toNoLatest response deadline date, YYYY-MM-DD.
naics_codesNoNAICS codes or prefixes (2 to 6 digits); a prefix such as 5415 matches every code under it.
posted_fromNoEarliest posted date, YYYY-MM-DD.
notice_typesNoCurrent notice types to include. Omit for all types.
office_stateNoTwo-letter state code of the contracting office. Filled in on nearly every notice, but an office's state is not always where the work happens.
deadline_fromNoEarliest response deadline date, YYYY-MM-DD, in the deadline's own time zone.
set_aside_codesNoSAM.gov set-aside codes, e.g. SBA (total small business), 8A, SDVOSBC, WOSB, HZC. NONE means the notice says no set-aside was used.
solicitation_numberNoExact solicitation number.
include_past_deadlinesNoInclude notices whose response deadline has already passed. SAM.gov keeps notices active for a while after the deadline; by default they are left out. Award notices and justifications are always included, even when they list a past deadline, and so are notices with no deadline.
include_earlier_versionsNoInclude earlier versions of amended notices. SAM.gov's file lists every version of a notice as its own row; by default only the latest version of each is included.
place_of_performance_stateNoTwo-letter state code for the place of performance. Most notices leave the place of performance blank, so results also report how many more notices have a contracting office in that state (see office_state).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the read-only and non-destructive annotations, the description discloses important behavior: only latest amended-notice versions are included by default, past-deadline notices are excluded except award notices, justifications, and notices with no deadline, and include_past_deadlines can override that. It also explains sorting, the 100-result cap with total count, offset paging, and that archived notices and attachments are absent.

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

Conciseness5/5

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

The description is front-loaded with the core search purpose, then proceeds through filtering defaults, paging, an alternative tool, and data-source caveats. Despite covering a complex 18-parameter tool, every paragraph earns its place and no sentence is wasted.

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?

For a complex search tool without an output schema, the description supplies the missing operational context: result cap, total match count, offset paging, sort default, stale-data caveat, archived-notice exclusion, and the sibling to use for full details. An agent has enough information to call it correctly and understand what the results represent.

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 high at 89%, so the schema already documents most individual parameters. The description adds useful cross-parameter semantics: filters combine, keywords search titles and full descriptions, include_past_deadlines changes the default deadline exclusion set, and offset supports paging through results beyond the 100-notice cap.

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: search active SAM.gov contract opportunity notices, and lists the notice categories covered. It also distinguishes the tool from get_opportunity by pointing to that sibling for full descriptions and contacts, so an agent can choose between them without opening either schema.

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

Usage Guidelines4/5

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

The description gives clear usage context: it names get_opportunity for full notice details and contacts, explains default exclusions, and clarifies that data comes from SAM.gov's daily file rather than live SAM.gov. It does not explicitly address when to use summarize_opportunities or when not to use this search, so it stops short of full alternative routing.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.