Skip to main content
Glama

Search Historical Federal Contract Awards & CLIN Pricing

search_historical_awards
Read-onlyIdempotent

Query historical federal contract awards, incumbent prime contractors, award ceilings, and labor/CLIN pricing benchmarks filtered by keyword, agency, or 6-digit NAICS code. This is a read-only, stateless, non-destructive database query (requires X-RapidAPI-Key; all filter parameters are optional and combinable, returning up to limit [default 20, max 100] matching historical awards per call). Use this tool when researching past award prices, incumbent vendors, or Price-to-Win (PTW) benchmarks; use get_live_solicitations instead to find currently open RFPs available for bidding, or classify_naics_psc_nigp if you need to discover the right NAICS code first.

Input Schema

NameRequiredDescriptionDefault
limitNoMaximum number of award records to return.
agencyNoOptional issuing federal or state agency name substring filter (e.g., 'Department of Defense', 'Veterans Affairs').
keywordsNoRequired technical or domain search keywords matched against award descriptions and CLIN titles (e.g., 'zero trust', 'cloud migration', 'SIEM').
naics_codeNoOptional exact 6-digit North American Industry Classification System (NAICS) code filter (e.g., '541512' for Computer Systems Design).
max_amount_usdNoMaximum award amount in USD.
min_amount_usdNoMinimum award amount in USD.

Output Schema

NameRequiredDescriptionDefault
queryNoEchoed query parameter or filter criteria.
resultsNoList of standardized award records with line items.
total_countNoTotal number of matching award records found.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed13 schema fields changed
    • addedInput schema / properties / agency / maxLength
      Added value: +100000
    • addedInput schema / properties / agency / minLength
      Added value: +1
    • addedInput schema / properties / limit
      Added value: +{
      +  "default": 10,
      +  "description": "Maximum number of award records to return.",
      +  "maximum": 100,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / max_amount_usd
      Added value: +{
      +  "description": "Maximum award amount in USD.",
      +  "maximum": 1000000000,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / min_amount_usd
      Added value: +{
      +  "description": "Minimum award amount in USD.",
      +  "maximum": 1000000000,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / naics_code / maxLength
      Added value: +100000
    • addedInput schema / properties / naics_code / minLength
      Added value: +1
    • removedInput schema / required
      Removed value: -[
      -  "keywords"
      -]
    • removedOutput schema / properties / awards
      Removed value: -{
      -  "description": "List of historical contract awards with recipient, agency, ceiling amount, NAICS, and labor/CLIN benchmarks.",
      -  "items": {
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
    • addedOutput schema / properties / query
      Added value: +{
      +  "description": "Echoed query parameter or filter criteria.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / results
      Added value: +{
      +  "description": "List of standardized award records with line items.",
      +  "items": {
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / total_count
      Added value: +{
      +  "description": "Total number of matching award records found.",
      +  "type": "integer"
      +}
    • removedOutput schema / properties / total_matches
      Removed value: -{
      -  "description": "Number of historical award records matching the query.",
      -  "type": "integer"
      -}
  2. Changed7 schema fields changed
    • changedInput schema / properties / agency / description
      Previous value: -"Optional agency name filter."New value: +"Optional issuing federal or state agency name substring filter (e.g., 'Department of Defense', 'Veterans Affairs')."
    • changedInput schema / properties / keywords / description
      Previous value: -"Search keywords (e.g., 'zero trust', 'cloud migration', 'SIEM')."New value: +"Required technical or domain search keywords matched against award descriptions and CLIN titles (e.g., 'zero trust', 'cloud migration', 'SIEM')."
    • addedInput schema / properties / keywords / maxLength
      Added value: +200
    • addedInput schema / properties / keywords / minLength
      Added value: +2
    • changedInput schema / properties / naics_code / description
      Previous value: -"Optional 6-digit NAICS code filter (e.g., '541512')."New value: +"Optional exact 6-digit North American Industry Classification System (NAICS) code filter (e.g., '541512' for Computer Systems Design)."
    • addedInput schema / properties / naics_code / pattern
      Added value: +"^[0-9]{6}$"
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "awards": {
      +      "description": "List of historical contract awards with recipient, agency, ceiling amount, NAICS, and labor/CLIN benchmarks.",
      +      "items": {
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "total_matches": {
      +      "description": "Number of historical award records matching the query.",
      +      "type": "integer"
      +    }
      +  },
      +  "type": "object"
      +}
  3. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/destructiveHint, so the description's 'read-only, stateless, non-destructive' phrasing is partly redundant. It does add genuinely new context: the X-RapidAPI-Key credential requirement, that all filters are optional and combinable, and the per-call result cap. The only weakness is that the stated default (20) conflicts with the schema default (10), which could mislead on result volume.

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?

Two dense sentences, front-loaded with purpose then routing rules, with no filler sentences. Some phrases ('stateless, non-destructive') restate annotation data rather than adding value, which keeps it just short of a 5.

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?

An output schema exists, so return-shape explanation is rightly omitted. Purpose, alternatives, auth requirement, and result limits are all present; the only incompleteness is the mismatched default-limit figure that an agent might rely on for planning.

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 coverage is 100%, so per the baseline this is a 3; the description adds only the combinability/optionality note beyond the schema. It actively introduces an error by stating a default limit of 20 when the schema declares default 10, so it does not earn above baseline.

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?

States a specific verb and resource set (historical federal contract awards, incumbent primes, award ceilings, CLIN/labor pricing benchmarks) plus the filter dimensions. This is clearly distinguishable from get_live_solicitations (open RFPs) and classify_naics_psc_nigp (NAICS discovery) 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 Guidelines5/5

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

Explicitly names the research scenarios (past award prices, incumbent vendors, Price-to-Win benchmarks) and routes the agent elsewhere by name: get_live_solicitations for open RFPs and classify_naics_psc_nigp when the NAICS code is unknown. Both the use and the do-not-use paths are covered.

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.

Resources