Skip to main content
Glama

usda_nass_get_production

Read-onlyIdempotent

Retrieve annual final USDA NASS crop production or yield figures for a commodity and year, with optional state or national totals; excludes in-season forecasts.

Instructions

The final production or yield of a crop for a year, state or national.

Annual final figures (reference_period_desc YEAR, domain_desc TOTAL, prodn_practice_desc ALL PRODUCTION PRACTICES, freq_desc ANNUAL), so breakdowns by irrigation and the like and the in-season forecasts are left out; get_production_forecasts serves the latter. Utilisations, classes and units come as rows, the columns tell them apart: util_practice_desc grain from silage, class_desc a crop's classes (wheat's ALL CLASSES, WINTER, ...), unit_desc the unit (BU, TONS, BU / ACRE), and the value of production comes as rows with unit_desc $. value is the figure as published, value_number its parsed form. Sorted by state, utilisation, class, unit and source. Cost: one keyed call, without a count first; meta.total stays None.

Args: commodity: Upstream commodity_desc, e.g. "CORN", "SOYBEANS", "WHEAT", "COTTON"; list_param_values("commodity_desc") lists them. year: Crop year, e.g. 2023. statistic: ProductionStatistic.PRODUCTION or ProductionStatistic.YIELD. state: Two-letter state code for the state figure, e.g. StateAlpha.IA; None returns the national US TOTAL figure.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "commodity": "<commodity>",
      "year": "<year>",
      "statistic": "<statistic>"
    },
    "name": "usda_nass_get_production"
  }
}

Input Schema

NameRequiredDescriptionDefault
yearYes
stateNo
commodityYes
statisticYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, open-world behavior, so the description's job is to add operational detail; it does, explaining that results arrive as rows distinguished by `util_practice_desc`/`class_desc`/`unit_desc`, the sort order, and that `meta.total` stays `None`. It stops short of covering failure/empty-result behavior or data-availability lag, which keeps it below a 5.

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

Conciseness4/5

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

The scope constraint is front-loaded in sentence one and the alternative tool is named immediately after, which is good structure. The parenthetical field lists (`reference_period_desc`, `domain_desc`, `prodn_practice_desc`, `freq_desc`) are dense but each carries filtering information; some of the row/column jargon could be tightened.

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?

With no output schema, the description takes on explaining the return shape — rows vs. columns, `value` vs. `value_number`, how units and production value (`$`) are distinguished — and it also covers sorting and the `meta.total` quirk. For a 4-parameter read tool this is complete enough to call correctly without further exploration.

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 0%, so the description must carry the burden and largely does: `commodity` gets example values plus a discovery pointer, `year` gets a crop-year example, `statistic` maps to the two upstream categories, and `state` is explained as a two-letter code with `None` returning the national `US TOTAL` figure. Only the exact year-range bounds and enum spelling conventions remain implicit.

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 first sentence gives a specific resource and scope: "The final production or yield of a crop for a year, state or national." It then distinguishes itself from siblings by naming `get_production_forecasts` as the tool for in-season forecasts and by stating that irrigation-type breakdowns are excluded, so an agent can select it without opening the schema.

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?

Explicit when-to-use and when-not-to-use: annual final figures only, breakdowns and forecasts "left out; `get_production_forecasts` serves the latter." It also points to `list_param_values("commodity_desc")` for discovery and states the call cost model ("one keyed call, without a count first"), which is actionable routing guidance.

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