Skip to main content
Glama
US Federal Procurement MCP

US Federal Procurement MCP

by omardaaboul

US Federal Procurement MCP

소기업을 위한 연방 조달 인텔리전스 — MCP 서버 형태. 계약 기회를 검색하고, set-aside 및 NAICS 코드를 이해하며, 입찰 적합성과 위험을 분석할 수 있습니다 — Claude, Cursor 또는 모든 MCP 클라이언트 안에서.

이 도구는 미국 소기업(SBA) 조달의 가장 큰 공백을 메웁니다. 공개 인터넷으로 학습한 LLM은 현재 계약 기회를 알 수 없고, 입찰을 추진할 가치가 있는지 결정하는 set-aside 규칙, FAR 기준액, NAICS 구조를 안정적으로 떠올리지 못합니다. 이 서버는 그 정보를 실재하고 쿼리 가능하게 만듭니다.


도구 (9개)

도구

기능

search_opportunities

키워드 / 기관 / set-aside / NAICS / 주 / 금액 / 마감일로 연방 기회 검색

market_snapshot_tool

set-aside, 업종, 기관 및 금액 개요 + 긴급 마감일

analyze_solicitation

근거 기반 소기업 적합성 평가(불충분 / 불일치 / 검토 / 잠재적) + 위험 신호 스캔(보증금, 매출액, 과거 실적)

solicitation_review

3단계 심층 검토: 전체 공고 + 첨부 파일을 가져오고, 입찰자 역량 프로필과 출처 연결 추출(지침, 평가 요소, 조항, 수정 사항)을 결합

look_up_naics

설명을 NAICS 업종으로 변환

look_up_set_aside

set-aside 설명 (Small Business, 8(a), HUBZone, WOSB, SDVOSBC…)

federal_thresholds

소액 구매, SAT, Miller Act 보증금, 하도급 계획 기준값

opportunity_details

단일 기회의 전체 기록(담당자, 링크, 수주 포함) + 주 이름 — 실시간 또는 샘플

opportunity_type

SAM.gov 유형 코드의 의미 (sources sought, solicitation, J&A…)

모든 것은 결정적이고, 타입이 지정되며, 데이터 출처에 대해 정직합니다.


Related MCP server: GovCon

설치 및 실행

python3 -m venv .venv
.venv/bin/pip install -e ".[test]"
.venv/bin/pytest tests/ -q      # 84 tests incl. real MCP stdio integration
.venv/bin/us-gov-mcp            # or: .venv/bin/python -m usgovmcp.server

클라이언트 연결

Claude Desktop / Claude Code / Cursor → configs/mcp-config.json 참조 (표준 예시: 동일한 JSON이 Claude Desktop과 Cursor에서 작동합니다. Claude Code의 경우 claude mcp add를 사용하세요). PYTHONPATH를 이 저장소로 설정하고, 선택적으로 SAM_GOV_API_KEY를 추가하세요.


데이터

  • 기본값: 명확하게 라벨링된 샘플 기회 번들 포함 — 키 없이도 작동하고 테스트됩니다.

  • 실시간 (SAM.gov): SAM.gov 계정에서 무료 공개 API 키를 받으세요 → Account Details → request a public API key. SAM_GOV_API_KEY를 설정하세요. 공급자(SAMGovProvider)는 이미 api.sam.gov/opportunities/v2/search와 통신하며 실제 응답 형태에 대해 단위 테스트되어 있습니다. 실시간 데이터는 절대 위조되지 않습니다 — 키가 설정될 때까지 라벨된 샘플이 반환됩니다.


구조

