federal-opportunities
Server Details
Federal construction & renovation contract opportunities from SAM.gov, by state, NAICS, or keyword.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
Each tool has a clear primary purpose: retrieving a single record, searching with filters, pulling aggregate statistics, and listing top states. The only minor overlap is between get_stats and list_states, which both surface state-level volume data, but their descriptions make the different grain clear.
All tools follow a consistent verb_noun pattern in snake_case: get_opportunity, get_stats, list_states, search_opportunities. The verb varies by operation type (get/list/search) but is predictable and appropriate for each action.
Four tools is a well-scoped surface for a focused federal opportunities discovery server. Each tool provides a distinct access pattern: detail lookup, filtered search, aggregate snapshot, and state ranking, with no unnecessary extras.
The read-only domain is well covered: search discovers opportunities, get_opportunity provides full details, get_stats offers an aggregate overview, and list_states gives state-level rankings. No lifecycle operations are required for a public data feed, and the available filters cover the key dimensions.
Available Tools
4 toolsget_opportunityGet Federal Opportunity DetailsARead-onlyInspect
Get details for a specific federal opportunity by its SAM.gov notice ID: scope summary, deadline, location, agency, NAICS, set-aside, and value. Incumbent contractor, past-offer counts, contract ceiling, and win-probability scoring require a RenovationRoute account.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | SAM.gov external notice ID (e.g. "508-26-152") or RenovationRoute UUID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as readOnly and open-world, and the description does not contradict them. It adds useful access-related context by disclosing that several fields (incumbent contractor, past-offer counts, contract ceiling, win-probability scoring) require a RenovationRoute account, which helps an agent anticipate incomplete results or auth issues.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences deliver the core action, the required identifier, the returned data categories, and account-gated fields with no filler. The most important information is front-loaded, and every clause contributes useful guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only tool with no output schema, the description is complete: it states what the tool returns, which identifiers are accepted, and which fields are restricted by account level. An agent has enough information to invoke it correctly and set expectations about the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully documents the single 'id' parameter with type, length, examples, and accepted formats (SAM.gov ID or RenovationRoute UUID). The description reinforces that the ID identifies a federal opportunity but adds little semantic value beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Get details for a specific federal opportunity') and identifies the exact key ('by its SAM.gov notice ID'). It clearly separates this get-by-ID tool from the sibling search_opportunities, which is about finding opportunities rather than retrieving one known record.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the right usage context: call it when you already have a SAM.gov notice ID or RenovationRoute UUID for a specific opportunity. However, it does not explicitly state that search_opportunities should be used when the ID is unknown, leaving the routing decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statsFederal Opportunity Live StatsARead-onlyInspect
Get a real-time snapshot of active federal construction opportunities tracked by RenovationRoute. Returns total count, top states by volume, and breakdown by contract value tier.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already cover read-only and open-world behavior, lowering the bar. The description adds useful context beyond that: results are real-time and therefore volatile, scoped to active federal construction opportunities, and limited to opportunities tracked by RenovationRoute. This helps the agent set expectations about freshness and coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences with no filler. The action and resource are front-loaded, and every clause adds either scope or output detail. It is appropriately sized for a zero-parameter stats tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, no output schema, and annotations covering the safety profile, the description supplies the key decision facts: the universe covered (active federal construction opportunities tracked by RenovationRoute) and the three output categories. An agent can call the tool and know what to expect without needing exact field names or formatting details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and an empty schema, so there is no parameter burden for the description to carry. The description instead tells the agent what the response will contain, which is the useful semantic information for this zero-input call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Get a real-time snapshot of active federal construction opportunities') and then names the concrete outputs: total count, top states by volume, and contract value tier breakdown. This clearly distinguishes it from siblings like search_opportunities or get_opportunity, which imply list-level or record-level operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The aggregate wording ('snapshot', 'total count', 'top states', 'breakdown') implies this is for high-level overviews rather than searching or retrieving specific records. However, it never explicitly names alternatives or states when not to use the tool, so the agent must infer the intended usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_statesTop States by Opportunity VolumeARead-onlyInspect
List the US states with the most active federal construction opportunities on RenovationRoute, ranked by volume, with the count per state. Returns the top states, not an exhaustive list of all 50.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, and the description's 'List' verb is consistent with those. The description adds value beyond the annotations by disclosing that results are ranked by volume, limited to top states, and include a per-state count. No contradictions with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler. The primary verb, resource, and ranking behavior are front-loaded in the first sentence, and the second sentence adds the scope limitation that prevents misuse. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only list tool with no output schema, the description covers everything needed to invoke it correctly: what is returned (states), how it is organized (ranked by volume), what the count is, and its top-N limitation. The tool is simple, and the description fully matches its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the description is not obligated to explain argument semantics. The baseline for zero params is 4, and the description's mention of what each entry contains (state plus count) provides enough context to understand the result. No parameter documentation gap exists.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List'), a concrete resource ('US states with the most active federal construction opportunities on RenovationRoute'), and the output shape (ranked by volume, with count per state). The second sentence explicitly differentiates it from an exhaustive state list ('not an exhaustive list of all 50'), which distinguishes its scope from any sibling that might return full detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is clear: this is the tool for a high-level, ranked state overview rather than per-opportunity detail. The 'not an exhaustive list of all 50' clause sets an explicit boundary on when it should not be used. However, it does not name sibling tools such as search_opportunities or get_stats or state conditions for preferring them, so it stops short of explicit alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_opportunitiesSearch Federal Construction OpportunitiesARead-onlyInspect
Search active federal construction and renovation contract opportunities from SAM.gov. Filter by US state, NAICS code, keyword, or contract value tier. Returns up to 50 results ordered by most recently published. This is a per-query search, not a bulk export.
| Name | Required | Description | Default |
|---|---|---|---|
| tier | No | Contract value tier: micro (<$50k), small ($50k-$250k), mid ($250k-$1M), large ($1M-$10M), major (>$10M) | |
| limit | No | Number of results to return (max 50) | |
| naics | No | NAICS code, e.g. "238220" for plumbing | |
| state | No | 2-letter US state code, e.g. "VA", "TX", "MI" | |
| keyword | No | Keyword or phrase to search in title and description, e.g. "HVAC", "roofing", "design-build" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true and openWorldHint=true, meaning the tool is safe and returns a snapshot. The description adds the 'per-query search, not a bulk export' caveat and result cap of 50, which are useful beyond annotations. Does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, two sentences, and front-loads the core purpose. Every piece of information (source, filters, result cap, ordering, non-bulk note) is useful and non-redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a low-complexity search with no output schema. The description covers the essentials: what it searches, filters, result limit, ordering, and a caveat. However, it does not mention that all parameters are optional or that omitting filters returns a broad set, which could be clarified given openWorldHint. Minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameter descriptions are in the schema. The description mentions filtering by state, NAICS, keyword, or tier but does not add extra semantics beyond what the schema already provides. The 'tier' parameter is an enum with clear definitions in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the tool as a search for active federal construction and renovation contract opportunities from SAM.gov, with filtering by state, NAICS, keyword, or value tier. It distinguishes from siblings like get_opportunity (which likely fetches a specific record) and list_states (which lists states).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: when you need to search or filter opportunities, use this tool. It notes the result limit and ordering, and explicitly states it is not a bulk export. However, it does not explicitly mention when not to use it or name alternatives like get_opportunity for retrieving a single record.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- First observed
get_opportunity - First observed
get_stats - First observed
list_states - First observed
search_opportunities
Related MCP Connectors
Government contract search and federal procurement data: SAM.gov opportunities + USASpending awards.
U.S. federal contract opportunities from SAM.gov. Daily updates. Public Domain.
Daily watch on U.S. federal contract opportunities; deepest coverage on set-asides.
SAM.gov federal contracts: search, details, AI bid analysis. 33k+ live opportunities.
Related MCP Servers
- AlicenseAqualityBmaintenanceSearch and analyze U.S. federal government contracts and opportunities from SAM.gov. Tools for keyword search, contract details, competitive analysis, and capability statement drafting — built for AI agents via x402 USDC micropayments.32MIT
- AlicenseNot gradedqualityBmaintenanceOpen & historical US government bid solicitations from city/county portals — updated daily.9 npmMIT
- FlicenseNot gradedqualityDmaintenanceFederal procurement intelligence toolkit that searches SAM.gov contract opportunities, analyzes agency spending patterns, tracks competitor wins, and monitors small business set-aside programs (8a, HUBZone, SDVOSB, WOSB). 4 tools using SAM.gov and USASpending.gov data.3-
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to search federal contracts, analyze agency spending, track competitor wins, and monitor small business set-aside opportunities using SAM.gov, USASpending.gov, and FPDS data.-
Glama MCP Gateway
Add one secure layer between your agents and this server.