usa_award_search

Pack: usaspending · Connect: https://pipeworx.io/mcp (see Connect below for a single-pack URL)

No MCP client? Call it directly: GET https://gateway.pipeworx.io/v1/tools/usa_award_search for the schema, then POST the same URL with its arguments for the data.

Search US federal PROCUREMENT CONTRACTS / government contract awards for goods and services. Use recipient_name for “contracts won by Lockheed Martin”; keywords searches award descriptions/topics, not contractor identity. Dates are optional and default to the last 12 months for “recent” questions. Dates select awards ACTIVE in the window (not signed in it) and award_amount is the award’s LIFETIME obligation, so do not sum it as spending for the period. Results are paged: 100 per page max — pass page (and read page_metadata.has_next) to reach the rest. Returns recipient, award amount, outlays (with an outlays_reported flag, since DoD awards usually report none), dates, and contract type. Umbrella contracts (IDVs — CRS-2, NASA Launch Services II, CCtCap) are a SEPARATE result set in idvs, not in awards: read both, and idv_status says which you got. IDV and child-order amounts are disjoint, so totals.combined_amount is the correct total.

Parameters

NameTypeRequiredDescription
keywordsarraynoSearch keywords (e.g., [“cybersecurity”, “cloud”] or [“goods”, “services”])
itemsstringno
recipient_namestringnoContractor/recipient name (e.g., “Lockheed Martin”). Use for awards won by a company; do not put company names in keywords. Matched as a SUBSTRING of the registered legal name, so a brand name can miss the company entirely (“SpaceX” is not inside “SPACE EXPLORATION TECHNOLOGIES CORP.”); a known brand that matches nothing is retried under its legal name and the response says so in recipient_resolution. An empty result distinguishes no_match (no registered recipient has this name) from recipient_matched_no_awards (it does, but holds nothing under your window/agency filters) and lists the near-miss names in recipient_candidates.
statestringnoPlace-of-performance US state, 2-letter code (e.g., “MD”, “TX”). Filters to contracts performed in that state.
agencystringnoAwarding agency — full toptier name (“Department of Defense”) or the common abbreviation (DOD, DHS, VA, HHS, DOE, NASA, GSA, USDA, EPA…), which is expanded for you.
start_datestringnoStart date in YYYY-MM-DD format
end_datestringnoEnd date in YYYY-MM-DD format
naicsstringnoNAICS code to filter by (e.g., “541512”)
set_asidestringnoSmall-business set-aside filter. Accepts a family name (“HUBZone”, “8(a)”, “WOSB”, “EDWOSB”, “SDVOSB”, “Veteran”, “Small business”, “Indian”), a FAR code (“HZC”, “8AN”, “SDVOSBC”), or the literal USAspending description (“HUBZONE SET-ASIDE”). Matches both the set-aside and sole-source variants of a family.
limitnumbernoNumber of results per page (1-100, default 10)
pagenumberno1-based page number (default 1). total_results can exceed limit; page through with this and read page_metadata.has_next / total_pages to reach every row. The idvs array is served on page 1 only.
include_idvsbooleannoInclude umbrella contracts (indefinite delivery vehicles) as a separate idvs array. Default true. Leave it on: these are often a recipient’s largest awards, and excluding them understates a total silently.

Example call

Arguments

{
  "recipient_name": "Lockheed Martin",
  "limit": 10
}

curl

curl -X POST https://gateway.pipeworx.io/usaspending/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"usa_award_search","arguments":{"recipient_name":"Lockheed Martin","limit":10}}}'

TypeScript (@pipeworx/sdk)

import { Pipeworx } from '@pipeworx/sdk';
const pipeworx = new Pipeworx();

const result = await pipeworx.call('usa_award_search', {
  "recipient_name": "Lockheed Martin",
  "limit": 10
});

More examples

{
  "keywords": [
    "cybersecurity"
  ],
  "start_date": "2024-01-01",
  "end_date": "2024-12-31"
}
{
  "keywords": [
    "cloud",
    "infrastructure"
  ],
  "agency": "Department of Defense",
  "start_date": "2023-01-01",
  "end_date": "2024-12-31",
  "naics": "541512",
  "limit": 25
}
{
  "agency": "Department of Defense",
  "start_date": "2024-10-01",
  "end_date": "2024-12-31",
  "limit": 10
}

Response shape

Always returns: total_results, limit, awards, page, page_metadata, period_note, outlays_note, outlays_unreported_rows

