This is an MCP server to interact with the USASPENDING.gov API
The server provides 10 tools covering USA Spending API functionality. Most tools have descriptions and structured schemas, placing it in the fair-to-poor range. However, there are significant gaps: 5 of 10 tools lack visible descriptions in the provided code (spending, spending_by_award, spending_over_time, subawards, toptier_agencies as a tool), parameter descriptions are sparse or missing for several tools, and no output schemas are documented. The tools that DO have descriptions are well-formed (federal_accounts, recipient, major_object_class, list_budget_functions, total_budgetary_resources), but the inconsistency and missing metadata across the suite undermines overall quality. Error handling and composition are functional but minimal.
The government has more than 2,000 unique Federal Accounts, which are similar to bank accounts. Use this tool to get a better understanding of how agencies receive and spend congressional funding to carry out their programs, projects, and activities.
This retrieves a list of all Budget Functions ordered by their title
This data can be used to better understand the different ways that a specific agency spends money
This can be used to visualize government spending that pertains to a specific recipient. This returns a list of recipients, their level, DUNS, UEI, and amount.
Five tools (spending, spending_by_award, spending_over_time, subawards) have NO visible description or input schema in the provided source. Per HARD SCORING RULES, tools with no description must score 0 for description, and tools with no visible schema must score 0 for schema. This forces these four tools to ~20-25 overall.
No output schemas are documented for any tool. The rubric requires documented output schemas so LLMs know what fields to expect and can plan downstream tool calls. [pattern:tool]
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | D | 51 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 47 | - | v1 |
This data can be used to better understand the different ways that a specific agency spends money
This is used to provide information on the federal budgetary resources of the government
Several tools lack parameter descriptions: 'list_budget_functions' has an empty properties object with no enum or constraints; 'major_object_class' parameters lack LLM-friendly descriptions of what the numeric IDs mean; 'spending', 'spending_by_award', 'spending_over_time', 'subawards' have no visible parameter metadata at all.
Tool names use underscores but are not consistently verb-action oriented. 'federal_accounts', 'recipient', 'major_object_class', and 'subawards' are nouns, not verbs. Better: 'list_federal_accounts', 'search_recipients', 'get_major_object_class', 'list_subawards'. [Source: pattern:tool, 90% of A+ tools start with action verb]
No error handling or recovery guidance documented. Tools do not specify what errors are retryable, user-fixable, or fatal. No error responses include the invalid value or the constraint violated. [Source: pattern:recovery-guide]
No tool annotations (readOnlyHint, idempotentHint) present. All tools are READ_ONLY (safe to retry), but this is not formally declared in the tool definitions. Modern MCP spec includes tool annotations for this. [Source: Spec Alignment, current patterns]
Parameter descriptions for 'toptier_agencies' use vague language ('The unique USAspending.gov agency identifier. This ID is the agency_id value returned in the toptier_agencies tool i.e 1137.') instead of clear ranges or format constraints. The 'limit' for federal_accounts defaults to 5; recipient defaults to 50. No explanation of why these different defaults exist or guidance on maximum safe values.