us-gov-mcp/
├── usgovmcp/
│   ├── server.py       ← FastMCP server wiring all tools
│   ├── knowledge.py    ← NAICS, set-asides, FAR thresholds, red-flag rules
│   ├── analyzer.py     ← evidence-backed fit assessment + red-flag scan
│   ├── solicit.py      ← bidder capability profile + source-linked extraction (Phase 3)
│   ├── providers.py    ← bundled + SAM.gov live providers
│   ├── models.py       ← typed Opportunity / search params / ProviderResult
│   ├── intel.py        ← market-snapshot aggregation
│   └── sample_data.py  ← labeled demo opportunities
├── configs/
├── scripts/smoke.py          ← CI startup check (fails pipeline on broken server)
├── scripts/secret_scan.sh    ← CI gate: blocks committed credentials
├── cache.py                  ← bounded TTL cache (protects SAM.gov quota)
├── tests/                    ← 84 tests incl. real stdio protocol integration
├── constraints.txt           ← tested/locked dependency set for releases
├── CONTRIBUTING.md SECURITY.md LICENSE CHANGELOG.md
├── pyproject.toml            ← also ruff + mypy config
└── README.md

CI는 두 작업을 실행합니다: test (Python 3.10/3.11/3.12) 및 quality (ruff 린트 + 형식 검사, mypy, 패키지 빌드, 비밀 스캔). MIT 라이선스. 법률 자문이 아닙니다 — 입찰 전 항상 전체 공고를 읽으세요.


신뢰 및 근거 규칙

  • analyze_solicitation은 누락된 근거로 확신 있는 적합성을 절대 생성하지 않습니다: 알 수 없는 공고와 빈 텍스트는 insufficient_information을 반환합니다.

  • 공급자 결과는 타입이 지정됩니다(ProviderResult): ok, no_matches, authentication_error, rate_limited, upstream_error, parse_error, no_key. 키 없이 sam_gov를 요청하면 no_key를 반환합니다 — 조용하고 오해를 부르는 빈 목록이 아닙니다.

  • 모든 데이터는 출처별로 정직하게 라벨링됩니다(bundled_sample vs sam_gov).

Available Tools

9 tools
analyze_solicitationA

Evidence-backed small-business fit assessment + red-flag scan.

Provide either a notice_id (looked up from live SAM.gov or the sample pool) or pasted text of a solicitation. Returns one of: insufficient_information / likely_mismatch / requires_capability_review / potential_fit, with the evidence reviewed, gates, and what's missing.

Effortless proof rule: missing evidence can NEVER produce a confident fit.

NameRequiredDescriptionDefault
textNo
sourceNoauto
notice_idNo
set_asideNo
is_small_businessNo
response_days_leftNo
value_estimate_usdNo

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden. It discloses the data lookup behavior, the possible return classifications, the evidence/gates output, and the key proof rule that missing evidence can never produce a confident fit. It does not cover edge cases like both text and notice_id being provided, but the core behavior is well disclosed.

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 compact and well structured: purpose first, then input modes, then output and behavior. Every sentence adds useful information, and there is no repetition of the tool name or schema boilerplate.

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

Completeness3/5

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

The description covers the main call flow, input alternatives, output taxonomy, and core behavioral rule even without an output schema. However, it leaves several parameters unexplained and does not clarify how they influence the assessment or what happens when conflicting inputs are supplied. It is usable but not fully complete.

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

Parameters2/5

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

Schema description coverage is 0%, so the description needs to explain the parameters. It only clarifies text and notice_id, while source, set_aside, is_small_business, response_days_left, and value_estimate_usd are left to inference from their names and types. This is a significant gap for a tool with seven parameters.

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 clearly identifies the tool as an evidence-backed small-business fit assessment and red-flag scan for solicitations. It names the exact output categories, making the tool's function and value unmistakable. It also differentiates itself from siblings by focusing on fit classification rather than general search or review.

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 explicit input guidance: provide either a notice_id or pasted solicitation text, with notice_id sourced from live SAM.gov or the sample pool. This clearly implies when to use the tool, but it does not explicitly compare it to solicitation_review or state when not to use it, so it falls just short of a 5.

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

federal_thresholdsA

Return federal procurement thresholds (USD) with source provenance (citation, effective date, superseded value). Names: micro_purchase_general, simplified_acquisition_threshold, miller_act_bond, subcontracting_plan_services, subcontracting_plan_construction.

