Skip to content

USASpending.gov

by 1102tools.com · remote · local (pypi) · no sign-in to list tools · v1.0.27 · published by com.1102tools

USAspending.gov contracts, grants, loans, subawards, recipients, agencies, and federal accounts.

Changes · 7

55 tools: 7 change things and 48 only read.

Scanned Oct 21, 2026

3 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http usaspending-gov https://usaspending.1102tools.com/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn2 info
  • The server marks "get_naics_details" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "get_naics_details" says "get": a word for reading.

    What this check looks for
  • The description is 4,181 characters long, over the 2,000 this check looks for.

    Matched text

    description ends: "...ayments', or 'other'. autocomplete_cfda() finds numbers by program name."

    What this check looks for
  • The description is 2,162 characters long, over the 2,000 this check looks for.

    Matched text

    description ends: "...ayments', or 'other'. autocomplete_cfda() finds numbers by program name."

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

55 tools

Changes things 7Claude Code: ask
  • autocomplete_naicsAutocomplete lookup for NAICS codes.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Autocomplete NAICS
  • autocomplete_pscAutocomplete lookup for Product/Service Codes (PSC).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Autocomplete lookup for Product/Service Codes (PSC). Use exact four-character codes ('R499', 'D302') or description keywords ('professional', 'application'). Returns matching PSC entries with code and description. Two-character families such as 'D3' can return no autocomplete matches even when their descendant codes exist. For partial PSC families or prefix expansion, use get_psc_filter_tree() instead: path='Service/D/D3/' lists the D3 descendants; start with path='Service/A/' to discover and drill into an AJ family. 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.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Autocomplete PSC
  • get_naics_detailsGet details for a NAICS code (2-6 digits).1 finding

    Why it is in this group

    • The name "get_naics_details" says "get": a word for reading.
    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "get_naics_details" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "get_naics_details" says "get": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Get details for a NAICS code (2-6 digits). Returns the NAICS description, parent categories, and child subcategories if applicable.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get NAICS Details
  • new_awards_over_timePipeline trend of new awards to a recipient over time.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: New Awards Over Time
  • spending_by_categoryAggregate spending by a dimension (top vendors, top agencies, top NAICS, etc.).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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. date_type controls the transaction date window. Omitted (the default) or 'action_date', it selects transaction actions inside the window. 'date_signed' selects the associated award's first signing date; 'last_modified_date' selects transaction update dates. 'new_awards_only' retains in-window actions associated with awards first signed in the window. These are transaction obligation totals, not new-award counts: use new_awards_over_time for counts. Award search/count tools use a different default interval-overlap rule. date_type needs time_period_start and/or time_period_end. program_numbers filters assistance awards by assistance listing (CFDA) number, e.g. ['93.778'] for Medicaid; use it with award_type='grants', 'loans', 'direct_payments', or 'other'. autocomplete_cfda() finds numbers by program name.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Spending by Category
  • spending_by_geographyGeographic breakdown of spending.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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. program_numbers filters assistance awards by assistance listing (CFDA) number, e.g. ['93.778'] for Medicaid; use it with award_type='grants', 'loans', 'direct_payments', or 'other'. autocomplete_cfda() finds numbers by program name.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Spending by Geography
  • spending_over_timeAggregate spending amounts over time, grouped by fiscal year, quarter, or month.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Info

      The description is 2,162 characters long, over the 2,000 this check looks for.

      Matched text

      description ends: "...ayments', or 'other'. autocomplete_cfda() finds numbers by program name."

      What this check looks for
    Description, as the server wrote it
    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. quarter and month are FISCAL periods (month 1 = October, quarter 1 = October-December). Buckets are clipped to the window, so a calendar-2025 window returns a partial fiscal_year '2025' (January- September only) and a partial '2026' (October-December); neither is that whole fiscal year. DoD contract actions are published 90 days late, so when the window reaches into the last 90 days and DoD is in scope the answer carries a data_note: those months are understated, so don't read them as a drop. 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. date_type controls the transaction date window. Omitted (the default) or 'action_date', it selects transaction actions inside the window. 'date_signed' selects the associated award's first signing date; 'last_modified_date' selects transaction update dates. 'new_awards_only' retains in-window actions associated with awards first signed in the window. These are transaction obligation totals, not new-award counts: use new_awards_over_time for counts. Award search/count tools use a different default interval-overlap rule. date_type needs time_period_start and/or time_period_end. program_numbers filters assistance awards by assistance listing (CFDA) number, e.g. ['93.778'] for Medicaid; use it with award_type='grants', 'loans', 'direct_payments', or 'other'. autocomplete_cfda() finds numbers by program name.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Spending Over Time
