Skip to main content
Glama

usaspending-mcp-server

Get Recipient Profile

usaspending_get_recipient
Read-onlyIdempotent

Fetch a recipient's full profile including address, business type codes, parent organization, alternate names, and total transaction and loan amounts. 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 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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
award_typeNoAward type category to scope award totals
fiscal_yearNoFiscal year to scope award totals (e.g., 2024)
recipient_idYesRecipient hash ID (UUID with level suffix, e.g., b97d19b0-833c-8d8f-3a2c-157d04ea55ef-P) — from usaspending_search_recipients or usaspending_get_award

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
ueiNoUnique Entity Identifier (SAM.gov)
dunsNoDUNS number (legacy)
nameNoRecipient legal business name
errorNoPresent when the call failed. Absent on success.
locationNoRecipient address
parent_ueiNoParent organization UEI
parent_nameNoParent organization name
recipient_idNoRecipient hash ID
business_typesNoBusiness type codes
alternate_namesNoAlternate business names
recipient_levelNoHierarchy level: P = parent, C = child, R = standalone
total_transactionsNoTotal number of award transactions
total_transaction_amountNoTotal transaction (award) amount in USD; scoped by fiscal_year/award_type when provided
total_face_value_loan_amountNoTotal face value of loans in USD
total_face_value_loan_transactionsNoNumber of face-value loan transactions

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 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": [
      +      "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: `recipient_not_found`: No recipient found for the given recipient ID. `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": [
      +            "recipient_not_found",
      +            "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"
      +}
  2. Changed9 schema fields changed
    • removedOutput schema / properties / business_types_description
      Removed value: -{
      -  "description": "Human-readable business type descriptions",
      -  "items": {
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • addedOutput schema / properties / location / properties / zip
      Added value: +{
      +  "description": "ZIP code",
      +  "type": "string"
      +}
    • addedOutput schema / properties / location / properties / zip4
      Added value: +{
      +  "description": "ZIP+4 extension",
      +  "type": "string"
      +}
    • removedOutput schema / properties / location / properties / zip5
      Removed value: -{
      -  "description": "5-digit ZIP code",
      -  "type": "string"
      -}
    • removedOutput schema / properties / total
      Removed value: -{
      -  "additionalProperties": false,
      -  "description": "Total award amounts by type",
      -  "properties": {
      -    "contracts": {
      -      "description": "Total contracts amount in USD",
      -      "type": "number"
      -    },
      -    "direct_payments": {
      -      "description": "Total direct payments amount in USD",
      -      "type": "number"
      -    },
      -    "grants": {
      -      "description": "Total grants amount in USD",
      -      "type": "number"
      -    },
      -    "loans": {
      -      "description": "Total loans amount in USD",
      -      "type": "number"
      -    },
      -    "other": {
      -      "description": "Total other financial assistance amount in USD",
      -      "type": "number"
      -    }
      -  },
      -  "type": "object"
      -}
    • addedOutput schema / properties / total_face_value_loan_amount
      Added value: +{
      +  "description": "Total face value of loans in USD",
      +  "type": "number"
      +}
    • addedOutput schema / properties / total_face_value_loan_transactions
      Added value: +{
      +  "description": "Number of face-value loan transactions",
      +  "type": "number"
      +}
    • addedOutput schema / properties / total_transaction_amount
      Added value: +{
      +  "description": "Total transaction (award) amount in USD; scoped by fiscal_year/award_type when provided",
      +  "type": "number"
      +}
    • addedOutput schema / properties / total_transactions
      Added value: +{
      +  "description": "Total number of award transactions",
      +  "type": "number"
      +}
  3. First observed

TDQS

A4.5/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 safety profile is covered. The description adds behavioral detail about the returned profile contents, the ID format (UUID with level suffix), and optional scoping of totals by fiscal year and award type. 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.

Conciseness5/5

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

Three sentences, front-loaded with the core purpose and specific contents. The ID origin and optional filters are introduced efficiently without repetition or fluff. Every sentence adds essential context.

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?

Given the output schema exists (so return values are structured), the description covers prerequisites (ID source), optional filters, and cross-referencing tips. An agent has everything needed to decide when and how to call this tool, and the read-only/idempotent annotations cover safety. No meaningful gaps.

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

Parameters4/5

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

Schema coverage is 100% with descriptions for all parameters. The description adds value by explaining the recipient_id format and provenance (from which tools), and clarifies that award_type and fiscal_year scope award totals. This goes beyond the schema's basic attribute descriptions, aiding correct parameter use.

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 'Fetch a recipient's full profile' and lists specific contents (address, business type codes, parent org, alternate names, totals). This distinguishes it from siblings like usaspending_search_recipients (search) and usaspending_get_award (award details), so an agent can immediately identify the tool's role.

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 implies when to use it: after obtaining a recipient_id from usaspending_search_recipients or usaspending_get_award. It provides context for ID prerequisites but does not explicitly state exclusions (e.g., 'use search_recipients to find recipients'). The guidance is clear but slightly implicit.

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.