NameRequiredDescriptionDefault
nameNo

TDQS

A4.1/5.0
Behavior3/5

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

Without annotations, the description must carry the burden of behavioral disclosure. It discloses that results are in USD and include provenance (citation, effective date, superseded value), which is useful. However, it does not explain error behavior for invalid names, whether all thresholds are returned when no name is given, or any access requirements. No annotations exist, so this is a partial gap.

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?

Two sentences with zero waste: the first states the purpose and return content, the second lists the valid names. Information is front-loaded and every word earns its place.

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

Completeness4/5

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

For a simple tool with no output schema, the description covers the main elements: it explains what is returned (thresholds with provenance) and enumerates valid inputs. It omits the optionality of the 'name' parameter and the behavior when omitted, which an agent would have to infer from the schema default. That is a minor but real gap.

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

Parameters5/5

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

Schema coverage is 0% with only a generic 'name' parameter. The description directly compensates by enumerating the five valid names, giving the agent concrete allowed values. This adds substantial meaning beyond the raw schema.

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 ('Return'), a concrete resource ('federal procurement thresholds (USD)'), and clarifies the output includes source provenance. It lists the valid threshold names, distinguishing this from sibling tools focused on opportunities, NAICS, and solicitations.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives is provided. The purpose is implied by the name and content, but there is no statement such as 'use when you need threshold amounts' or 'instead of market_snapshot_tool'. Thus it relies on inference.

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

look_up_naicsA

Map a goods/services description to NAICS sectors (note: curated 2-digit sectors).

NameRequiredDescriptionDefault
queryNo

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose an important limitation: only curated 2-digit sectors are returned, not full NAICS detail. However, it does not describe return format, matching behavior, or whether multiple sectors may be returned, which leaves some uncertainty for an agent.

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 a single concise sentence with no filler. The primary action is front-loaded and the important curated-sector caveat is included parenthetically without disrupting clarity.

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

Completeness3/5

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

The tool is simple, with one optional-looking parameter and no output schema, so the description carries responsibility for explaining both input and output. It explains the input and high-level output, and adds a scope limitation. It still lacks detail about the response structure and how results should be interpreted, but it is minimally sufficient for a simple lookup.

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

Parameters3/5

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

The schema provides no description for the single 'query' parameter, so the description must compensate. It does indicate that the query should be a goods/services description, which adds meaning beyond the schema. But it does not clarify formatting, requiredness, or expected length, and the schema shows a default empty string, which is ambiguous.

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

Purpose4/5

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

The description uses a specific verb ('Map') and identifies both the input (goods/services description) and the output (NAICS sectors). The note about curated 2-digit sectors adds useful scope. However, it does not explicitly distinguish itself from siblings like look_up_set_aside, though the focus on NAICS sectors makes it reasonably distinct.

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

Usage Guidelines3/5

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

The description implies the tool should be used when an agent has a goods/services description and needs related NAICS sectors. It does not provide explicit when-to-use vs. alternatives, exclusions, or mention of the curated 2-digit scope as a reason to prefer other tools for more granular NAICS lookups.

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

look_up_set_asideB

Explain a SAM.gov set-aside (official codes: SBA, SBP, 8A, 8AN, HZC, HZS, WOSB, WOSBSS, EDWOSB, EDWOSBSS, SDVOSBC, SDVOSBS, VSA ...).

NameRequiredDescriptionDefault
code_or_labelYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral disclosure burden. 'Explain' makes it clear this is a read-only lookup, and the official-code list defines the accepted domain. However, it does not disclose behavior for unknown codes, whether labels are accepted, or whether the ellipsis means the list is non-exhaustive.

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?

The description is a single front-loaded sentence that states the action before listing valid codes. It contains no filler, and the code list is directly useful for callers. The ellipsis is mildly vague but does not make the description bloated.

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

Completeness3/5

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