Only reads 48Claude Code: allow
  • autocomplete_awarding_agencyFind awarding agency names by partial match.No findings

    Why it is in this group

    • The description's first verb is "find": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Autocomplete Awarding Agency
  • autocomplete_cfdaFind CFDA (Catalog of Federal Domestic Assistance) program numbers by partial title or program number.No findings

    Why it is in this group

    • The description's first verb is "find": a word for reading.
    Description, as the server wrote it
    Find CFDA (Catalog of Federal Domestic Assistance) program numbers by partial title or program number. CFDA codes are used in grants.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Autocomplete CFDA
  • autocomplete_funding_agencyFind funding agency names by partial match (companion to awarding agency).No findings

    Why it is in this group

    • The description's first verb is "find": a word for reading.
    Description, as the server wrote it
    Find funding agency names by partial match (companion to awarding agency).

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Autocomplete Funding Agency
  • autocomplete_glossaryFind glossary terms (acquisition + spending vocabulary) by partial match.No findings

    Why it is in this group

    • The description's first verb is "find": a word for reading.
    Description, as the server wrote it
    Find glossary terms (acquisition + spending vocabulary) by partial match.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Autocomplete Glossary
  • autocomplete_recipientFind recipient names by partial name or UEI/DUNS.No findings

    Why it is in this group

    • The description's first verb is "find": a word for reading.
    Description, as the server wrote it
    Find recipient names by partial name or UEI/DUNS. This is a recipient-name lookup; it does not supply the recipient hash for get_recipient_profile() or new_awards_over_time(), and its UEI/DUNS fields may be null. Pass a returned name to search_recipients(): use its 'id' hash for profiles/trends, and the UEI (or legacy DUNS) from the parent (-P) row for get_recipient_children().

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Autocomplete Recipient
  • awards_last_updatedGet the timestamp of the last USASpending award data refresh.No findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Awards Last Updated
  • get_agency_awardsGet one obligation total and transaction count for an agency's awards in a fiscal year.No findings

    Why it is in this group

    • The name "get_agency_awards" says "get": a word for reading.
    Description, as the server wrote it
    Get one obligation total and transaction count for an agency's awards in a fiscal year. The total covers ALL award types together (contracts, IDVs, grants, loans, direct payments, other), so for most civilian agencies it is far larger than contract spending (VA FY2026: $313B here vs $84B contracts). For the split by award type use get_agency_obligations_by_award_category(). toptier_code is auto-padded to 3 digits if a shorter numeric value is supplied. fiscal_year defaults to the last completed fiscal year, not the current one (USAspending's own default, which right after October 1 holds only a few days of data). The answer always carries fiscal_year.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get Agency Awards
  • get_agency_budgetary_resourcesGet an agency's budgetary resources by fiscal year.No findings

    Why it is in this group

    • The name "get_agency_budgetary_resources" says "get": a word for reading.
    Description, as the server wrote it
    Get an agency's budgetary resources by fiscal year. Returns agency budgetary resources, obligations and outlays for each fiscal year on file, plus government-wide budgetary resources and the agency's obligations by reported fiscal period. This endpoint does not provide a discretionary-versus-mandatory breakdown.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get Agency Budgetary Resources
  • get_agency_federal_accountsList the Treasury Account Symbols (federal accounts) used by an agency.No findings

    Why it is in this group

    • The name "get_agency_federal_accounts" says "get": a word for reading.
    Description, as the server wrote it
    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. fiscal_year defaults to the last completed fiscal year, not the current one (USAspending's own default, which right after October 1 holds only a few days of data). The answer always carries fiscal_year.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get Agency Federal Accounts
  • get_agency_object_classesList the object class breakdown (what an agency spends money on).No findings

    Why it is in this group

    • The name "get_agency_object_classes" says "get": a word for reading.
    Description, as the server wrote it
    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. fiscal_year defaults to the last completed fiscal year, not the current one (USAspending's own default, which right after October 1 holds only a few days of data). The answer always carries fiscal_year.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get Agency Object Classes
  • get_agency_obligations_by_award_categoryGet an agency's obligation breakdown by award category.No findings

    Why it is in this group

    • The name "get_agency_obligations_by_award_category" says "get": a word for reading.
    Description, as the server wrote it
    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). For DoD ('097') a fiscal year whose last 90 days are not yet published (DoD's 90-day delay) carries a data_note saying the total is understated. fiscal_year defaults to the last completed fiscal year, not the current one (USAspending's own default, which right after October 1 holds only a few days of data). The answer always carries fiscal_year.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get Agency Obligations by Award Category
  • get_agency_overviewGet descriptive information for an agency: name, mission, website, data notes and DEF codes.No findings

    Why it is in this group

    • The name "get_agency_overview" says "get": a word for reading.
    Description, as the server wrote it
    Get descriptive information for an agency: name, mission, website, data notes and DEF codes. It has no dollar figures; for spending use get_agency_obligations_by_award_category() (split by award type) or get_agency_budgetary_resources() (obligations and outlays by 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(). fiscal_year defaults to the last completed fiscal year, not the current one (USAspending's own default). The answer always carries fiscal_year.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get Agency Overview
  • get_agency_program_activitiesList the program activities (specific programs) within an agency.No findings

    Why it is in this group

    • The name "get_agency_program_activities" says "get": a word for reading.
    Description, as the server wrote it
    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. fiscal_year defaults to the last completed fiscal year, not the current one (USAspending's own default, which right after October 1 holds only a few days of data). The answer always carries fiscal_year.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get Agency Program Activities
  • get_agency_sub_agenciesList the subordinate (subtier) organizations of a toptier agency.No findings

    Why it is in this group

    • The name "get_agency_sub_agencies" says "get": a word for reading.
    Description, as the server wrote it
    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). fiscal_year defaults to the last completed fiscal year, not the current one (USAspending's own default, which right after October 1 holds only a few days of data). The answer always carries fiscal_year.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get Agency Sub-Agencies
  • get_award_countCount awards matching filters, broken down by award category.No findings

    Why it is in this group

    • The name "get_award_count" says "get": a word for reading.
    Description, as the server wrote it
    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. date_type controls the award date window. Omitted (the default), the latest action must be on/after the window start and the first signing on/before its end. This interval overlap does NOT prove an action occurred inside the window. For actual dated actions use spending_by_transaction, read every page, and deduplicate award identifiers for distinct awards; get_transactions provides a discovered award's complete action history. 'action_date' bounds the latest action, not any action; 'date_signed' bounds first signing; 'last_modified_date' bounds the latest update. 'new_awards_only' keeps awards first signed in the window. date_type needs time_period_start and/or time_period_end. program_numbers filters assistance awards by assistance listing (CFDA) number, e.g. ['93.778'] for Medicaid; use it with award_type='grants', 'loans', 'direct_payments', or 'other'. autocomplete_cfda() finds numbers by program name.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get Award Count
  • get_award_detailFetch full details for a single award by its generated_internal_id.No findings

    Why it is in this group

    • The name "get_award_detail" says "get": a word for reading.
    Description, as the server wrote it
    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. Award-level outlays and total_account_obligation are partial or lagged File C measures, not a reliable amount paid; compare with total_obligation for coverage. 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

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get Award Detail
  • get_award_federal_account_countCount of distinct federal accounts (TAS) funding an award.No findings

    Why it is in this group

    • The name "get_award_federal_account_count" says "get": a word for reading.
    Description, as the server wrote it
    Count of distinct federal accounts (TAS) funding an award.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get Award Federal Account Count
  • get_award_fundingFetch File C funding data for an award: federal account, object class, program activity.No findings

    Why it is in this group

    • The name "get_award_funding" says "get": a word for reading.
    Description, as the server wrote it
    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. File C can be partial or lagged; these rows do not establish the full award obligation or amount paid to the contractor. Sort fields: reporting_fiscal_date, account_title, transaction_obligated_amount, object_class.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get Award Funding
  • get_award_funding_rollupGet a rollup of an award's funding totals.No findings

    Why it is in this group

    • The name "get_award_funding_rollup" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get Award Funding Rollup
  • get_award_subaward_countCount of subawards (FFATA subcontracts/subawards) reported on an award.No findings

    Why it is in this group

    • The name "get_award_subaward_count" says "get": a word for reading.
    Description, as the server wrote it
    Count of subawards (FFATA subcontracts/subawards) reported on an award.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get Award Subaward Count
  • get_award_transaction_countCount of transactions (modifications) on an award.No findings

    Why it is in this group

    • The name "get_award_transaction_count" says "get": a word for reading.
    Description, as the server wrote it
    Count of transactions (modifications) on an award.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get Award Transaction Count
  • get_award_types_referenceReturn the full mapping of award type codes to descriptions.No findings

    Why it is in this group

    • The name "get_award_types_reference" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get Award Types Reference
  • get_def_codes_referenceReturn all Disaster Emergency Fund (DEFC) codes with public laws.No findings

    Why it is in this group

    • The name "get_def_codes_reference" says "get": a word for reading.
    Description, as the server wrote it
    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.).

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get DEF Codes Reference
  • get_federal_account_detailGet an individual federal account's metadata + budgetary resources.No findings

    Why it is in this group

    • The name "get_federal_account_detail" says "get": a word for reading.
    Description, as the server wrote it
    Get an individual federal account's metadata + budgetary resources.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get Federal Account Detail
  • get_federal_account_fy_snapshotGet a single-fiscal-year snapshot of a federal account's resources.No findings

    Why it is in this group

    • The name "get_federal_account_fy_snapshot" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get Federal Account Fiscal Year Snapshot
  • get_federal_account_object_classesGet the object class breakdown of obligations for a federal account.No findings

    Why it is in this group

    • The name "get_federal_account_object_classes" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get Federal Account Object Classes
  • get_federal_account_program_activitiesList program activity codes and names associated with a federal account.No findings

    Why it is in this group

    • The name "get_federal_account_program_activities" says "get": a word for reading.
    Description, as the server wrote it
    List program activity codes and names associated with a federal account. The source lists distinct programs across all reported fiscal years; it has no fiscal-year filter and includes no dollar amounts. fiscal_year is retained for compatibility, but does not filter this list. The response explicitly discloses any requested year that was not applied. Retrieves source pages internally, up to 2,000 records, and reports whether the list is complete. For single-year account resources and obligations, use get_federal_account_fy_snapshot with the numeric account_id returned by list_federal_accounts. get_agency_program_activities provides fiscal-year program amounts for an agency, not for this individual federal account.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get Federal Account Program Activities
  • get_glossaryGet the full USASpending glossary of acquisition + spending terms.No findings

    Why it is in this group

    • The name "get_glossary" says "get": a word for reading.
    Description, as the server wrote it
    Get the full USASpending glossary of acquisition + spending terms.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get Glossary
  • get_idv_activityList child task/delivery orders awarded under an IDV.No findings

    Why it is in this group

    • The name "get_idv_activity" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get IDV Activity
  • get_idv_amountsTop-line amounts for an Indefinite Delivery Vehicle (IDV).No findings

    Why it is in this group

    • The name "get_idv_amounts" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get IDV Amounts
  • get_idv_childrenFetch child awards (task/delivery orders) under an IDV.No findings

    Why it is in this group

    • The name "get_idv_children" says "get": a word for reading.
    Description, as the server wrote it
    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. Try get_idv_activity() on the same id. A search_awards call with keywords=['<IDV PIID>'] only finds orders whose description happens to cite the IDV, so it misses orders (often the largest) and is no proof of completeness.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get IDV Children
  • get_idv_fundingList File C funding records associated with an IDV.No findings

    Why it is in this group

    • The name "get_idv_funding" says "get": a word for reading.
    Description, as the server wrote it
    List File C funding records associated with an IDV. Rows can identify the IDV itself as well as associated awards; they are not a complete list of child orders. File C coverage can be partial or lagged and does not establish the full child-order obligation or amount paid. Use get_idv_amounts() for reported child-order obligation totals and get_idv_activity() or get_idv_children() for child-order records.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get IDV Funding
  • get_idv_funding_rollupFunding rollup totals for an IDV (single dict, not paginated).No findings

    Why it is in this group

    • The name "get_idv_funding_rollup" says "get": a word for reading.
    Description, as the server wrote it
    Funding rollup totals for an IDV (single dict, not paginated).

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get IDV Funding Rollup
  • get_psc_filter_treeGet the PSC hierarchy tree.No findings

    Why it is in this group

    • The name "get_psc_filter_tree" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get PSC Filter Tree
  • get_recipient_childrenGet the child recipients (subsidiaries) of a parent recipient.No findings

    Why it is in this group

    • The name "get_recipient_children" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get Recipient Children
  • get_recipient_profileGet full profile for a recipient by their USASpending hash.No findings

    Why it is in this group

    • The name "get_recipient_profile" says "get": a word for reading.
    Description, as the server wrote it
    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). Parent (-P) totals include their children. Profiles use a separate recipient rollup and can differ from transaction searches by recipient_name and award-type scope.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get Recipient Profile
  • get_state_profileGet the federal award totals for recipients located in a US state.No findings

    Why it is in this group

    • The name "get_state_profile" says "get": a word for reading.
    Description, as the server wrote it
    Get the federal award totals for recipients located in a US state. Examples: '06' = California, '48' = Texas, '24' = Maryland, '51' = Virginia. Returns one summary: state name and code, total_prime_amount and total_prime_awards (all award types together), loan face value, award_amount_per_capita, total_outlays, and population / median household income (older Census vintages: see pop_year and mhi_year). It has no breakdown by agency, recipient or district; for those use spending_by_geography() or spending_by_category() with a time window. year: a fiscal year like 2026, 'all' (every year on file) or 'latest' (USAspending's own default: the current fiscal year to date, which right after October 1 holds only a few days of data). Defaults to the last completed fiscal year. The answer always carries fiscal_year.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get State Profile
  • get_submission_periodsList the reporting calendar and submission/certification deadlines.No findings

    Why it is in this group

    • The name "get_submission_periods" says "get": a word for reading.
    Description, as the server wrote it
    List the reporting calendar and submission/certification deadlines. Returns available fiscal reporting periods and their scheduled start, due, certification and reveal dates. These are global calendar periods, not records of when individual agencies actually submitted or certified data. A listed period does not establish complete agency data coverage.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get Submission Periods
  • get_transactionsFetch the full transaction (modification) history for an award.No findings

    Why it is in this group

    • The name "get_transactions" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Get Transactions
  • list_federal_accountsList Treasury federal accounts (TAS) with budgetary resources.No findings

    Why it is in this group

    • The name "list_federal_accounts" says "list": a word for reading.
    Description, as the server wrote it
    List Treasury federal accounts (TAS) with budgetary resources. keyword filters by account name or AID. fiscal_year controls the reported budgetary-resource values, not which account rows are included. When omitted, the source uses its latest available fiscal year, which may differ from the current fiscal year; check the returned fy value. sort is a dict like {'field':'budgetary_resources','direction':'desc'}.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: List Federal Accounts
  • list_statesList all states with their FIPS codes and award totals.No findings

    Why it is in this group

    • The name "list_states" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: List States
  • list_toptier_agenciesList all top-tier federal agencies tracked by USASpending.No findings

    Why it is in this group

    • The name "list_toptier_agencies" says "list": a word for reading.
    Description, as the server wrote it
    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().

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: List Toptier Agencies
  • lookup_piidLook up awards by their exact PIID, across contracts AND IDVs.No findings

    Why it is in this group

    • The name "lookup_piid" says "lookup": a word for reading.
    Description, as the server wrote it
    Look up awards by their exact PIID, across contracts AND IDVs. Looks for awards whose own PIID is exactly this value (the award_ids filter), in both contracts and IDVs, and says how many share it. match='exact' rows are the awards themselves: an IDV PIID returns the IDV (award_type='idv'; its Award Amount is what was obligated on the IDV record itself, usually 0, so use get_idv_amounts() for the order total). PIIDs are not unique: task and delivery order numbers like '0001' repeat under different parent IDVs, so check 'ambiguous' and tell matches apart by parent_idv_piid and Awarding Agency. Only when nothing has that exact PIID does it fall back to keyword search, and those rows come back as match='fuzzy': keyword search matches the award's own PIID and its description text, NOT its parent IDV, so a vehicle PIID or prefix returns only orders whose description happens to cite it. For the orders under a vehicle use get_idv_activity() or get_idv_children() with the IDV's generated_internal_id; for a contracting-office prefix (N00024, W91CRB, FA8650) use search_awards keywords with a time window. limit applies to contracts and to IDVs separately. Use get_award_detail() with a 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.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Lookup PIID
  • search_awardsSearch federal awards (contracts, IDVs, grants, loans, etc.) on USASpending.gov.1 finding

    Why it is in this group

    • The name "search_awards" says "search": a word for reading.

    Findings

    • Info

      The description is 4,181 characters long, over the 2,000 this check looks for.

      Matched text

      description ends: "...ayments', or 'other'. autocomplete_cfda() finds numbers by program name."

      What this check looks for
    Description, as the server wrote it
    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_subagency='Department of the Navy' (never 'Department of the Navy' as awarding_agency). A mismatched pair (a subagency that does not belong to the given toptier) also silently returns zero results. Use list_toptier_agencies() and get_agency_sub_agencies() for exact names. Result caveats: recipient_name matches corporate affiliations, so a parent-company search can return joint ventures whose display names share no text with the query (a Hanford JV surfaces under 'Leidos'); verify names before presenting a definitive list. Large pulls can exceed MCP client payload budgets (limit=100 has measured ~90K characters); page in batches of 25-30 for big result sets. "Award Amount" is the award's lifetime obligation, not the amount in the time window. There is no period-of-performance end-date filter, so expiring-contract (recompete) questions can't be filtered here: sorting by 'End Date' over an action-date window returns long-ended awards that had a closeout mod; filter the End Date column yourself. date_type controls the award date window. Omitted (the default), the latest action must be on/after the window start and the first signing on/before its end. This interval overlap does NOT prove an action occurred inside the window. For actual dated actions use spending_by_transaction, read every page, and deduplicate award identifiers for distinct awards; get_transactions provides a discovered award's complete action history. 'action_date' bounds the latest action, not any action; 'date_signed' bounds first signing; 'last_modified_date' bounds the latest update. 'new_awards_only' keeps awards first signed in the window. date_type needs time_period_start and/or time_period_end. program_numbers filters assistance awards by assistance listing (CFDA) number, e.g. ['93.778'] for Medicaid; use it with award_type='grants', 'loans', 'direct_payments', or 'other'. autocomplete_cfda() finds numbers by program name.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Search Awards
  • search_recipientsSearch USASpending recipients (vendors and grantees) by keyword.No findings

    Why it is in this group

    • The name "search_recipients" says "search": a word for reading.
    Description, as the server wrote it
    Search USASpending recipients (vendors and grantees) by keyword. Returns paginated recipients with their UEI, DUNS, name, and a recipient 'id' hash for get_recipient_profile() and new_awards_over_time(). For get_recipient_children(), use the UEI (or legacy DUNS) from the parent (-P) row, not a recipient hash. keyword can match recipient name, UEI, or DUNS. If omitted, returns the top recipients ranked by `sort`.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Search Recipients
  • search_subawardsSearch FFATA subaward reports on USASpending.No findings

    Why it is in this group

    • The name "search_subawards" says "search": a word for reading.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Search Subawards
  • spending_by_subaward_groupedFind matching prime awards and their cumulative FFATA report totals.No findings

    Why it is in this group

    • The description's first verb is "find": a word for reading.
    Description, as the server wrote it
    Find matching prime awards and their cumulative FFATA report totals. Filters select prime records, but subaward_count and subaward_obligation cover all reported subawards under each prime, not just subaward actions within time_period_start/end. This ranking is not a fiscal-period subaward ranking. For dated reports, pass a returned award_generated_internal_id to search_subawards(award_id=...), read every page, and retain action_date values inside the desired period. 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. page_metadata.hasNext is worked out here: the endpoint itself always says false, even with more pages. Rows include primes with no subawards (subaward_count 0). subaward_obligation sums FFATA reports, which can repeat cumulative amounts, so a subaward_to_award_ratio above 1 is a reporting artefact, not more subcontracting than the prime. program_numbers filters assistance awards by assistance listing (CFDA) number, e.g. ['93.778'] for Medicaid; use it with award_type='grants', 'loans', 'direct_payments', or 'other'. autocomplete_cfda() finds numbers by program name.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Spending by Subaward Grouped
  • spending_by_transactionSearch at the transaction (modification) level.No findings

    Why it is in this group

    • The description's first verb is "search": a word for reading.
    Description, as the server wrote it
    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. program_numbers filters assistance awards by assistance listing (CFDA) number, e.g. ['93.778'] for Medicaid; use it with award_type='grants', 'loans', 'direct_payments', or 'other'. autocomplete_cfda() finds numbers by program name.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: true
    • readOnlyHint: true
    • title: Spending by Transaction

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.27. Values in angle brackets are yours to fill in.

claude mcp add --transport http usaspending-gov https://usaspending.1102tools.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__usaspending-gov__search_awards",
      "mcp__usaspending-gov__get_award_count",
      "mcp__usaspending-gov__get_award_detail",
      "mcp__usaspending-gov__get_transactions",
      "mcp__usaspending-gov__get_award_funding",
      "mcp__usaspending-gov__get_idv_children",
      "mcp__usaspending-gov__lookup_piid",
      "mcp__usaspending-gov__list_toptier_agencies",
      "mcp__usaspending-gov__get_agency_overview",
      "mcp__usaspending-gov__get_agency_awards",
      "mcp__usaspending-gov__get_psc_filter_tree",
      "mcp__usaspending-gov__get_state_profile",
      "mcp__usaspending-gov__search_subawards",
      "mcp__usaspending-gov__spending_by_subaward_grouped",
      "mcp__usaspending-gov__search_recipients",
      "mcp__usaspending-gov__get_recipient_profile",
      "mcp__usaspending-gov__get_recipient_children",
      "mcp__usaspending-gov__autocomplete_recipient",
      "mcp__usaspending-gov__list_states",
      "mcp__usaspending-gov__get_agency_budgetary_resources",
      "mcp__usaspending-gov__get_agency_sub_agencies",
      "mcp__usaspending-gov__get_agency_federal_accounts",
      "mcp__usaspending-gov__get_agency_object_classes",
      "mcp__usaspending-gov__get_agency_program_activities",
      "mcp__usaspending-gov__get_agency_obligations_by_award_category",
      "mcp__usaspending-gov__get_award_funding_rollup",
      "mcp__usaspending-gov__get_award_subaward_count",
      "mcp__usaspending-gov__get_award_federal_account_count",
      "mcp__usaspending-gov__get_award_transaction_count",
      "mcp__usaspending-gov__awards_last_updated",
      "mcp__usaspending-gov__spending_by_transaction",
      "mcp__usaspending-gov__get_idv_amounts",
      "mcp__usaspending-gov__get_idv_funding",
      "mcp__usaspending-gov__get_idv_funding_rollup",
      "mcp__usaspending-gov__get_idv_activity",
      "mcp__usaspending-gov__autocomplete_awarding_agency",
      "mcp__usaspending-gov__autocomplete_funding_agency",
      "mcp__usaspending-gov__autocomplete_cfda",
      "mcp__usaspending-gov__autocomplete_glossary",
      "mcp__usaspending-gov__get_award_types_reference",
      "mcp__usaspending-gov__get_def_codes_reference",
      "mcp__usaspending-gov__get_glossary",
      "mcp__usaspending-gov__get_submission_periods",
      "mcp__usaspending-gov__list_federal_accounts",
      "mcp__usaspending-gov__get_federal_account_detail",
      "mcp__usaspending-gov__get_federal_account_object_classes",
      "mcp__usaspending-gov__get_federal_account_program_activities",
      "mcp__usaspending-gov__get_federal_account_fy_snapshot"
    ],
    "ask": [
      "mcp__usaspending-gov__spending_over_time",
      "mcp__usaspending-gov__spending_by_category",
      "mcp__usaspending-gov__autocomplete_psc",
      "mcp__usaspending-gov__autocomplete_naics",
      "mcp__usaspending-gov__get_naics_details",
      "mcp__usaspending-gov__spending_by_geography",
      "mcp__usaspending-gov__new_awards_over_time"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as usaspending-gov. Review it before you use it.