FieldTypeDescription
total_resultsnumberTotal number of matching awards
limitnumberNumber of results returned
awardsarrayList of matching contract awards
pagenumber1-based page of results this response represents
page_metadataobjectWhere this response sits in the full result set
period_notestringStates that the date filter selects awards ACTIVE in the window and that award_amount is a lifetime obligation, not window spending
outlays_notestringExplains that a null total_outlays means not reported, and why DoD awards usually report none
outlays_unreported_rowsnumberHow many rows in this response carry no outlay figure
total_results_notestringPresent when no verified total is available for the query shape; says total_results is the rows in this response
Full JSON Schema
{
  "type": "object",
  "properties": {
    "total_results": {
      "type": "number",
      "description": "Total number of matching awards"
    },
    "limit": {
      "type": "number",
      "description": "Number of results returned"
    },
    "awards": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "award_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "Unique award identifier"
          },
          "recipient_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name of the contractor/recipient"
          },
          "award_amount": {
            "type": [
              "number",
              "null"
            ],
            "description": "Total award amount in dollars"
          },
          "total_outlays": {
            "type": [
              "number",
              "null"
            ],
            "description": "Total amount paid out, or null when the upstream reports none. null means not reported, not zero paid — see outlays_reported."
          },
          "start_date": {
            "type": [
              "string",
              "null"
            ],
            "description": "Award start date"
          },
          "end_date": {
            "type": [
              "string",
              "null"
            ],
            "description": "Award end date"
          },
          "awarding_agency": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name of the awarding agency"
          },
          "awarding_sub_agency": {
            "type": [
              "string",
              "null"
            ],
            "description": "Sub-agency that awarded the contract"
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Award description"
          },
          "naics_code": {
            "type": [
              "string",
              "null"
            ],
            "description": "NAICS industry code"
          },
          "contract_type": {
            "type": [
              "string",
              "null"
            ],
            "description": "Type of contract award"
          },
          "outlays_reported": {
            "type": "boolean",
            "description": "Whether the upstream published an outlay figure for this award. false means NOT REPORTED (most DoD contract awards are not linked to Treasury File C data), not that nothing was paid."
          }
        },
        "required": [
          "award_id",
          "recipient_name",
          "award_amount",
          "total_outlays",
          "start_date",
          "end_date",
          "awarding_agency",
          "awarding_sub_agency",
          "description",
          "naics_code",
          "contract_type",
          "outlays_reported"
        ]
      },
      "description": "List of matching contract awards"
    },
    "page": {
      "type": "number",
      "description": "1-based page of results this response represents"
    },
    "page_metadata": {
      "type": "object",
      "description": "Where this response sits in the full result set",
      "properties": {
        "page": {
          "type": "number",
          "description": "1-based page number"
        },
        "per_page": {
          "type": "number",
          "description": "Rows requested per page (max 100)"
        },
        "returned": {
          "type": "number",
          "description": "Rows actually in this response"
        },
        "has_next": {
          "type": "boolean",
          "description": "Whether a further page exists"
        },
        "has_previous": {
          "type": "boolean",
          "description": "Whether an earlier page exists"
        },
        "total_results": {
          "type": [
            "number",
            "null"
          ],
          "description": "Total matching awards, or null when no total is published"
        },
        "total_pages": {
          "type": [
            "number",
            "null"
          ],
          "description": "Total pages at this per_page, or null when no total is published"
        }
      },
      "required": [
        "page",
        "per_page",
        "returned",
        "has_next",
        "has_previous"
      ]
    },
    "period_note": {
      "type": "string",
      "description": "States that the date filter selects awards ACTIVE in the window and that award_amount is a lifetime obligation, not window spending"
    },
    "outlays_note": {
      "type": "string",
      "description": "Explains that a null total_outlays means not reported, and why DoD awards usually report none"
    },
    "outlays_unreported_rows": {
      "type": "number",
      "description": "How many rows in this response carry no outlay figure"
    },
    "total_results_note": {
      "type": "string",
      "description": "Present when no verified total is available for the query shape; says total_results is the rows in this response"
    }
  },
  "required": [
    "total_results",
    "limit",
    "awards",
    "page",
    "page_metadata",
    "period_note",
    "outlays_note",
    "outlays_unreported_rows"
  ]
}

Connect

Add this to your MCP client config — every tool in the catalog, including this one — or use one-click install buttons:

{
  "mcpServers": {
    "pipeworx": {
      "url": "https://pipeworx.io/mcp"
    }
  }
}
Connect to just the usaspending pack
{
  "mcpServers": {
    "usaspending": {
      "url": "https://gateway.pipeworx.io/usaspending/mcp"
    }
  }
}

See Getting Started for client-specific install steps.

Regenerated from source · build October 30, 2026