For a one-parameter lookup tool with no output schema, this is minimally adequate: an agent can infer the call shape and likely value domain. It is incomplete because it lacks usage guidance, validation behavior, sample labels, and clarification that the visible code list is not exhaustive.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It partially does by enumerating accepted code values and including '...' to suggest more exist. It does not explain what a 'label' means, case sensitivity, or input formatting, leaving the sole parameter partly underspecified.

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

Purpose4/5

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

The description states a clear verb and resource: 'Explain a SAM.gov set-aside' with an explicit list of official codes. It distinguishes the tool from siblings by resource (set-aside codes vs NAICS, opportunities, etc.), though it does not explicitly name any sibling to differentiate from.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus alternatives such as look_up_naics or opportunity_type. The description implies a lookup use case, but it never states when this tool is the right choice or when a sibling would be better.

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

market_snapshot_toolC

Overview of available federal opportunities: set-asides, NAICS sectors, agencies, typical values, and urgent deadlines.

NameRequiredDescriptionDefault
stateNo
set_asideNo
max_resultsNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations exist, so the description carries the full burden of behavioral disclosure. It states the content categories included but does not explain how the optional state or set_aside filters affect results, whether the output is aggregate counts or individual opportunities, how 'urgent deadlines' are determined, or whether any side effects exist.

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?

The description is a single concise sentence that front-loads the core purpose and lists key content areas. It is efficient, though it reads more like a noun-phrase summary than an actionable tool description.

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

Completeness2/5

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

Given no output schema and no annotations, the description is too sparse for an agent to fully understand invocation behavior. It does not clarify how the filters interact, what 'typical values' or 'urgent deadlines' mean in output terms, or how this tool compares to closely related siblings.

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

Parameters2/5

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

Schema description coverage is 0%, and the description only loosely hints at 'set-asides' corresponding to the set_aside parameter. The state and max_results parameters are not explained at all, including what values are expected or how the result limit behaves.

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

Purpose4/5

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

The description conveys that the tool provides an 'Overview of available federal opportunities' and lists meaningful content dimensions such as set-asides, NAICS sectors, agencies, typical values, and urgent deadlines. It is clear as a summary/overview function, though it lacks a direct action verb and does not explicitly differentiate itself from search_opportunities.

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

Usage Guidelines2/5

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

There is no guidance on when to use this snapshot tool versus the sibling tools like search_opportunities, look_up_naics, or federal_thresholds. The word 'overview' implies a high-level starting point, but no explicit when-to-use or when-not-to-use conditions are provided.

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

opportunity_detailsA

Full structured record for one opportunity by notice id (live SAM.gov if available, else sample pool). Sensitive/noisy fields are behind detail=true.

NameRequiredDescriptionDefault
sourceNoauto
notice_idYes

TDQS

A3.7/5.0
Behavior3/5

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

The description discloses two behavioral traits: live SAM.gov fallback to sample pool and sensitive/noisy fields gated behind detail=true. However, it leaves ambiguity around how detail is set since the input schema does not include a detail parameter, and it says nothing about error behavior or response shape.

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 entire description is a single focused sentence that front-loads the core purpose and then adds relevant caveats. Every phrase earns its place, with no filler or repetition.

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

Completeness2/5

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

With no output schema and no annotations, the description carries the full burden of explaining behavior. It fails to clarify the detail=true mechanism, the accepted values of source, what happens when a notice_id has no match, or what the full structured record looks like. This leaves an agent with important gaps for correct invocation.

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

Parameters2/5

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

Notice_id is clearly explained as the lookup key, and the live/sample pool note vaguely relates to the source parameter. But the source parameter itself is never explicitly described, and detail=true is mentioned without being a property in the input schema, creating confusion about whether it is a request parameter or a response characteristic.

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 uses a specific phrase 'Full structured record for one opportunity by notice id' that clearly identifies both the resource type and the lookup scope. It also differentiates itself from the sibling search_opportunities tool by emphasizing a single record rather than a search result set.

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 implies a clear use case: use this tool when you need a complete record for a specific opportunity identified by notice_id. It does not explicitly name alternatives or exclusions, but the 'by notice id' qualifier provides enough context to distinguish it from search-oriented siblings.

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

