Skip to main content
Glama
cliwant

mcp-sam-gov

by cliwant

sam_lookup_notice_fields

Read-only

Batch enrich up to 100 SAM.gov opportunity notice IDs with null fields like NAICS code, set aside, place of performance, response deadline, and type using a cached daily CSV snapshot. Requires enabling CSV cache.

Instructions

BATCH-complete a sam_search_opportunities page in ONE call from the GSA daily bulk CSV (keyless). The keyless HAL list endpoint NULLS each result's naics/setAside/place-of-performance/responseDeadline/type; this tool returns those fields for 1..100 noticeIds at once (naicsCode, setAside + setAsideCode, popState/popCity/popZip/popCountry, responseDeadline, type, active, title) from a cached on-disk CSV index, instead of one sam_get_opportunity detail call per notice. OFF BY DEFAULT (no forced 226 MB download): enable by setting SAM_GOV_CSV_CACHE (a cache dir) or SAM_GOV_ENABLE_CSV=1 — when disabled the tool returns data.enabled:false + a structured 'how to enable' note (never fake data, no network). HONEST: _meta carries the CSV last-modified + index build time (freshness), a noticeId absent from the current snapshot returns found:false + nulls with an explicit 'not in current CSV snapshot' disclosure (never faked), a cold first call discloses 'index warming', and a download/parse failure is a structured retryable error (never a silent empty). setAsideCode (e.g. 'SBA') matches sam_get_opportunity's setAside; the snapshot can lag live by up to ~24h — confirm real-time-critical fields with sam_get_opportunity.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
noticeIdsYes1..100 32-char hex noticeIds (the ids returned by sam_search_opportunities) to enrich in ONE batch. Completes a whole search page's null naics/setAside/place-of-performance/deadline/type from the cached GSA daily CSV. OFF BY DEFAULT — enable by setting SAM_GOV_CSV_CACHE (a cache dir) or SAM_GOV_ENABLE_CSV=1.
Behavior5/5

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

The description discloses all critical behaviors beyond annotations: off-by-default, honest error handling (no fake data), freshness meta, index warming, structured error messages, and 24h lag. Annotations already indicate readOnlyHint=true and openWorldHint=true, but the description adds substantial context about caching, failures, and return behavior.

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 relatively long but well-structured with clear sections (BATCH, OFF BY DEFAULT, HONEST). Every sentence adds value, though some repetition could be trimmed. The length is justified by the complexity of the tool's behavior.

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?

Given the tool's complexity (batch enrichment, caching, off-by-default), the description covers all necessary context: why it exists, how to enable, behavior when disabled, freshness, error handling, and limitations (24h lag). No output schema exists, but the description hints at returned fields. This is fully adequate for the agent to use correctly.

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?

The single parameter 'noticeIds' is fully described in the schema with 100% coverage, including constraints (1-100, 32-char hex). The description adds context about batch completion of a search page and the enrichment details, going beyond the schema. However, the schema already provides the essential constraints, so the description adds marginal value.

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 states that this tool is a batch enrichment for notice IDs from a CSV cache, completing fields that are null in sam_search_opportunities results. It explicitly distinguishes from sam_get_opportunity by noting it avoids one-per-notice calls. The verb 'BATCH-complete' and resource 'a sam_search_opportunities page' are specific and unambiguous.

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?

The description provides explicit guidance on when to use (batch enrichment of a search page) and when not (real-time-critical fields should use sam_get_opportunity). It also details how to enable the tool (setting environment variables) and what happens when disabled. This clearly differentiates from siblings like sam_get_opportunity and sam_search_opportunities.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cliwant/mcp-sam-gov'

If you have feedback or need assistance with the MCP directory API, please join our Discord server