Skip to main content
Glama

usda_nass_get_production_forecasts

Read-onlyIdempotent

Retrieve in-season USDA crop production or yield forecasts by commodity, year, and optional state to track revisions and compare against final annual totals.

Instructions

The in-season production or yield forecasts for a crop and year, oldest first.

The Crop Production reports' forecasts, each row naming its reference_period_desc (YEAR - AUG FORECAST, YEAR - SEP FORECAST, ...), selected with reference_period_desc__LIKE FORECAST; the final figure, YEAR, is get_production's. Annual totals (domain_desc TOTAL, prodn_practice_desc ALL PRODUCTION PRACTICES, freq_desc ANNUAL), so breakdowns by irrigation and the like are left out and the series is comparable with the final figure. 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, SPRING, (EXCL DURUM), SPRING, DURUM), unit_desc the unit (BU, BU / ACRE). value is the figure as published, value_number its parsed form. Sorted by load_time, then utilisation, class and unit. 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 series, e.g. StateAlpha.IA; None returns the national series.

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_forecasts"
  }
}

Input Schema

NameRequiredDescriptionDefault
yearYes
stateNo
commodityYes
statisticYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, the description discloses the exact filter construction (TOTAL, ALL PRODUCTION PRACTICES, ANNUAL), that irrigation-style breakdowns are excluded, the row/column shape of the response, the sort order, and that meta.total stays None with one keyed call. This adds substantial operational context beyond what annotations supply.

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 purpose is front-loaded and the Args block makes the dense prose navigable, but the definition is long and packs many upstream field names into a single paragraph. The density costs some readability even though most sentences carry useful information.

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 no output schema, 0% parameter-description coverage, and four parameters, the description supplies the missing return-shape, filtering, sorting, and cost context an agent needs to call the tool correctly. Nothing essential for invocation appears to be missing.

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

Parameters5/5

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

With 0% schema description coverage, the Args section compensates by defining each parameter: commodity examples plus the list_param_values route, crop-year usage, the ProductionStatistic enum meanings, and that state=None returns the national series. This meaningfully supplements the otherwise bare input schema.

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 opens with a specific verb and resource—'in-season production or yield forecasts for a crop and year'—and explicitly distinguishes this tool from get_production by noting that the final YEAR figure belongs to that sibling. An agent can identify the tool's purpose 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 Guidelines4/5

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

It identifies get_production as the tool for the final annual figure and explains the forecast-specific filter (reference_period_desc LIKE FORECAST), giving clear context for choosing this series. However, it does not explicitly state a when-not-to-use rule or route to other forecast siblings such as acreage forecasts.

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