opportunity_typeA

Explain a SAM.gov opportunity type (ptype) code. Official: o=Solicitation, k=Combined Synopsis/Solicitation, r=Sources Sought, p=Presolicitation, u=J&A, a=Award, s=Special Notice, g=Surplus, i=Intent to Bundle.

NameRequiredDescriptionDefault
codeYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and mostly succeeds by enumerating all supported code mappings. It does not specify behavior for unknown or case-variant codes or the return format, but the mapping itself makes the tool's behavior largely transparent.

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 purpose is front-loaded in one sentence, followed by a compact table of code mappings. Every line carries information, and there is no filler or repetition.

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

Completeness4/5

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

For a single-parameter lookup tool with no output schema, the description is nearly complete. It could add a note about return format or invalid-code handling, but the low complexity means an agent can invoke it correctly with the information provided.

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

Parameters5/5

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

The schema provides zero description coverage for the single 'code' parameter, so the description must compensate. It does so fully by listing every accepted code and its meaning, which gives the agent everything it needs to construct a valid input.

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 opens with a specific verb and resource: 'Explain a SAM.gov opportunity type (ptype) code.' It then supplies the full code-to-label map, which clearly distinguishes this lookup tool from siblings like search_opportunities or look_up_naics.

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

Usage Guidelines3/5

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

Usage is implied: an agent should use this tool when it has a ptype code and needs its official meaning. However, the description does not explicitly state when not to use it or name alternatives for related lookups such as NAICS or set-aside codes.

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

search_opportunitiesA

Search federal contract opportunities (beta.SAM.gov).

Filters: free-text query, agency, set-aside (small/8a/hubzone/wosb/sdvosb), NAICS (sector or 2-6 digit code), performance state (2-letter), opportunity type code, value range (USD), and response-deadline window. Returns typed results distinguishing no-match from an upstream failure.

NameRequiredDescriptionDefault
limitNo
naicsNo
queryNo
stateNo
agencyNo
sourceNoauto
set_asideNo
type_codeNo
max_value_usdNo
min_value_usdNo
due_within_daysNo

Output Schema

NameRequiredDescription
sourceNo
statusYes
recordsNo
diagnosticsNo
retrieved_atNo
total_recordsNo

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It adds a valuable behavioral note: 'Returns typed results distinguishing no-match from an upstream failure,' which helps an agent interpret failures correctly. It also notes the beta.SAM.gov source, but does not cover rate limits, authentication, or pagination.

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 concise and front-loaded, starting with the core action and source before enumerating filters. Every sentence adds value, and the filter list is dense without being padded. It avoids repeating schema field names verbatim and stays appropriately short for its complexity.

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

Completeness4/5

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

Given 11 parameters and zero schema descriptions, the description covers most essential invocation concerns: what is searched, the source, available filters, and result behavior. The 'source' parameter is left unexplained and limit behavior is not described, but the presence of an output schema partially reduces the need to document return values.

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 description coverage is 0%, so the description must compensate. It adds meaningful format and unit context for many parameters: set-aside values, NAICS code length, state as 2-letter, value range in USD, and response-deadline window. It omits semantics for 'limit' and 'source,' which remain ambiguous aside from their schema defaults.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Search federal contract opportunities (beta.SAM.gov).' It names a specific verb, resource, and lists the major filter dimensions. It does not explicitly differentiate from sibling tools like opportunity_details or market_snapshot_tool, but the search framing is distinguishable enough.

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

Usage Guidelines2/5

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

The description gives no guidance about when to use this tool versus alternatives, and it does not mention exclusions or prerequisites. It lists filters but does not explain when a search would be preferred over look_up_naics, opportunity_details, or market_snapshot_tool. This leaves usage context entirely implied.

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

solicitation_reviewA

Phase-3 evidence-backed solicitation review.

