# USASpending.gov (pypi · usaspending-gov-mcp)

USASpending.gov awards, subawards, recipients, agencies, and federal accounts. 55 tools.

- Trust score: 79/100 (medium)
- Change this week: +18
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-20

## Components

- pypi · `usaspending-gov-mcp`: 79/100 (this document), [markdown](https://verifymcp.io/servers/com-1102tools-usaspending-gov-mcp/usaspending-gov-mcp.md), [page](https://verifymcp.io/servers/com-1102tools-usaspending-gov-mcp/usaspending-gov-mcp)

## Channel facts

- Registry: `pypi`
- Package: `usaspending-gov-mcp`
- Version: `1.0.9`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-20.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it.
  - 1 of 34 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 6 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 66/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 6850 tokens (~124/item across 55 items; 55 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 90/100
  - Stability observed for 27 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 71/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 0% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 55 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 55 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the USASpending.gov MCP server?

USASpending.gov runs locally as a PyPI package, launched with uvx usaspending-gov-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add com-1102tools-usaspending-gov-mcp -- uvx usaspending-gov-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "com-1102tools-usaspending-gov-mcp": {
      "command": "uvx",
      "args": [
        "usaspending-gov-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-1102tools-usaspending-gov-mcp": {
      "command": "uvx",
      "args": [
        "usaspending-gov-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add com-1102tools-usaspending-gov-mcp -- uvx usaspending-gov-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-1102tools-usaspending-gov-mcp": {
      "type": "local",
      "command": [
        "uvx",
        "usaspending-gov-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-1102tools-usaspending-gov-mcp --command uvx --arg usaspending-gov-mcp
```

### Hermes

```yaml
mcp_servers:
  com-1102tools-usaspending-gov-mcp:
    command: "uvx"
    args: ["usaspending-gov-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "com-1102tools-usaspending-gov-mcp": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "usaspending-gov-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-1102tools-usaspending-gov-mcp -t stdio -c uvx -a usaspending-gov-mcp
```

### Other

```json
{
  "mcpServers": {
    "com-1102tools-usaspending-gov-mcp": {
      "command": "uvx",
      "args": [
        "usaspending-gov-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-19 (score 79, +1)

No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-18 (score 78, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-09-17 (score 63, +1)

No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-15 (score 62, +1)

No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-13 (score 61, +1)

- [functional] Package version: 1.0.5 → 1.0.9
- [functional] Package version: 1.0.5 → 1.0.8
- [functional] Package version: 1.0.5 → 1.0.7

### 2026-09-10 (score 60, +1)

No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-08 (score 59, +1)

No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-06 (score 58, +1)

No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (55)

### `search_awards` (~867 tokens)

Search federal awards (contracts, IDVs, grants, loans, etc.) on USASpending.gov.

This is the primary workhorse for finding awards. Returns matching awards
with standard fields (Award ID, Recipient, Description, Amount, Agencies,
NAICS, PSC, dates). Use get_award_detail() with the generated_internal_id
from results to get full award details.

Important rules:
\- award_type groups cannot be mixed; pick one category per call
\- time_period_start/end use YYYY-MM-DD format
\- award_amount_min/max are in USD
\- place_of_performance_state is a 2-letter USPS code (e.g. 'MD', 'VA')
\- For loans, use award_type='loans' and sort='Loan Value'
\- def_codes filters to Disaster Emergency Fund codes (COVID-19, IIJA,
  IRA supplementals); see get_def_codes_reference() for the list

Filtering to specific contracting commands (NAVSEA, AFRL, etc.):
USASpending's subtier level is at the service branch (Department of the
Navy, Army, Air Force), not the contracting command. To filter to a
specific command, use keywords with the PIID office prefix instead:
\- NAVSEA contracts:  keywords=['N00024']
\- Army Contracting:  keywords=['W91CRB']
\- AFRL:              keywords=['FA8650']
\- NAVAIR:            keywords=['N00019']
This performs a substring match on the PIID field and is more reliable
than the award_ids filter for partial matches.

Common filter value references:
\- set_aside_type_codes: SBA, SBP, 8A, 8AN, HZC, HZS, SDVOSBS, SDVOSBC,
  WOSB, WOSBSS, EDWOSB, EDWOSBSS, VSA
\- extent_competed_type_codes: A (Full & Open), B, C, D, E, F, G, CDO, NDO
\- contract_pricing_type_codes: J (FFP), Y (T&M), Z (LH), U (CPFF),
  V (CPIF), R (CPAF), L (FP Incentive), M (FP Award Fee)

IMPORTANT: awarding_agency/funding_agency must be the FULL TOPTIER NAME,
not a slug. Use 'Department of Defense', NOT 'department-of-defense'.
Slugs silently return zero results, and so does any name that is not a
toptier agency: the military departments are SUBTIERS, so pass
awarding_agency='Department of Defense' with
awarding_s…

Input parameters:

- `award_amount_max`
- `award_amount_min`
- `award_ids`
- `award_type` (string)
- `awarding_agency`
- `awarding_subagency`
- `contract_pricing_type_codes`
- `def_codes`
- `extent_competed_type_codes`
- `funding_agency`
- `keywords`
- `limit` (integer)
- `naics_codes`
- `order` (string)
- `page` (integer)
- `place_of_performance_state`
- `psc_codes`
- `recipient_name`
- `set_aside_type_codes`
- `sort`
- `time_period_end`
- `time_period_start`

### `get_award_count` (~298 tokens)

Count awards matching filters, broken down by award category.

Returns counts grouped by: contracts, idvs, grants, loans, direct_payments, other.
Use this for dimensional analysis: how many FFP vs T&M awards, how many
competed vs sole-source, how many small business set-asides, etc.

Unlike search_awards, this returns total counts across ALL award categories
in a single call (not just the one specified in award_type). The award_type
parameter is ignored here; filters apply to the count query directly.

def_codes filters to Disaster Emergency Fund codes; see
get_def_codes_reference().

At least one filter is required (the API rejects empty filter sets with HTTP 400).
Typical usage: pass time_period_start + time_period_end, or a keywords/agency filter.

Input parameters:

- `award_amount_max`
- `award_amount_min`
- `award_type` (string)
- `awarding_agency`
- `awarding_subagency`
- `contract_pricing_type_codes`
- `def_codes`
- `extent_competed_type_codes`
- `funding_agency`
- `keywords`
- `naics_codes`
- `place_of_performance_state`
- `psc_codes`
- `recipient_name`
- `set_aside_type_codes`
- `time_period_end`
- `time_period_start`

### `spending_over_time` (~237 tokens)

Aggregate spending amounts over time, grouped by fiscal year, quarter, or month.

Use this to visualize spending trends, identify fiscal-year-end spikes,
or compare spending patterns across years.

Note: The API returns fiscal_year as a STRING. Cast to int for numeric
comparisons.

awarding_agency must be a TOPTIER agency name ('Department of Defense').
Military departments are subtiers: pass
awarding_subagency='Department of the Navy'. A non-toptier name in
awarding_agency (or a subagency that does not belong to the given
toptier) silently returns all-zero aggregates.

At least one filter is required (the API rejects empty filter sets with HTTP 400).
Typical usage: pass time_period_start + time_period_end.

Input parameters:

- `award_type`
- `awarding_agency`
- `awarding_subagency`
- `def_codes`
- `group` (string)
- `keywords`
- `naics_codes`
- `psc_codes`
- `recipient_name`
- `time_period_end`
- `time_period_start`

### `spending_by_category` (~290 tokens)

Aggregate spending by a dimension (top vendors, top agencies, top NAICS, etc.).

The 'category' parameter controls the grouping dimension. Common uses:
\- category='recipient': top vendors for a filter set (vendor landscape analysis)
\- category='awarding_subagency': which contracting offices within an agency
\- category='naics': which work categories got the most spending
\- category='psc': which product/service codes got the most spending
\- category='state_territory': geographic distribution
\- category='cfda': grant assistance listings

Note: recipient category returns vendor names in ALL CAPS and may contain
duplicates (subsidiaries, rebrands, re-registrations). For precise market
share, apply name normalization to the returned 'name' field.

At least one filter is required. An unfiltered call would silently
aggregate the entire USASpending database (all years, all agencies),
which is never what a caller wants.

Input parameters:

- `award_type`
- `awarding_agency`
- `awarding_subagency`
- `category` (string, required)
- `def_codes`
- `keywords`
- `limit` (integer)
- `naics_codes`
- `page` (integer)
- `psc_codes`
- `set_aside_type_codes`
- `time_period_end`
- `time_period_start`

### `get_award_detail` (~186 tokens)

Fetch full details for a single award by its generated_internal_id.

Use the generated_internal_id value returned by search_awards to fetch
the complete award record. Returns: PIID, full description, total
obligation, recipient details, parent award info, latest transaction
contract data (competition, set-aside, pricing type), period of
performance, place of performance, NAICS hierarchy, PSC hierarchy,
base and all options value, and sub-award totals.

Accepts either a generated award id (CONT_AWD_*, CONT_IDV_*, ASST_NON_*,
ASST_AGG_*) or the numeric internal database id from a prior response.

Example generated_award_id format: CONT_AWD_N0002424C0085_9700_N0002421D0001_9700

Input parameters:

- `generated_award_id` (string, required)

### `get_transactions` (~130 tokens)

Fetch the full transaction (modification) history for an award.

Every modification, option exercise, and de-obligation is a transaction.
Modification number '0' is the original base award. Use to understand
the full lifecycle of a contract including its descriptive text at each
point in time.

Returns per transaction: id, type, action_date, action_type,
modification_number, description, federal_action_obligation.

Input parameters:

- `generated_award_id` (string, required)
- `limit` (integer)
- `order` (string)
- `page` (integer)
- `sort` (string)

### `get_award_funding` (~120 tokens)

Fetch File C funding data for an award: federal account, object class, program activity.

Shows which Treasury accounts, object classes, and program activities
funded an award. Useful for appropriations analysis and understanding
what colors of money paid for what.

Sort fields: reporting_fiscal_date, account_title,
transaction_obligated_amount, object_class.

Input parameters:

- `generated_award_id` (string, required)
- `limit` (integer)
- `order` (string)
- `page` (integer)
- `sort` (string)

### `get_idv_children` (~241 tokens)

Fetch child awards (task/delivery orders) under an IDV.

For a Multiple Award IDV, child_awards returns the task orders or delivery
orders placed against it. For a parent IDV, child_idvs returns the
downstream IDV structure. grandchild_awards walks the hierarchy.

Field name differences from search_awards: children use 'piid' (not
'Award ID'), 'obligated_amount' (not 'Award Amount'), and
'generated_unique_award_id' (not 'generated_internal_id').

An active vehicle can legitimately return zero children here:
USASpending's award cross-linking has gaps. Treat an empty result as a
reporting gap, not proof that no orders exist. A search_awards call
with keywords=['<IDV PIID>'] sometimes recovers the orders, but it can
also be empty on the same vehicle.

Input parameters:

- `child_type` (string)
- `generated_idv_id` (string, required)
- `limit` (integer)
- `order` (string)
- `page` (integer)
- `sort` (string)

### `lookup_piid` (~181 tokens)

Look up awards by PIID or PIID prefix with automatic award-type detection.

Convenience tool: tries contracts first, then IDVs if no match. Uses
keyword search under the hood, which behaves as a substring match on
the PIID field, so you can pass a full PIID or a contracting-office
prefix (e.g. 'N00024' for NAVSEA, 'W91CRB' for Army Contracting Command,
'FA8650' for AFRL).

Returns the matching awards with basic fields. Use get_award_detail()
with the returned generated_internal_id for the full record.

Handy for enriching PRISM, Contract Court, or FPDS exports where you
have a PIID but don't know whether it's a contract or IDV.

Input parameters:

- `limit` (integer)
- `piid` (string, required)

### `autocomplete_psc` (~105 tokens)

Autocomplete lookup for Product/Service Codes (PSC).

Works best with code prefixes ('R499', 'D3', 'AJ') or keywords
('professional', 'application'). Returns matching PSC entries with
code and description.

Minimum 2 characters required. Single-character queries return first-N
alphabetical results from the upstream API (useless for matching) and
empty strings return HTTP 400.

Input parameters:

- `limit` (integer)
- `search_text` (string, required)

### `autocomplete_naics` (~154 tokens)

Autocomplete lookup for NAICS codes.

Accepts partial codes ('541') or keywords ('software'). Returns matching
NAICS entries with code and description.

Minimum 2 characters required. Short queries silently match substrings
inside parenthetical notes (e.g. 'x' matches 'except') and produce
nonsense results, so we require 2+ chars.

exclude_retired defaults to True. The upstream NAICS taxonomy still
returns codes retired in 2012/2017/2022; these are almost never what
callers want. Set exclude_retired=False to include them.

Input parameters:

- `exclude_retired` (boolean)
- `limit` (integer)
- `search_text` (string, required)

### `list_toptier_agencies` (~59 tokens)

List all top-tier federal agencies tracked by USASpending.

Returns agency codes, names, abbreviations, and current-year budgetary
resources. Use the returned 'toptier_code' values with get_agency_overview().

### `get_agency_overview` (~109 tokens)

Get summary information for a specific agency in a given fiscal year.

toptier_code is the 3- or 4-digit agency code (e.g. '097' for DoD,
'075' for HHS, '080' for NASA). Shorter inputs like '97' are left-padded
to '097' automatically. Get valid codes via list_toptier_agencies().

Input parameters:

- `fiscal_year`
- `toptier_code` (string, required)

### `get_agency_awards` (~68 tokens)

Get award summary totals for an agency in a given fiscal year.

Returns obligation totals by award category. toptier_code is auto-padded
to 3 digits if a shorter numeric value is supplied.

Input parameters:

- `fiscal_year`
- `toptier_code` (string, required)

### `get_naics_details` (~47 tokens)

Get details for a NAICS code (2-6 digits).

Returns the NAICS description, parent categories, and child subcategories
if applicable.

Input parameters:

- `code` (string, required)

### `get_psc_filter_tree` (~66 tokens)

Get the PSC hierarchy tree.

Pass an empty path for the top-level. Drill down with paths like
'Service/R/' to get the service professional services tree, or
'Product/5' for product codes starting with 5.

Input parameters:

- `path` (string)

### `get_state_profile` (~74 tokens)

Get spending profile for a US state by its 2-digit FIPS code.

Examples: '06' = California, '48' = Texas, '24' = Maryland, '51' = Virginia.
Returns award totals, top agencies, top recipients, and district data.

Input parameters:

- `state_fips` (string, required)

### `search_subawards` (~159 tokens)

Search FFATA subaward reports on USASpending.

Returns the FFATA subaward records (subcontracts under prime contracts and
subawards under prime grants). Complementary to the SAM.gov FFATA endpoints
but expressed at the USASpending data model.

award_id: optional generated_internal_id (CONT_AWD_..., ASST_NON_..., etc.)
to scope subawards to a single prime award. If omitted, returns subawards
across all primes for the page.

Pagination uses page (1-indexed) and limit (1-100).

Input parameters:

- `award_id`
- `limit` (integer)
- `order` (string)
- `page` (integer)
- `sort` (string)

### `spending_by_subaward_grouped` (~222 tokens)

Search subawards using the standard filters object (grouped result set).

Unlike search_subawards which is scoped to a single prime, this returns
subawards grouped under their primes given a filter set similar to
search_awards. Useful for FFATA-wide analysis ("show me all DoD
subcontracts on cyber awards in FY2026").

sort accepts: award_id, subaward_count, award_generated_internal_id,
subaward_obligation. (These differ from search_subawards, which sorts by
amount/action_date/etc.) Anything else returns HTTP 400 from the API.

Input parameters:

- `award_type_codes`
- `awarding_agency`
- `def_codes`
- `funding_agency`
- `limit` (integer)
- `naics_codes`
- `order` (string)
- `page` (integer)
- `psc_codes`
- `set_aside_type_codes`
- `sort`
- `time_period_end`
- `time_period_start`

### `search_recipients` (~133 tokens)

Search USASpending recipients (vendors and grantees) by keyword.

Returns paginated recipients with their UEI, DUNS, name, and a recipient
'id' that downstream tools use as the hash for get_recipient_profile and
get_recipient_children.

keyword can match recipient name, UEI, or DUNS. If omitted, returns the
top recipients ranked by `sort`.

Input parameters:

- `award_type` (string)
- `keyword`
- `limit` (integer)
- `order` (string)
- `page` (integer)
- `sort` (string)

### `get_recipient_profile` (~132 tokens)

Get full profile for a recipient by their USASpending hash.

Returns recipient details: name, UEI, DUNS, business categories, location,
parent (if any), and lifetime award totals. The hash is the 'id' field
returned by search_recipients(). (autocomplete_recipient does NOT return
hashes; it is a name lookup only.)

year: optional 'all' or a fiscal year like 2026 (int or str both
accepted). Default is 'latest' (trailing 12 months).

Input parameters:

- `recipient_hash` (string, required)
- `year`

### `get_recipient_children` (~223 tokens)

Get the child recipients (subsidiaries) of a parent recipient.

Pass the parent recipient's 12-character UEI (or legacy 9-digit DUNS).
Do NOT pass a recipient hash: the /recipient/children/ endpoint is the
one recipient endpoint keyed by UEI/DUNS, and it rejects hashes with
HTTP 400. Get the UEI from search_recipients() results (the 'uei' field
of the -P row) or from get_recipient_profile().

Returns the child recipients, each with its own -C suffixed recipient_id
hash usable with get_recipient_profile(). Useful for mapping corporate
structures (e.g. Lockheed Martin parent -> all its subsidiaries).

year: optional 'all', 'latest', or a fiscal year like 2026.

The upstream endpoint returns a JSON array; it is wrapped here as
{"results": [...], "total": N} to keep the dict-only response invariant.

Input parameters:

- `uei_or_duns` (string, required)
- `year`

### `autocomplete_recipient` (~112 tokens)

Find recipient names by partial name or UEI/DUNS.

NOTE: this endpoint returns recipient NAMES only. It does NOT return the
recipient hash needed by get_recipient_profile() and
get_recipient_children() (and its uei/duns fields come back null).
To get a hash, take a name from here and pass it to search_recipients(),
whose results carry the hash in their 'id' field.

Input parameters:

- `limit` (integer)
- `search_text` (string, required)

### `list_states` (~85 tokens)

List all states with their FIPS codes and award totals.

Returns the full list of US states/territories with FIPS codes you can
pass to get_state_profile().

The /recipient/state/ endpoint returns a JSON array (not an object). We
wrap it in {"results": [...]} to keep the tool return type consistent
with every other endpoint in this MCP.

### `get_agency_budgetary_resources` (~57 tokens)

Get an agency's budgetary resources by fiscal year.

Returns total budgetary resources, obligations, outlays, and discretionary
vs mandatory breakdown for each fiscal year on file.

Input parameters:

- `toptier_code` (string, required)

### `get_agency_sub_agencies` (~161 tokens)

List the subordinate (subtier) organizations of a toptier agency.

Returns each sub-agency with its obligations, transaction count, and
new-award count for the given fiscal year. Useful for finding the
canonical subtier name to pass into search_awards() awarding_subagency.

sort accepts name, total_obligations, transaction_count, or
new_award_count (this endpoint has no outlay column; a former
'total_outlays' option was rejected by the API with HTTP 400).

Input parameters:

- `fiscal_year`
- `limit` (integer)
- `order` (string)
- `page` (integer)
- `sort` (string)
- `toptier_code` (string, required)

### `get_agency_federal_accounts` (~103 tokens)

List the Treasury Account Symbols (federal accounts) used by an agency.

Returns each federal account with its obligated amount and gross outlay
for the given fiscal year. Useful for understanding how an agency's
money flows through Treasury.

Input parameters:

- `fiscal_year`
- `limit` (integer)
- `order` (string)
- `page` (integer)
- `sort` (string)
- `toptier_code` (string, required)

### `get_agency_object_classes` (~102 tokens)

List the object class breakdown (what an agency spends money on).

Object classes are OMB categories: Personnel Compensation, Travel,
Contractual Services, Equipment, Grants, etc. Useful for understanding
what types of expenditures an agency makes.

Input parameters:

- `fiscal_year`
- `limit` (integer)
- `order` (string)
- `page` (integer)
- `sort` (string)
- `toptier_code` (string, required)

### `get_agency_program_activities` (~104 tokens)

List the program activities (specific programs) within an agency.

Program activities are the specific named programs that obligate funds
(e.g., 'Cybersecurity and Infrastructure Security Agency'). Useful for
pinpointing which program funds a specific activity.

Input parameters:

- `fiscal_year`
- `limit` (integer)
- `order` (string)
- `page` (integer)
- `sort` (string)
- `toptier_code` (string, required)

### `get_agency_obligations_by_award_category` (~91 tokens)

Get an agency's obligation breakdown by award category.

Returns total obligated dollars split by category: contracts, IDVs, grants,
loans, direct payments, other. Quick way to see what mix of award types
an agency uses (heavy contractor agency vs grant-issuing agency vs mixed).

Input parameters:

- `fiscal_year`
- `toptier_code` (string, required)

### `get_award_funding_rollup` (~69 tokens)

Get a rollup of an award's funding totals.

Returns total transaction obligated amount, awarding agency count,
funding agency count, and federal account count for a single award.
Useful for a one-line summary of an award's funding picture.

Input parameters:

- `award_id` (string, required)

### `get_award_subaward_count` (~39 tokens)

Count of subawards (FFATA subcontracts/subawards) reported on an award.

Input parameters:

- `award_id` (string, required)

### `get_award_federal_account_count` (~34 tokens)

Count of distinct federal accounts (TAS) funding an award.

Input parameters:

- `award_id` (string, required)

### `get_award_transaction_count` (~30 tokens)

Count of transactions (modifications) on an award.

Input parameters:

- `award_id` (string, required)

### `awards_last_updated` (~43 tokens)

Get the timestamp of the last USASpending award data refresh.

Use this to determine data freshness when comparing to other sources
(SAM.gov Contract Awards API for example).

### `spending_by_transaction` (~237 tokens)

Search at the transaction (modification) level.

Unlike search_awards which returns one row per award, this returns one
row per transaction (initial action plus every modification). Useful for
tracking obligation events over time, ceiling adjustments, deobligations,
and admin mods.

recipient_uei is matched through the API's recipient text search (which
covers name, UEI, and DUNS), so pass the plain 12-character UEI.

Returns standard transaction fields: Action Date, Mod, Award ID,
Action Type, Awarding Agency, Recipient Name.

Input parameters:

- `award_amount_max`
- `award_amount_min`
- `award_type` (string)
- `awarding_agency`
- `funding_agency`
- `keywords`
- `limit` (integer)
- `naics_codes`
- `order` (string)
- `page` (integer)
- `psc_codes`
- `recipient_uei`
- `set_aside_type_codes`
- `sort` (string)
- `time_period_end`
- `time_period_start`

### `spending_by_geography` (~154 tokens)

Geographic breakdown of spending.

scope: 'recipient_location' (where the recipient is) or 'place_of_performance'
(where the work happens).
geo_layer: 'state', 'county', or 'district'.

At least one filter is required. The API returns HTTP 500 on an empty
filter set, so the requirement is enforced here with a clear error.

Input parameters:

- `award_type` (string)
- `awarding_agency`
- `def_codes`
- `funding_agency`
- `geo_layer` (string)
- `naics_codes`
- `psc_codes`
- `scope` (string)
- `time_period_end`
- `time_period_start`

### `new_awards_over_time` (~154 tokens)

Pipeline trend of new awards to a recipient over time.

REQUIRES recipient_id (the recipient hash with -P suffix for parent-level
rollup, or -R for a single recipient). Returns counts of new awards
grouped by month, quarter, or fiscal year.

The endpoint rejects calls without recipient_id with HTTP 422, and it
also requires a time_period. When you omit the dates, a default range
covering all searchable data (2007-10-01 through 2099-09-30) is sent
automatically.

Input parameters:

- `group` (string)
- `recipient_id` (string, required)
- `time_period_end`
- `time_period_start`

### `get_idv_amounts` (~77 tokens)

Top-line amounts for an Indefinite Delivery Vehicle (IDV).

Returns child IDV count, child award count, child award total obligation,
and base/option values rolled up across all task/delivery orders under
the IDV. Pass a CONT_IDV_* generated_internal_id.

Input parameters:

- `award_id` (string, required)

### `get_idv_funding` (~63 tokens)

List the funding records (File C) for an IDV's child orders.

Input parameters:

- `award_id` (string, required)
- `limit` (integer)
- `order` (string)
- `page` (integer)
- `sort` (string)

### `get_idv_funding_rollup` (~37 tokens)

Funding rollup totals for an IDV (single dict, not paginated).

Input parameters:

- `award_id` (string, required)

### `get_idv_activity` (~153 tokens)

List child task/delivery orders awarded under an IDV.

Results are ALWAYS sorted by obligated amount, descending; the endpoint
accepts no sort or order parameters. (Earlier releases exposed sort/order
here, but the API silently ignored them: the advertised default of
period_of_performance_start_date was never the actual ordering. Round 10
audit finding.) For date-ordered children use get_idv_children(), whose
endpoint does honor sort/order.

hide_edge_cases=True filters out child awards missing obligated/awarded
amounts or end dates.

Input parameters:

- `award_id` (string, required)
- `hide_edge_cases` (boolean)
- `limit` (integer)
- `page` (integer)

### `autocomplete_awarding_agency` (~75 tokens)

Find awarding agency names by partial match.

USASpending search filters require the EXACT awarding agency name
(slugs return zero). Use this to resolve a partial name to the canonical
one before passing to search_awards() awarding_agency parameter.

Input parameters:

- `limit` (integer)
- `search_text` (string, required)

### `autocomplete_funding_agency` (~40 tokens)

Find funding agency names by partial match (companion to awarding agency).

Input parameters:

- `limit` (integer)
- `search_text` (string, required)

### `autocomplete_cfda` (~52 tokens)

Find CFDA (Catalog of Federal Domestic Assistance) program numbers
by partial title or program number. CFDA codes are used in grants.

Input parameters:

- `limit` (integer)
- `search_text` (string, required)

### `autocomplete_glossary` (~39 tokens)

Find glossary terms (acquisition + spending vocabulary) by partial match.

Input parameters:

- `limit` (integer)
- `search_text` (string, required)

### `get_award_types_reference` (~72 tokens)

Return the full mapping of award type codes to descriptions.

Returns the canonical reference: contracts (A=BPA Call, B=Purchase Order,
C=Delivery Order, D=Definitive Contract), IDVs, grants, loans, etc.
Authoritative source if you're unsure what a code letter means.

### `get_def_codes_reference` (~52 tokens)

Return all Disaster Emergency Fund (DEFC) codes with public laws.

DEFCs are used to filter awards funded by specific supplemental
appropriations (COVID-19, IIJA, IRA, etc.).

### `get_glossary` (~37 tokens)

Get the full USASpending glossary of acquisition + spending terms.

Input parameters:

- `limit` (integer)
- `page` (integer)

### `get_submission_periods` (~45 tokens)

Return the list of agency submission periods (when each agency last
submitted data for each fiscal period). Useful for understanding which
quarters of which fiscal years have full data coverage.

### `list_federal_accounts` (~86 tokens)

List Treasury federal accounts (TAS) with budgetary resources.

keyword filters by account name or AID. fiscal_year defaults to current FY.
sort is a dict like {'field':'budgetary_resources','direction':'desc'}.

Input parameters:

- `fiscal_year`
- `keyword`
- `limit` (integer)
- `page` (integer)
- `sort`

### `get_federal_account_detail` (~31 tokens)

Get an individual federal account's metadata + budgetary resources.

Input parameters:

- `account_code` (string, required)

### `get_federal_account_object_classes` (~171 tokens)

Get the object class breakdown of obligations for a federal account.

IMPORTANT: the returned obligations are CUMULATIVE across all reported
fiscal years (FY2017 onward, the DATA Act window), not a single year.
They are NOT comparable to get_federal_account_fy_snapshot(), which is
single-year (verified live: account 021-0725 summed to $3.38B here vs
$0.42B obligated in its FY2024 snapshot). The upstream endpoint has no
year control: a fiscal_year body parameter is accepted but ignored, so
none is exposed here.

Note: this endpoint requires POST (not GET like the other federal account
sub-endpoints). Live audit caught this; the body is empty.

Input parameters:

- `account_code` (string, required)

### `get_federal_account_program_activities` (~37 tokens)

Get the program activities funded under a federal account.

Input parameters:

- `account_code` (string, required)
- `fiscal_year`

### `get_federal_account_fy_snapshot` (~107 tokens)

Get a single-fiscal-year snapshot of a federal account's resources.

Important: this endpoint takes the numeric `account_id` (e.g. 4595), NOT
the alphanumeric `account_number` (e.g. "027-5183") used by the other
federal-account endpoints. The list_federal_accounts response includes
both fields per record. Pass the integer account_id here.

Input parameters:

- `account_id` (required)
- `fiscal_year`

## Diagnostics

Captured diagnostic sections: Provenance, Install scripts, Dependencies. The full working is on the page: https://verifymcp.io/servers/com-1102tools-usaspending-gov-mcp/usaspending-gov-mcp#diagnostics

## Score history

- 2026-09-20: 79
- 2026-09-19: 79
- 2026-09-18: 78
- 2026-09-17: 63
- 2026-09-16: 62
- 2026-09-15: 62
- 2026-09-14: 61
- 2026-09-13: 61
- 2026-09-12: 60
- 2026-09-11: 60
- 2026-09-10: 60
- 2026-09-09: 59
- 2026-09-08: 59
- 2026-09-07: 58
- 2026-09-06: 58
- 2026-09-05: 57
- 2026-09-04: 57
- 2026-09-03: 56
- 2026-09-02: 56
- 2026-09-01: 55
- 2026-08-31: 52
- 2026-08-30: 67
- 2026-08-29: 52
- 2026-08-28: 52
- 2026-08-27: 52
- 2026-08-26: 52
- 2026-08-25: 49
- 2026-08-24: 49

## Common questions

### What is the USASpending.gov MCP server?

USASpending.gov is an MCP server listed in the public MCP registry as com.1102tools/usaspending-gov-mcp. USASpending.gov awards, subawards, recipients, agencies, and federal accounts. 55 tools. This page covers its PyPI package (usaspending-gov-mcp).

### Is the USASpending.gov MCP server safe to use?

USASpending.gov scores 79 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the USASpending.gov MCP server expose?

USASpending.gov exposes 55 tools: search_awards, get_award_count, spending_over_time, spending_by_category, get_award_detail, and 50 more. Their descriptions and schemas cost roughly 6,850 tokens of context every time the server is loaded.

### Is the USASpending.gov MCP server still maintained?

USASpending.gov is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the USASpending.gov MCP server under?

USASpending.gov declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- PyPI project: https://pypi.org/project/usaspending-gov-mcp/
- Socket report: https://socket.dev/pypi/package/usaspending-gov-mcp
- Repository: https://github.com/1102tools-dev/federal-contracting-mcps
- Website: https://1102tools.com/
- Changelog RSS feed: https://verifymcp.io/servers/com-1102tools-usaspending-gov-mcp/usaspending-gov-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-1102tools-usaspending-gov-mcp/usaspending-gov-mcp.json
- HTML version of this page: https://verifymcp.io/servers/com-1102tools-usaspending-gov-mcp/usaspending-gov-mcp
