Skip to main content
Glama

usaspending-mcp-server

Get IDV Child Awards

usaspending_get_idv_awards
Read-onlyIdempotent

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (1-based)
sortNoField to sort child awards by (e.g., obligated_amount, period_of_performance_start_date)obligated_amount
typeNoType of child awards to list: child_awards = task/delivery orders, child_idvs = sub-IDVs, grandchild_awards = orders under sub-IDVschild_awards
limitNoMaximum results per page (1–100)
orderNoSort directiondesc
award_idYesParent 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

TableJSON Schema
NameRequiredDescriptionDefault
capNoThe per-page limit that was applied.
errorNoPresent when the call failed. Absent on success.
shownNoNumber of child awards returned on this page.
noticeNoRecovery hint when results are empty — the award may have no children of the requested type. Absent when results are present.
resultsNoChild awards placed under this IDV
award_idNoParent IDV award ID queried
truncatedNoTrue when this page was full and more child awards may remain beyond it.
current_pageNoCurrent page returned
has_next_pageNoWhether more pages of child awards may remain — set on a full page even when the upstream flag reports none.
page_metadataNoPagination metadata (no total count available from this endpoint)
parent_award_idNoParent IDV award ID whose children 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",
      +      "parent_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",
      -  "parent_award_id",
      -  "current_page",
      -  "has_next_page"
      -]
  2. Changed3 schema fields changed
    • changedOutput schema / properties / has_next_page / description
      Previous value: -"Whether there are more pages of child awards"New value: +"Whether more pages of child awards may remain — set on a full page even when the upstream flag reports none."
    • changedOutput schema / properties / page_metadata / properties / has_next / description
      Previous value: -"Whether there are more pages of results"New value: +"Whether more child awards may remain — true on a full page even when the upstream flag reports none (this endpoint returns no total). A short or empty page marks the end."
    • changedOutput schema / properties / truncated / description
      Previous value: -"True when more child awards remain beyond this page."New value: +"True when this page was full and more child awards may remain beyond it."
  3. Changed3 schema fields changed
    • addedOutput schema / properties / cap
      Added value: +{
      +  "description": "The per-page limit that was applied.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / shown
      Added value: +{
      +  "description": "Number of child awards returned on this page.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / truncated
      Added value: +{
      +  "description": "True when more child awards remain beyond this page.",
      +  "type": "boolean"
      +}
  4. Added

TDQS

A4.6/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 the behavioral context that each row includes the generated_unique_award_id for chaining, and that the award_id must be an IDV-generated unique ID. This goes beyond the annotations by explaining the output linkage and the input constraint, which is valuable for the agent's understanding of how results can be used.

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?

The description is two sentences with zero waste. The first sentence states the core purpose, and the second provides essential input requirements and chaining information. It is front-loaded with the most critical information and structured logically, earning its place without any redundancy.

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

Completeness4/5

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

Given the tool's 6 parameters and the presence of an output schema, the description covers the essential operational context: what it returns (rows with generated_unique_award_id), how to obtain the required parent ID, and the relationship to other tools. It does not need to explain the output schema since that exists separately. The only slight gap is that it doesn't explicitly state behavior for non-IDV inputs, but it implies the tool is for IDV awards. Overall, it is complete for an agent to call correctly.

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 description coverage is 100%, so the baseline is 3. The description adds significant extra meaning for the award_id parameter by specifying it must be the generated_unique_award_id and providing the exact source fields (generated_internal_id from usaspending_search_awards, or generated_unique_award_id from usaspending_get_award). It also clarifies the enum values for type (child_awards, child_idvs, grandchild_awards). This adds value beyond the schema descriptions.

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), resource (child contracts and task/delivery orders under an IDV award), and the distinguishing feature that each row includes the generated_unique_award_id to chain into usaspending_get_award. It explicitly differentiates from sibling tools like usaspending_get_award (which provides detail on a single award) and usaspending_search_awards (which searches), so an agent can select this tool unambiguously.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use guidance: it tells the agent that the award_id must be the generated_unique_award_id of the parent IDV and explains how to obtain it (from usaspending_search_awards generated_internal_id or usaspending_get_award). It also clarifies that IDV category awards from usaspending_get_award have child orders accessible here, effectively telling the agent to use this tool when they have a parent IDV and need child awards. No exclusions are needed because the scope is clearly defined.

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.