Looks up the notice (live SAM.gov by notice id, else sample), fetches the full description and attachment metadata (bounded, content-type checked), then combines BIDDER CAPABILITY facts with source-linked extraction of submission instructions, evaluation factors, mandatory clauses, period/place, and amendment history.

Missing bidder facts or missing documents surface as findings — a gap can never inflate the result toward 'potential_fit'.

NameRequiredDescriptionDefault
sourceNoauto
notice_idYes
capabilitiesNo
certificationsNo
clearance_levelNo
past_fed_primesNo
geographic_reachNo
naics_experienceNo
is_small_businessNo
bonding_capacity_usdNo
insurance_limits_usdNo

TDQS

A3.5/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does this well. It discloses live SAM.gov lookup with sample fallback, bounded and content-type-checked attachment metadata fetching, source-linked extraction, and a clear missing-data policy: gaps surface as findings and can never inflate the result toward 'potential_fit'.

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 dense but efficient, with no filler. It front-loads the purpose, then explains the process and closes with a behavioral guardrail. Every sentence adds relevant information.

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

Completeness3/5

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

The description explains the overall behavior and result philosophy well, but with 11 parameters, no output schema, and no annotations, it leaves important gaps: individual parameter semantics, output format, and explicit use-case boundaries. It is usable but not fully complete for a complex tool.

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

Parameters2/5

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

Schema description coverage is 0%, and the description only groups the many inputs under 'BIDDER CAPABILITY facts' without explaining individual parameters such as source, certifications, clearance_level, past_fed_primes, or bonding_capacity_usd. The parameter names provide some self-evident meaning, but the description does not compensate for the lack of schema documentation.

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

Purpose4/5

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

The description clearly identifies a solicitation review operation that looks up a notice and combines bidder capability facts with extracted solicitation data. It is specific about the resource and actions, though it does not explicitly distinguish itself from the sibling analyze_solicitation tool.

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

Usage Guidelines2/5

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

There is no explicit guidance about when to use this tool versus analyze_solicitation or other siblings. The 'Phase-3' label suggests a stage in a workflow, and the description implies evidence-backed review, but it never states conditions, exclusions, or alternatives.

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.

  1. 9 tool updatesv0.4.0
    • First observedanalyze_solicitation
    • First observedfederal_thresholds
    • First observedlook_up_naics
    • First observedlook_up_set_aside
    • First observedmarket_snapshot_tool
    • First observedopportunity_details
    • First observedopportunity_type
    • First observedsearch_opportunities
    • First observedsolicitation_review

TDQS

B3.4/5.0

Scored across 9 tools

Disambiguation4/5

Most tools have distinct purposes: search vs details vs analysis vs reference lookups are clearly separated. However, analyze_solicitation and solicitation_review overlap in solicitation-focused assessment, and market_snapshot_tool could be confused with search_opportunities by agents looking for an overview.

Naming Consistency3/5

Most tools use verb_noun patterns like search_opportunities, look_up_naics, analyze_solicitation, and federal_thresholds. This is inconsistent with market_snapshot_tool and opportunity_details, which use noun_phrase naming, and the mix of 'look_up' vs 'lookup' style is not fully predictable.

Tool Count5/5

Nine tools is a well-scoped size for a federal procurement domain, covering search, reference, and analysis workflows without bloat. Each tool serves a distinct functional area, and the count feels neither thin nor overwhelming.

Completeness4/5

The server covers core workflows: searching opportunities, viewing details, understanding codes/classifications, and analyzing solicitation fit. Minor gaps exist, such as no direct tool for listing agencies or saving/tracking opportunities, but the main user journey is supported end-to-end.

Maintenance

ActivityNo data
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables research of federal contract awards and competitive landscape analysis using the USASpending.gov API. Supports searching for contracts, analyzing recipients, tracking spending trends, and identifying market opportunities in government contracting.
    2
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Federal 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
    -
  • A
    license
    A
    quality
    B
    maintenance
    Search 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.
    3
    2
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    -