usaspending-mcp-server
Server Details
Access US federal award, recipient, agency, and spending analytics data from USAspending.gov.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- cyanheads/usaspending-mcp-server
- GitHub Stars
- 1
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.5/5 across 16 of 16 tools scored.
Each tool targets a distinct entity or operation: autocomplete lookups, various 'get' tools for specific records, search tools for discovery, and 'spending_by_*' tools for aggregations. No two tools have overlapping purposes.
All tools follow the pattern 'usaspending_verb_noun' or 'usaspending_verb_by_dimension', using consistent lowercase with underscores. Verbs are predictable: get, list, search, spending.
16 tools cover the key aspects of federal spending data: award lifecycle, agencies, recipients, accounts, and multiple aggregation dimensions. The count is well-scoped for the domain.
The tool set covers core CRUD-like operations (search, get, list) and major aggregations. Minor gaps exist (e.g., no dedicated tool for spending by object class or PSC only), but most agent workflows can be completed without dead ends.
Available Tools
16 toolsusaspending_autocompleteAutocomplete Codes and NamesARead-onlyIdempotentInspect
Look up valid code values for filter fields by searching free-text descriptions. Use the type parameter to select the lookup table: naics (NAICS industry codes), psc (product/service codes), cfda (CFDA/Assistance Listing program numbers), awarding_agency (agency names and IDs), or recipient (recipient names and IDs). Call this before filtering awards when you know a description but not the exact code. Returns matching codes and names for use in other tool filters.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Lookup table to search: naics (industry codes), psc (product/service codes), cfda (assistance programs), awarding_agency (agency names), recipient (recipient names) | |
| limit | No | Maximum number of results to return (1–50) | |
| search_text | Yes | Free-text search string — use a description, keyword, or partial code to find matches |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The limit that was applied. |
| type | Yes | Lookup table searched |
| query | Yes | Search text sent to the autocomplete API |
| shown | No | Number of results returned. |
| total | Yes | Number of results returned |
| results | Yes | Matching codes and names |
| truncated | No | True when results were capped at the limit. |
| lookup_type | Yes | Lookup table that was searched |
| search_text | Yes | Search text used |
| result_count | Yes | Number of matching results returned |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent. Description adds that it returns matching codes and names, providing useful behavioral context without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three well-structured sentences: purpose, parameter explanation, usage guidance. No wasted words, front-loaded with core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters, presence of output schema, and annotations, the description fully covers behavior, parameters, and return value. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds meaning by explaining the purpose of the type parameter with enum values and clarifying search_text usage, surpassing baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb ('look up'), resource ('valid code values for filter fields'), and context ('by searching free-text descriptions'). It distinguishes from sibling tools which are primarily for spending or award data retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises calling this tool before filtering awards when you have a description but not the exact code. Does not specify when not to use, but overall guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
usaspending_disaster_spendingDisaster and Emergency SpendingARead-onlyIdempotentInspect
Fetch disaster and emergency supplemental spending (COVID-19, hurricanes, infrastructure law, etc.) broken down by agency, CFDA assistance program, recipient, or geography. Use the dimension parameter to select the breakdown axis: overview (top-level totals), agency, cfda, recipient, or geography. Filter by DEF codes (Disaster/Emergency Funding codes) to isolate a specific emergency appropriation. DEF codes appear in usaspending_get_award account_obligations_by_defc and usaspending_get_agency def_codes fields.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (1-based) | |
| limit | No | Maximum results per page (1–100, not used for overview dimension) | |
| filters | No | Filters — def_codes is required for all non-overview dimensions (agency, cfda, recipient, geography) | |
| dimension | Yes | Breakdown axis: overview (top-level totals and DEF code funding), agency (by awarding agency), cfda (by assistance program), recipient (by recipient), geography (by state/county) | |
| spending_type | No | Data type: award (award-level obligations and outlays) or total (includes direct non-award spending). Applies to agency and recipient dimensions only. | award |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | Breakdown results (empty for overview dimension) |
| overview | No | Top-level overview totals (dimension=overview only) |
| dimension | Yes | Breakdown dimension returned |
| totalCount | No | Total items for paginated dimensions (when available) |
| current_page | No | Current page (non-overview dimensions) |
| has_next_page | No | Whether there are more pages |
| page_metadata | No | Pagination metadata (non-overview dimensions) |
| spending_type | Yes | Data type returned (award or total) |
| applied_dimension | Yes | Breakdown dimension applied |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint, openWorldHint, idempotentHint, and the description complements these by noting that def_codes are required for non-overview dimensions. No contradictions, and the description adds behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, well-structured, and front-loaded with the core functionality. Every sentence adds necessary context without superfluous detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, 1 required, 100% schema coverage, and an output schema), the description is complete. It explains the dimension parameter, the def_codes filter requirement, and cross-references other tools for DEF codes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds value by explaining that def_codes is required for agency, cfda, recipient, and geography dimensions, and by describing each dimension's purpose. This goes beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the tool fetches disaster and emergency supplemental spending broken down by agency, CFDA, recipient, or geography. It lists all dimensions and mentions DEF code filtering, making the purpose precise and distinct from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use this tool (for disaster/emergency spending) and provides context about DEF codes from other tools. While it doesn't explicitly state when not to use it, it gives enough guidance for selecting it over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
usaspending_get_agencyGet Agency OverviewARead-onlyIdempotentInspect
Fetch an agency's current fiscal year overview including mission, budget authority, obligation totals, sub-agency count, and DEF codes for disaster/emergency funding. Also returns sub-agency breakdown with transaction counts. Accepts either a 3-digit toptier_code (e.g., 097 for DoD, 012 for Agriculture) or an agency_slug (e.g., department-of-defense) — both appear in usaspending_list_agencies results and award search results.
| Name | Required | Description | Default |
|---|---|---|---|
| agency_slug | No | URL-friendly agency slug (e.g., department-of-defense) — from usaspending_list_agencies or award search results. Use either toptier_code or agency_slug, not both. | |
| toptier_code | No | 3-digit toptier agency code (e.g., 097, 012) — from usaspending_list_agencies. Use either toptier_code or agency_slug, not both. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | Agency full name |
| mission | No | Agency mission statement |
| website | No | Agency website URL |
| agency_id | No | Internal agency ID |
| def_codes | No | Disaster/Emergency Funding (DEF) codes applicable to this agency |
| abbreviation | No | Agency abbreviation |
| sub_agencies | No | Sub-agency breakdown within this toptier agency |
| toptier_code | No | 3-digit toptier agency code |
| obligated_amount | No | Total obligated amount in USD for current fiscal year |
| transactions_count | No | Total transaction count |
| subtier_agency_count | No | Number of sub-agencies within this toptier agency |
| budget_authority_amount | No | Total budget authority amount in USD for current fiscal year |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint and idempotentHint, and the description adds value by detailing the returned data (mission, budget, DEF codes, sub-agency breakdown), thus fully informing the agent of the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with two sentences. The first lists key return fields, the second explains input options and cross-reference. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description doesn't need to detail return format. It fully covers input requirements and behavioral context, making it complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes the two parameters and their mutual exclusivity. The description adds context about where these IDs come from (usaspending_list_agencies and award search results), providing additional semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it fetches an agency's current fiscal year overview with specific data fields (mission, budget authority, obligation totals, sub-agency count, DEF codes) and differentiates from siblings like usaspending_list_agencies by focusing on a single agency's details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that the tool accepts either a toptier_code or agency_slug from usaspending_list_agencies or award search results, implying when to use it. However, it lacks explicit guidance on when not to use it or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
usaspending_get_awardGet Award DetailsARead-onlyIdempotentInspect
Fetch full details of a federal award by its generated unique award ID. Returns contract or assistance award data including recipient info, agency hierarchy, period of performance, place of performance, funding account linkages (account_obligations_by_defc), parent IDV information, and subaward count. Use generated_internal_id values from usaspending_search_awards as input. Recipient hashes can be passed to usaspending_get_recipient; NAICS codes can be used in usaspending_search_awards filters. For IDV-category awards (category="idv"), use usaspending_get_idv_awards to list the child contracts and task/delivery orders placed under them.
| Name | Required | Description | Default |
|---|---|---|---|
| award_id | Yes | Generated unique award ID (e.g., CONT_AWD_FA862118F6251_9700_FA862115D6276_9700) — use generated_internal_id from usaspending_search_awards |
Output Schema
| Name | Required | Description |
|---|---|---|
| cfda | No | CFDA program (grants/assistance) |
| fain | No | Federal Award Identification Number (for assistance) |
| piid | No | Procurement Instrument Identifier (for contracts) |
| type | No | Award type code |
| naics | No | NAICS code (contracts) |
| category | No | Award category (contract, grant, direct_payment, loan, idv, other) |
| recipient | No | Recipient details |
| date_signed | No | Date award was signed (YYYY-MM-DD) |
| description | No | Award description |
| parent_award | No | Parent IDV information (contracts only) |
| total_outlays | No | Total outlay amount in USD |
| funding_agency | No | Funding agency hierarchy |
| subaward_count | No | Number of subawards; use with usaspending_get_award_subawards |
| awarding_agency | No | Awarding agency hierarchy |
| total_obligation | No | Total obligation amount in USD |
| type_description | No | Human-readable award type |
| transactions_count | No | Number of transactions; use with usaspending_get_award_transactions |
| place_of_performance | No | Place of performance |
| period_of_performance | No | Period of performance dates |
| product_or_service_code | No | Product or service code (contracts) |
| generated_unique_award_id | No | Generated unique award ID |
| base_and_all_options_value | No | Base and all options value in USD (contracts) |
| account_obligations_by_defc | No | Funding breakdown by Disaster/Emergency Funding (DEF) code — links to disaster appropriations |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the agent knows this is a safe, idempotent read operation. The description adds behavioral context by specifying the exact response fields (contract/assistance data, recipient info, etc.) and noting that input comes from a search tool. This is above the baseline but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured paragraph. It front-loads the primary purpose, then lists what is returned, and concludes with cross-references to sibling tools. Every sentence is informative and there is no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has only one parameter and an output schema exists (though not shown), the description is exceptionally complete. It covers input format, usage context, alternatives, and related sibling tools. No additional information is needed for correct agent usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'award_id' has 100% schema coverage and the description explains its purpose with a concrete example and the source (generated_internal_id from usaspending_search_awards). This adds significant meaning beyond the schema's 'minLength' constraint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches full details of a federal award by its unique ID, and lists the types of data returned (contract/assistance, recipient info, agency hierarchy, etc.). It distinguishes from the sibling tool usaspending_get_idv_awards by noting that IDV-category awards require that tool instead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to use generated_internal_id from usaspending_search_awards as input. It also provides clear guidance on when not to use this tool: for IDV-category awards, use usaspending_get_idv_awards instead. Additionally, it suggests related tools for recipient hashes (usaspending_get_recipient) and NAICS codes (usaspending_search_awards filters).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
usaspending_get_award_subawardsGet Award SubawardsARead-onlyIdempotentInspect
List subaward contracts or grants under a prime federal award. Reveals the sub-contractor or sub-grantee layer — the organizations that actually perform the work. Each row shows the subaward number, amount, description, action date, and recipient. Check subaward_count on usaspending_get_award first to confirm subawards exist before calling this tool.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (1-based) | |
| sort | No | Sort field for subawards | action_date |
| limit | No | Maximum subawards per page (1–100) | |
| order | No | Sort direction | desc |
| award_id | Yes | Generated unique award ID (generated_internal_id from usaspending_search_awards) |
Output Schema
| Name | Required | Description |
|---|---|---|
| notice | No | Guidance when no subawards were returned — suggests checking subaward_count from usaspending_get_award first. Absent when results are present. |
| results | Yes | List of subawards under this prime award |
| award_id | Yes | Prime award ID queried |
| totalCount | No | Total subaward count across all pages (when available) |
| current_page | Yes | Current page returned |
| has_next_page | Yes | Whether there are more pages of subawards |
| page_metadata | Yes | Pagination metadata |
| prime_award_id | Yes | Prime award ID whose subawards were listed |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint as true, indicating safe read operation. The description adds value by explaining the tool reveals the sub-contractor/sub-grantee layer and listing output fields. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose and output, second provides a usage hint. Extremely concise, front-loaded with key information, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich input schema, annotations, and existence of output schema, the description covers the tool's purpose, usage hint, and output fields adequately. It could mention pagination, but that is implicit from parameters. Overall, it is complete enough for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description briefly mentions output fields (e.g., subaward number, amount) but does not add semantic meaning to the parameters beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'List subaward contracts or grants under a prime federal award' with a clear verb and resource, and it distinguishes from sibling tools by focusing on subawards. It also outlines the fields shown in each row, enhancing clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a specific precondition: 'Check subaward_count on usaspending_get_award first to confirm subawards exist before calling this tool.' This guides the agent on when to invoke the tool. It lacks explicit when-not-to-use or alternatives but is still helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
usaspending_get_award_transactionsGet Award TransactionsARead-onlyIdempotentInspect
List individual transactions (contract modifications, grant amendments) on a federal award. Each transaction represents a change event — obligation modifications, performance period extensions, scope changes, etc. Use this to trace the spending history and obligation changes over the life of an award. Award IDs come from usaspending_search_awards (generated_internal_id field).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (1-based) | |
| sort | No | Sort field for transactions | action_date |
| limit | No | Maximum transactions per page (1–100) | |
| order | No | Sort direction | desc |
| award_id | Yes | Generated unique award ID (generated_internal_id from usaspending_search_awards) |
Output Schema
| Name | Required | Description |
|---|---|---|
| notice | No | Guidance when no transactions were returned — suggests checking transactions_count from usaspending_get_award first. Absent when results are present. |
| results | Yes | List of transactions for this award |
| award_id | Yes | Award ID queried |
| totalCount | No | Total transaction count across all pages (when available) |
| current_page | Yes | Current page returned |
| has_next_page | Yes | Whether there are more pages of transactions |
| page_metadata | Yes | Pagination metadata |
| queried_award_id | Yes | Award ID whose transactions were listed |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it as read-only and idempotent. The description adds behavioral context by explaining that each transaction is a 'change event' and enumerating examples (obligation modifications, period extensions, scope changes), which is valuable beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: purpose, what transactions represent, usage guidance. It is concise and front-loaded with the core function. However, it could be slightly more structured or use bullet points for quick scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a listing tool with output schema (not shown), the description sufficiently explains purpose, input source, and what the transactions represent. It does not need to detail return values. It is complete enough to guide correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for each parameter. The description adds minor value by noting the award_id comes from a specific field (generated_internal_id), but overall does not substantially enhance parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists individual transactions on a federal award, each representing a change event. It distinguishes from siblings by tying award IDs to a specific sibling tool (usaspending_search_awards).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'Use this to trace the spending history and obligation changes over the life of an award,' providing clear context for when to use. It also explains where award IDs come from, guiding the agent to first call usaspending_search_awards. No explicit when-not, but annotations imply safe read operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
usaspending_get_federal_accountGet Federal AccountARead-onlyIdempotentInspect
Fetch a federal account's budget data: total obligations, gross outlays, and budgetary resources. Federal accounts connect appropriations law to actual agency spending. Account codes appear in usaspending_get_award account_obligations_by_defc field and are formatted as AGENCY-MAIN (e.g., 097-0100 for DoD Operation and Maintenance). Returns account metadata and current fiscal year financial totals.
| Name | Required | Description | Default |
|---|---|---|---|
| account_code | Yes | Federal account code in AGENCY-MAIN format (e.g., 097-0100). Appears in award funding details from usaspending_get_award. |
Output Schema
| Name | Required | Description |
|---|---|---|
| bureau_name | No | Bureau name within the agency |
| fiscal_year | No | Fiscal year of the financial data |
| account_title | No | Full account title |
| agency_identifier | No | Agency identifier code |
| main_account_code | No | Main account code |
| parent_agency_name | No | Managing parent agency name |
| federal_account_code | No | Federal account code |
| total_obligated_amount | No | Total obligated amount in USD |
| total_budgetary_resources | No | Total budgetary resources in USD |
| total_gross_outlay_amount | No | Total gross outlay amount in USD |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent behavior. The description adds that the tool returns account metadata and current fiscal year financial totals, which is consistent and adds value. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus a descriptive sentence, no wasted words. Front-loaded with purpose and return data. Efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is moderate complexity with one parameter. Description explains what is returned (obligations, outlays, resources, metadata, totals) and the relationship to awards. Output schema exists, so no need to detail return structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of the single parameter. Description adds meaning: format example, origin from usaspending_get_award, and field reference, going beyond schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Fetch a federal account's budget data' with specific fields (obligations, outlays, resources). It distinguishes from sibling tools by mentioning that account codes come from usaspending_get_award, avoiding tautology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains that federal accounts connect appropriations law to spending and that account codes are formatted as AGENCY-MAIN, providing context on when to use this tool. Does not explicitly state when not to use it, but gives clear guidance via examples.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
usaspending_get_idv_awardsGet IDV Child AwardsARead-onlyIdempotentInspect
List child contracts and task/delivery orders placed under an IDV (Indefinite Delivery Vehicle) award. Each row includes the generated_unique_award_id to chain into usaspending_get_award for full detail. The award_id must be the generated_unique_award_id of the parent IDV — obtainable from usaspending_search_awards (generated_internal_id field) or from usaspending_get_award. IDV category awards returned by usaspending_get_award have child orders accessible via this tool.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (1-based) | |
| sort | No | Field to sort child awards by (e.g., obligated_amount, period_of_performance_start_date) | obligated_amount |
| type | No | Type of child awards to list: child_awards = task/delivery orders, child_idvs = sub-IDVs, grandchild_awards = orders under sub-IDVs | child_awards |
| limit | No | Maximum results per page (1–100) | |
| order | No | Sort direction | desc |
| award_id | Yes | Parent IDV generated_unique_award_id (e.g., CONT_IDV_NNK14MA74C_8000) — use generated_internal_id from usaspending_search_awards or generated_unique_award_id from usaspending_get_award |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The per-page limit that was applied. |
| shown | No | Number of child awards returned on this page. |
| notice | No | Recovery hint when results are empty — the award may have no children of the requested type. Absent when results are present. |
| results | Yes | Child awards placed under this IDV |
| award_id | Yes | Parent IDV award ID queried |
| truncated | No | True when more child awards remain beyond this page. |
| current_page | Yes | Current page returned |
| has_next_page | Yes | Whether there are more pages of child awards |
| page_metadata | Yes | Pagination metadata (no total count available from this endpoint) |
| parent_award_id | Yes | Parent IDV award ID whose children were listed |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and idempotentHint=true, so the description does not need to cover safety. It adds useful behavioral context like each row includes generated_unique_award_id for chaining, which enhances transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the main purpose, no redundant information. Every sentence is essential.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the existence of an output schema, the description fully covers usage, parameter requirements, and return value chaining. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the description still adds meaning by explaining how to obtain the award_id from siblings and detailing the type enum values. This goes beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists child contracts and task/delivery orders under an IDV award. It uses a specific verb ('list') and resource ('child awards'), and distinguishes from sibling tools like usaspending_get_award.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool (to get child awards of an IDV) and how to obtain the required award_id from sibling tools. It does not explicitly state when not to use it, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
usaspending_get_recipientGet Recipient ProfileARead-onlyIdempotentInspect
Fetch a recipient's full profile including address, business type classifications, parent organization, alternate names, and total award amounts by category. Recipient IDs are UUID hashes with a level suffix (-P parent, -C child, -R standalone) from usaspending_search_recipients or usaspending_get_award. Optionally scope the award totals to a specific fiscal year and award type. UEI and DUNS values can be used to cross-reference with SAM.gov and SEC EDGAR.
| Name | Required | Description | Default |
|---|---|---|---|
| award_type | No | Award type category to scope award totals | |
| fiscal_year | No | Fiscal year to scope award totals (e.g., 2024) | |
| recipient_id | Yes | Recipient hash ID (UUID with level suffix, e.g., b97d19b0-833c-8d8f-3a2c-157d04ea55ef-P) — from usaspending_search_recipients or usaspending_get_award |
Output Schema
| Name | Required | Description |
|---|---|---|
| uei | No | Unique Entity Identifier (SAM.gov) |
| duns | No | DUNS number (legacy) |
| name | No | Recipient legal business name |
| total | No | Total award amounts by type |
| location | No | Recipient address |
| parent_uei | No | Parent organization UEI |
| parent_name | No | Parent organization name |
| recipient_id | No | Recipient hash ID |
| business_types | No | Business type codes |
| alternate_names | No | Alternate business names |
| recipient_level | No | Hierarchy level: P = parent, C = child, R = standalone |
| business_types_description | No | Human-readable business type descriptions |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false, so the agent knows it's a safe read operation. The description adds the ID format and cross-referencing context but doesn't disclose additional behavioral traits like error handling or rate limits. This is adequate but not rich, as annotations carry most of the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, no unnecessary words, front-loaded with the core purpose. Every sentence adds essential information: what the tool does, how to get the ID, and optional scoping. Excellent structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 parameters, output schema exists), the description covers all needed context: ID format, scoping, cross-references, and recipient levels. It is complete for an agent to correctly select and invoke the tool without additional documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds significant value for recipient_id by explaining its format (UUID with level suffix) and source (from other tools). For award_type and fiscal_year, the description largely restates the schema, but the overall addition crosses the threshold to 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches a recipient's full profile with specific fields (address, business type, parent org, alternate names, total award amounts). It distinguishes from sibling tools like usaspending_search_recipients (search) and usaspending_get_award (award details), using specific verbs and resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (fetch recipient profile), how to obtain the required recipient_id (from usaspending_search_recipients or usaspending_get_award), and explains the ID format (UUID with level suffix). It also mentions optional scoping (fiscal year, award type) and cross-referencing with SAM.gov and SEC EDGAR, providing complete guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
usaspending_list_agenciesList Federal AgenciesARead-onlyIdempotentInspect
List all top-tier federal agencies with toptier codes, agency slugs, budget authority amounts, and obligation totals for the current fiscal year. Use this as the entry point for agency navigation — toptier codes and agency slugs are required inputs for usaspending_get_agency and agency-based filters on spending analysis tools.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort field: agency_name (alphabetical), budget_authority_amount, obligated_amount, or outlay_amount | agency_name |
| order | No | Sort direction: asc or desc | asc |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | Total number of agencies returned |
| results | Yes | List of top-tier federal agencies with budget and obligation data |
| agency_count | Yes | Total number of top-tier federal agencies returned |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true. The description adds behavioral detail: it lists data for the current fiscal year and specifies the fields returned, which is valuable beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first defines purpose, second provides usage guidance. No redundancy, front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no required params, two optional enums, output schema exists), the description sufficiently covers what the tool does, what it returns, and how it fits with sibling tools. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters have descriptions in the schema. The description does not add extra parameter semantics beyond mentioning sort fields indirectly. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description specifies the exact data returned (toptier codes, agency slugs, budget authority, obligation totals) and the time frame (current fiscal year). It distinguishes itself from siblings by highlighting that its outputs are required inputs for other tools like usaspending_get_agency.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this as the entry point for agency navigation' and explains that outputs are needed for agency-based filters. Does not state when not to use it, but the context of sibling tools implies it is for top-tier agencies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
usaspending_search_awardsSearch Federal AwardsARead-onlyIdempotentInspect
Search federal awards by keyword, recipient, agency, award type, NAICS code, location, or date range. Returns ranked award summaries including recipient names, amounts, awarding agencies, and generated award IDs for use with usaspending_get_award. Award types: A/B/C/D = contracts, 02/03/04/05 = grants, 06/10 = direct payments, 07/08 = loans, IDV_A/IDV_B/IDV_C/IDV_D/IDV_E = IDVs. Dates must be ISO 8601 (YYYY-MM-DD). Earliest data: 2007-10-01 via search API. DoD contracts have a 90-day publication lag.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (1-based) | |
| sort | No | Sort field for results | Award Amount |
| limit | No | Maximum results per page (1–100) | |
| order | No | Sort direction | desc |
| keyword | No | Full-text search across award descriptions, recipient names, and place names | |
| agency_name | No | Filter to a specific awarding agency by name (e.g., "Department of Defense"). Use usaspending_autocomplete type=awarding_agency to find exact names. | |
| naics_codes | No | Filter by NAICS industry codes (e.g., ["541512"]). Use usaspending_autocomplete type=naics to look up codes. | |
| time_period | No | Filter awards by date range (action date) | |
| recipient_name | No | Filter by recipient name (partial match). Use usaspending_search_recipients for precise recipient_id filtering. | |
| location_filter | No | Filter by place of performance location. Uses FIPS codes and 2-letter state abbreviations, not place names — use a geocoding server to resolve names to codes first. | |
| award_type_codes | No | Filter by award type codes. All codes must belong to a single group: A/B/C/D (contracts), 02/03/04/05 (grants), 06/10 (direct payments), 07/08 (loans), IDV_A–IDV_E (IDVs). Defaults to contracts. Mixing groups across categories causes a 422 error. |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | Current page number returned |
| notice | No | Recovery hint when results are empty — echoes applied filters and suggests how to broaden. Absent when results are present. |
| results | Yes | Matching award summaries |
| has_next | Yes | Whether there are more pages of results |
| totalCount | No | Total number of matching awards across all pages (when available) |
| page_metadata | Yes | Pagination metadata |
| applied_keyword | No | Keyword filter applied to this search |
| applied_agency_name | No | Awarding agency name filter applied |
| applied_naics_codes | No | NAICS codes filter applied (comma-separated) |
| applied_time_period_end | No | End date filter applied (YYYY-MM-DD) |
| applied_time_period_start | No | Start date filter applied (YYYY-MM-DD) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, openWorld, idempotent. The description adds meaningful behavioral details: returns ranked summaries, specific fields, award type code groupings with constraint (cannot mix groups), date format requirement, earliest data limit, and DoD publication lag. These go beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: 5 sentences, no fluff. It front-loads the main purpose and filters, then provides output hints, award type guidance, date format, data limits, and a specific caveat. Every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (11 parameters, nested objects, sibling tools, output schema present), the description covers all essential aspects: what it does, filters, output includes IDs for companion tool, award type rules, date constraints, data range, and a timing caveat. No gaps are apparent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds crucial semantics: explains award type code meanings and grouping rules (mixing causes 422 error), specifies ISO 8601 date format, earliest valid date, and DoD lag. For location_filter, it clarifies using FIPS codes and geocoding. This is rich context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search federal awards' and lists many filters, specifying it returns ranked award summaries with IDs for use with usaspending_get_award. This differentiates it from sibling tools like usaspending_get_award by indicating it's the search counterpart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (to search awards) and hints at a companion tool (usaspending_get_award) for full details. However, it does not explicitly exclude use cases or compare with other search tools like usaspending_search_recipients.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
usaspending_search_federal_accountsSearch Federal AccountsARead-onlyIdempotentInspect
List and keyword-search federal accounts by agency identifier or title keyword. Returns account numbers, names, managing agencies, and budgetary resources. Use account_number from results as input to usaspending_get_federal_account for full budget detail. Use usaspending_list_agencies to look up agency_identifier codes (3-digit strings, e.g. "097" for DoD).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (1-based) | |
| limit | No | Maximum results per page (1–100) | |
| keyword | No | Filter accounts by name or title keyword (e.g., "defense", "transportation") | |
| sort_field | No | Field to sort results by | budgetary_resources |
| sort_direction | No | Sort direction | desc |
| agency_identifier | No | 3-digit agency identifier code (e.g., "097" for Department of Defense). Use usaspending_list_agencies to look up codes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | Current page number returned |
| notice | No | Recovery hint when results are empty — echoes applied filters and suggests how to broaden. Absent when results are present. |
| results | Yes | Matching federal accounts |
| has_next | Yes | Whether there are more pages of results |
| totalCount | No | Total number of matching accounts across all pages (when available) |
| page_metadata | Yes | Pagination metadata |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint as true. The description adds behavioral details: return fields (account numbers, names, managing agencies, budgetary resources) and pagination parameters (page, limit). No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences without waste: first states purpose, second details returns and links to get tool, third links to agency list tool. Every sentence is informative and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of output schema and annotations, the description covers the tool's functionality, return values, and integration with sibling tools. It is complete and actionable for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with each parameter described. The description adds meaning beyond schema by explaining return fields and linking agency_identifier to usaspending_list_agencies. It provides useful context for parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies verb (list and keyword-search), resource (federal accounts), and criteria (by agency identifier or title keyword). It distinguishes from sibling tools usaspending_get_federal_account and usaspending_list_agencies, making the purpose clear and unique.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use this tool (to search/list accounts) and when to use alternatives: usaspending_get_federal_account for full budget detail and usaspending_list_agencies for agency codes. This provides good usage context, though it doesn't explicitly state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
usaspending_search_recipientsSearch Award RecipientsARead-onlyIdempotentInspect
Search for organizations or individuals receiving federal funds by name or UEI (Unique Entity Identifier). Returns recipient IDs (UUID hashes), total award amounts, business type classifications, and location data. Recipient IDs from this tool can be passed to usaspending_get_recipient for full profiles. Recipient level: P = parent organization, C = child entity, R = standalone.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results to return (1–100) | |
| keyword | Yes | Name, UEI, DUNS, or keyword to search for — partial matches are supported | |
| award_type | No | Filter by award type category to scope the total amounts returned |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The limit that was applied. |
| shown | No | Number of recipients returned. |
| total | Yes | Number of results returned |
| notice | No | Recovery hint when results are empty — suggests how to broaden the search. Absent when results are present. |
| results | Yes | Matching recipients |
| truncated | No | True when results were capped at the limit. |
| recipient_count | Yes | Number of matching recipients returned |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint. The description adds value by disclosing that partial matches are supported, that results include recipient level codes (P, C, R), and that IDs are UUID hashes. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is four sentences, each adding distinct value: purpose, return data, cross-tool usage, and recipient level explanation. Front-loaded with the main action. No redundancy or waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (search with filters), the presence of annotations and output schema offloads behavioral and return-value documentation. The description fills gaps: explains recipient level codes, cross-tool integration, and partial matching. This is a complete and helpful definition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100% with descriptions for all parameters. The description adds that keyword supports partial matches and that award_type filters total amounts, but these are already implied in the schema. Schema does the heavy lifting, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool searches for recipients by name or UEI, specifies returned data (IDs, amounts, classifications, location), and distinguishes from sibling usaspending_get_recipient by noting that IDs can be passed there. The verb 'Search' and resource 'recipients' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description explains that the tool can be used to get recipient IDs for use with usaspending_get_recipient, providing a clear workflow. However, it does not explicitly state when not to use this tool or mention alternatives among siblings, though the differentiation is implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
usaspending_spending_by_categorySpending by CategoryARead-onlyIdempotentInspect
Aggregate federal spending grouped by a specific dimension: NAICS industry code, PSC product/service code, awarding agency, funding agency, CFDA assistance program, or recipient. Returns top items with obligation amounts — useful for trend and breakdown analysis. Chain NAICS codes into usaspending_search_awards filters or usaspending_autocomplete lookups.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (1-based) | |
| limit | No | Maximum items to return (1–100) | |
| filters | No | Optional filters to scope the aggregation | |
| category | Yes | Breakdown dimension: naics (industry), psc (product/service code), awarding_agency, awarding_subagency, funding_agency, funding_subagency, cfda (assistance programs), recipient_duns, or recipient_parent_duns |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | Current page returned |
| notice | No | Recovery hint when results are empty — suggests how to broaden filters. Absent when results are present. |
| results | Yes | Top items in this category by obligation amount |
| category | Yes | Breakdown dimension used |
| has_next | Yes | Whether there are more pages |
| totalCount | No | Total number of items in this category (when available) |
| page_metadata | Yes | Pagination metadata |
| applied_keywords | No | Keyword filters applied (comma-separated) |
| applied_agency_name | No | Awarding agency name filter applied |
| applied_naics_codes | No | NAICS code filters applied (comma-separated) |
| applied_time_period_end | No | End date filter applied (YYYY-MM-DD) |
| applied_time_period_start | No | Start date filter applied (YYYY-MM-DD) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, so the description does not need to repeat them. It adds value by stating the output includes 'top items with obligation amounts,' revealing ordering and data content. This behavioral detail complements the annotations well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with no redundancy. The first sentence immediately states the core function, the second adds purpose and output details, and the third provides cross-tool usage. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (aggregation with multiple dimensions and filters) and the presence of an output schema, the description is complete. It covers purpose, usage, output behavior, and chaining. Nothing essential is missing for an agent to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds context for the 'category' parameter by listing examples from the enum, and mentions chaining for NAICS. However, it does not elaborate on page, limit, or filters beyond what the schema provides, so it barely exceeds the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'aggregate' and clearly defines the resource 'federal spending grouped by a specific dimension.' It lists the supported dimensions (NAICS, PSC, agency, CFDA, recipient), which distinguishes it from sibling tools like usaspending_search_awards (which returns individual awards) and usaspending_spending_over_time (time-series).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the tool is 'useful for trend and breakdown analysis' and provides actionable guidance to 'Chain NAICS codes into usaspending_search_awards filters or usaspending_autocomplete lookups.' This tells the agent when to use this tool and how to connect results with siblings, leaving no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
usaspending_spending_by_geographySpending by GeographyARead-onlyIdempotentInspect
Aggregate federal spending by state, county, or congressional district. Useful for per-capita analysis, regional comparisons, and mapping federal investment patterns. Geographic filters accept FIPS codes and 2-letter state abbreviations — NOT place names. Resolve place names to FIPS codes using a geocoding server (Census or OpenStreetMap) before applying location filters. Chain per-capita results with Census population data for meaningful comparisons.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | Yes | Which location to aggregate by: place_of_performance (where work is done) or recipient_location (where the recipient is based) | |
| filters | No | Optional filters to scope the spending aggregation | |
| geo_layer | Yes | Geographic granularity: state (50 states), county (county-level), or district (congressional district) | |
| subawards | No | Include subaward data instead of prime award data |
Output Schema
| Name | Required | Description |
|---|---|---|
| scope | Yes | Location scope used for aggregation |
| total | Yes | Number of geographic areas returned |
| notice | No | Recovery hint when results are empty — suggests how to broaden filters. Absent when results are present. |
| results | Yes | Spending totals by geographic area |
| geo_layer | Yes | Geographic granularity used |
| area_count | Yes | Number of geographic areas returned |
| applied_scope | Yes | Location scope applied: place_of_performance or recipient_location |
| applied_keywords | No | Keyword filters applied (comma-separated) |
| applied_geo_layer | Yes | Geographic granularity applied: state, county, or district |
| applied_agency_name | No | Awarding agency name filter applied |
| applied_naics_codes | No | NAICS code filters applied (comma-separated) |
| applied_time_period_end | No | End date filter applied (YYYY-MM-DD) |
| applied_time_period_start | No | Start date filter applied (YYYY-MM-DD) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint. Description adds context about data aggregation and input format requirements, but no contradictions or additional behavioral traits beyond what annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three focused sentences: purpose, usage guidance, and input format requirements. No redundancy and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite output schema existing, the description covers purpose, usage, and format constraints. The misleading FIPS guidance slightly detracts, but overall complete for a geographic aggregation tool with good annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all parameters. However, the description mentions 'geographic filters accept FIPS codes and 2-letter state abbreviations' but the input schema has no such parameter; this is misleading. Adds confusion rather than clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it aggregates federal spending by geography (state, county, district) and lists specific use cases (per-capita analysis, regional comparisons, mapping). Distinguishes from siblings by focusing on geographic breakdown.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use (geographic aggregation) and what not to do (avoid place names; use FIPS codes/state abbreviations). Provides actionable steps: resolve names via geocoding, chain with Census data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
usaspending_spending_over_timeSpending Over TimeARead-onlyIdempotentInspect
Fetch aggregated federal obligation amounts grouped by fiscal year, fiscal quarter, or calendar month. Filter by award type, agency, recipient, keyword, or NAICS code to trace spending trends in a specific area. Returns per-period totals and optional breakdowns by award category (contracts, grants, direct payments, loans, other).
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Time grouping: fiscal_year (annual US govt FY: Oct–Sep), quarter (fiscal quarter), or month (calendar month) | |
| filters | No | Filters to scope the time-series aggregation. Defaults to contract awards when omitted. | |
| subawards | No | Aggregate subaward data instead of prime award data |
Output Schema
| Name | Required | Description |
|---|---|---|
| group | Yes | Time grouping used |
| notice | No | Recovery hint when no periods are returned — suggests broadening filters. Absent when results are present. |
| results | Yes | Time-series of obligation totals |
| time_group | Yes | Time grouping applied: fiscal_year, quarter, or month |
| period_count | Yes | Number of time periods returned |
| total_periods | Yes | Number of time periods returned |
| applied_keywords | No | Keyword filters applied (comma-separated) |
| applied_agency_name | No | Awarding agency name filter applied |
| applied_naics_codes | No | NAICS code filters applied (comma-separated) |
| applied_time_period_end | No | End date filter applied (YYYY-MM-DD) |
| applied_time_period_start | No | Start date filter applied (YYYY-MM-DD) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnly, openWorld, idempotent hints. Description adds behavioral context: returns per-period totals and optional breakdowns by award category (contracts, grants, etc.), and defaults to contracts if no award_type_codes provided. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, no fluff. Front-loaded with primary action. Every sentence adds value: what it does, how to filter, what it returns.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema existing, the description covers key output elements (per-period totals, breakdowns). Could mention data availability or pagination, but adequate for a read-only, idempotent tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% description coverage for all 3 parameters. The description adds overall context (e.g., 'trace spending trends') but does not add significant meaning beyond what the schema already provides. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool fetches aggregated federal obligation amounts grouped by fiscal year, quarter, or month. The verb 'Fetch' and resource 'obligation amounts' are specific. Distinguishes from siblings like spending_by_category or spending_by_geography by focusing on time groupings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage for time-series spending analysis with filters, but no explicit when-to-use or when-not-to-use compared to siblings. Does not mention alternatives or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!