Skip to main content
Glama

usaspending-mcp-server

Get Award Transactions

usaspending_get_award_transactions
Read-onlyIdempotent

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).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (1-based)
sortNoSort field for transactionsaction_date
limitNoMaximum transactions per page (1–100)
orderNoSort directiondesc
award_idYesGenerated unique award ID (generated_internal_id from usaspending_search_awards)

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
errorNoPresent when the call failed. Absent on success.
noticeNoGuidance when no transactions were returned — helps confirm the award_id is a valid generated_internal_id. Absent when results are present.
resultsNoList of transactions for this award
award_idNoAward ID queried
totalCountNoTotal transaction count across all pages (when available)
current_pageNoCurrent page returned
has_next_pageNoWhether there are more pages of transactions
page_metadataNoPagination metadata
queried_award_idNoAward ID whose transactions were listed

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedInput schema / additionalProperties
      Added value: +false
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "award_id",
      +      "results",
      +      "page_metadata",
      +      "queried_award_id",
      +      "current_page",
      +      "has_next_page"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / error
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "Present when the call failed. Absent on success.",
      +  "properties": {
      +    "code": {
      +      "description": "JSON-RPC error code for this failure.",
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "data": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "reason": {
      +          "description": "Machine-readable failure mode. Declared by this tool: `api_unavailable`: USAspending.gov API is unreachable or returns an error. `api_timeout`: USAspending.gov did not respond before the request deadline elapsed. Other values are possible when a failure originates below the handler.",
      +          "examples": [
      +            "api_unavailable",
      +            "api_timeout"
      +          ],
      +          "type": "string"
      +        },
      +        "recovery": {
      +          "additionalProperties": {},
      +          "description": "Actionable next step for the caller.",
      +          "properties": {
      +            "hint": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "hint"
      +          ],
      +          "type": "object"
      +        },
      +        "retryable": {
      +          "description": "Whether retrying may succeed.",
      +          "type": "boolean"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "message": {
      +      "description": "Human-readable description of what went wrong.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "code",
      +    "message"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / required
      Removed value: -[
      -  "award_id",
      -  "results",
      -  "page_metadata",
      -  "queried_award_id",
      -  "current_page",
      -  "has_next_page"
      -]
  2. Changed1 schema field changed
    • changedOutput schema / properties / notice / description
      Previous value: -"Guidance when no transactions were returned — suggests checking transactions_count from usaspending_get_award first. Absent when results are present."New value: +"Guidance when no transactions were returned — helps confirm the award_id is a valid generated_internal_id. Absent when results are present."
  3. Changed2 schema fields changed
    • addedOutput schema / properties / totalCount
      Added value: +{
      +  "description": "Total transaction count across all pages (when available)",
      +  "type": "number"
      +}
    • removedOutput schema / properties / transaction_total
      Removed value: -{
      -  "description": "Total transaction count across all pages (when available)",
      -  "type": "number"
      -}
  4. Changed1 schema field changed
    • addedOutput schema / properties / notice
      Added value: +{
      +  "description": "Guidance when no transactions were returned — suggests checking transactions_count from usaspending_get_award first. Absent when results are present.",
      +  "type": "string"
      +}
  5. Changed5 schema fields changed
    • addedOutput schema / properties / current_page
      Added value: +{
      +  "description": "Current page returned",
      +  "type": "number"
      +}
    • addedOutput schema / properties / has_next_page
      Added value: +{
      +  "description": "Whether there are more pages of transactions",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / queried_award_id
      Added value: +{
      +  "description": "Award ID whose transactions were listed",
      +  "type": "string"
      +}
    • addedOutput schema / properties / transaction_total
      Added value: +{
      +  "description": "Total transaction count across all pages (when available)",
      +  "type": "number"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "award_id",
      -  "results",
      -  "page_metadata"
      -]New value: +[
      +  "award_id",
      +  "results",
      +  "page_metadata",
      +  "queried_award_id",
      +  "current_page",
      +  "has_next_page"
      +]
  6. First observed

TDQS

A4.3/5.0
Behavior4/5

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, non-mutating operation. The description adds value by explaining what a transaction represents and why it's useful for tracing award history, which is behavior beyond mere read-only status. It does not contradict the annotations and provides semantic context without repeating the hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Only three sentences, with the core purpose stated in the first sentence. Every sentence contributes: the first defines the operation, the second explains what a transaction is, the third gives the use case and ID source. No word wasted, and the most critical information (what and why) is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with a straightforward list operation, the description is complete. The output schema is present (context signal) so return structure is handled elsewhere. The description covers the conceptual model (what a transaction is), the use case, and the provenance of the required ID. Nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% — all five parameters have descriptions in the schema, including the source of award_id. The description reinforces the award_id source but does not add meaningful new information beyond what the schema already provides. With full schema coverage, the baseline of 3 is appropriate; the description does not need to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('List'), the resource ('transactions on a federal award'), and the nature of those transactions ('change events — obligation modifications, performance period extensions, scope changes'). This distinguishes it from sibling tools like get_award or get_award_subawards, which target different award-related data. The mention of tracing spending history further clarifies the exact purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a concrete use case ('trace the spending history and obligation changes over the life of an award') and specifies the source of the required parameter ('Award IDs come from usaspending_search_awards'). It does not explicitly state when NOT to use this tool or mention alternatives, but the context is clear enough for an agent to select it appropriately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.