Skip to main content
Glama

Magpie — USDA Ag Markets: Grain, Fertilizer, WASDE & Export Sales

Server Details

USDA farm data for AI agents: grain, fertilizer, WASDE, export sales. 27 tools, free, no key.

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2024-11-05
URL

TDQS

A4.5/5.0

Scored across 27 tools

Disambiguation5/5

Each tool targets a distinct data source and action (grain/livestock/dairy/fertilizer price vs. history, crop condition/progress/stats, ESR sales, GATS flows, WASDE, spreads). Overlapping pairs are explicitly separated in descriptions, e.g. get_export_sales (contracted) vs get_trade_flows (shipped) vs compare_contracts_vs_shipments (the gap), and latest-vs-history pairs are clearly labelled. The list_* tools are pure discovery helpers and cannot be confused with data tools.

Naming Consistency5/5

Names follow a strong, predictable get_X_price / get_X_history / list_X_products pattern with snake_case throughout, and the verb choice matches the operation type (get, list, compare). The only variance is the noun 'products' vs 'commodities' in the list_* tools, which tracks the underlying domain vocabulary rather than breaking the pattern.

Tool Count4/5

27 tools is slightly heavy but justified: five data domains each need a latest+history pair, plus crop, trade, WASDE, spreads, and comparison tools. The six list_* discovery tools are the most repetitive part and could potentially be consolidated behind a single catalog tool, but each otherwise earns its place.

Completeness4/5

Coverage is broad and near-complete: prices with history for all commodity families, in-season crop condition/progress plus annual stats, contracted sales, actual shipments, the derived backlog, WASDE projections with revision history, and cross-commodity spreads. Minor gaps remain (no time-windowed/date-range queries, no crop-stats history analogue, butter intentionally withheld at the source), but agents have workarounds.

Available Tools

27 tools
compare_contracts_vs_shipmentsA
Read-onlyIdempotent
Inspect

Derived comparison of ESR contracted export sales against GATS actual shipments for one commodity: total contracted, total shipped, and the gap in metric tons — a positive gap means sold but not yet shipped. Use to gauge the unshipped export backlog; use get_export_sales or get_trade_flows instead for the underlying weekly or monthly detail. Read-only; no API key. This is a computed aggregate across both stored datasets over all stored periods, not a USDA-published figure; totals are rounded to whole tons.

NameRequiredDescriptionDefault
partnerNoPartner country code (2-letter ISO/GENC, e.g. MX, CN) or omit for all partners
commodityYesCommodity slug (see list_gats_commodities)

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds real context beyond them: no API key required, the output is a computed aggregate across both stored datasets over all stored periods rather than a USDA-published figure, and totals are rounded to whole tons. These are exactly the provenance and precision caveats an agent needs before quoting a number.

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 with a clean front-to-back ordering: what it computes, when to use it versus alternatives, then provenance and rounding caveats. No sentence is redundant and the sign convention is stated inline where it is needed.

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?

There is no output schema, so the description carries the return-value burden itself, and it does: it enumerates the three returned figures, defines the sign of the gap, and specifies the unit. Combined with the stated derivation and rounding, an agent has everything needed to call and interpret the result correctly.

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 description coverage is 100%, with the partner format (2-letter ISO/GENC) and commodity enum already documented in the schema, so the baseline is 3. The description clarifies the meaning of the "gap" sign convention and the metric-ton unit, but that is output semantics rather than added meaning for the two input parameters.

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?

States a specific comparison operation between two named datasets (ESR contracted export sales vs GATS actual shipments) for one commodity, and spells out exactly what the result contains: total contracted, total shipped, and the gap. It explicitly distinguishes itself from get_export_sales and get_trade_flows, so an agent can route correctly 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?

Gives an explicit use case ("gauge the unshipped export backlog") and names the alternatives with the condition that selects them ("use get_export_sales or get_trade_flows instead for the underlying weekly or monthly detail"). Nothing about when to pick this tool is left to inference.

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

get_crop_conditionA
Read-onlyIdempotent
Inspect

Most recent weekly NASS crop condition ratings for corn, soybeans, or wheat — the share of the crop rated excellent, good, fair, poor, and very poor, plus a combined good+excellent percentage — from USDA NASS QuickStats. Use for current crop health; use get_crop_condition_history instead for week-by-week change across the season, and get_crop_progress for growth-stage pace. Read-only lookup of stored statistics; no API key. Ratings are published weekly in season, but the stored copy refreshes weekly, so the returned period (e.g. 2026-W30) is the freshest stored week, not necessarily the current one.

NameRequiredDescriptionDefault
commodityNoCommodity (CORN, SOYBEANS, WHEAT). Default: CORNCORN
geographyNoUS for national, or state code (IA, IL, etc.); state coverage is the major corn-belt states. Default: USUS

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the description doesn't need to re-state safety. It adds genuinely non-obvious context beyond annotations: no API key is needed, and the stored copy refreshes weekly so the returned `period` is the freshest stored week rather than the current one — a caveat an agent would otherwise get wrong. It stops short of describing the response shape or what happens when a commodity/geography combination has no stored data.

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 core purpose and the alternatives are front-loaded, and the caveat about the stale `period` is placed last where it belongs. It is a dense single paragraph; the rating-bucket enumeration is slightly redundant with the purpose statement and could be tightened, but no sentence is wasted.

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 two-parameter read-only lookup with full schema coverage and existing annotations, the description covers everything an agent needs: what it returns, when to prefer siblings, the no-auth detail, and the freshness caveat. No output schema exists, yet the enumerated rating fields effectively communicate the return payload.

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%, so the baseline would be 3. The description earns an extra point by clarifying the geography domain beyond the schema: state coverage is limited to the major corn-belt states, which the schema's 'IA, IL, etc.' only implies. It does not add enum constraints or format detail for commodity beyond restating the three options.

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?

States a specific verb and resource: most recent weekly NASS crop condition ratings, enumerating the exact rating buckets and the combined good+excellent percentage returned. It explicitly contrasts itself against get_crop_condition_history and get_crop_progress, so an agent can select it without opening either 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?

Gives explicit when-to-use ('current crop health') and names two alternatives with the conditions that select them ('week-by-week change across the season', 'growth-stage pace'). There is no inference required to route between these three tools.

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

get_crop_condition_historyA
Read-onlyIdempotent
Inspect

Week-by-week NASS crop condition ratings for corn, soybeans, or wheat across the growing season — each week's excellent/good/fair/poor/very poor shares plus a combined good+excellent percentage — from USDA NASS QuickStats. Use to track crop health trends or compare weeks within the season; use get_crop_condition instead when only the latest week matters. Read-only lookup of stored statistics; no API key. Returns up to weeks most recent stored weeks, oldest first (default 12, max 52); coverage is the current season, national plus major corn-belt states, and the stored copy refreshes weekly.

NameRequiredDescriptionDefault
weeksNoNumber of most recent weeks to return (default 12, max 52)
commodityNoCommodity (CORN, SOYBEANS, WHEAT). Default: CORNCORN
geographyNoUS for national, or state code (IA, IL, etc.); state coverage is the major corn-belt states. Default: USUS

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, but the description adds value beyond them: no API key required, a stored copy that refreshes weekly, and a coverage boundary (current season, national plus major corn-belt states). It stops short of describing failure modes or what happens when `weeks` exceeds available history.

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?

Front-loaded with the resource and metric set, then routing, then behavior — a logical order with no filler. The long em-dash-laden opening sentence is dense but every clause carries 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?

There is no output schema, yet the description enumerates the returned fields (excellent/good/fair/poor/very poor shares plus good+excellent) and the ordering and window limits, so an agent knows what it gets back. Nothing needed to invoke or interpret the call is missing.

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%, so baseline is 3; the description nonetheless adds meaning the schema lacks — result ordering ('oldest first') and the geographic constraint implied by the state code parameter. It does not clarify edge cases such as requesting 52 weeks early in the season.

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?

States a specific verb and resource ('week-by-week NASS crop condition ratings') with the exact metric set returned and the source (USDA NASS QuickStats). It explicitly distinguishes itself from the sibling get_crop_condition, so an agent can pick between them without opening either 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?

Gives an affirmative use case ('track crop health trends or compare weeks within the season') and a negative one with the named alternative ('use get_crop_condition instead when only the latest week matters'). This is explicit when/when-not/alternative routing.

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

get_crop_progressA
Read-onlyIdempotent
Inspect

Most recent weekly NASS crop progress for corn, soybeans, or wheat — the share of the crop at each growth stage (planted, emerged, silking, harvested, and similar; the stages present vary by commodity) — from USDA NASS QuickStats. Use for current season pace; use get_crop_progress_history instead for week-by-week pace across the season, and get_crop_condition for health ratings. Read-only lookup of stored statistics; no API key. Progress is published weekly in season, but the stored copy refreshes weekly; the returned period (e.g. 2026-W30) is the freshest stored week.

NameRequiredDescriptionDefault
commodityNoCommodity (CORN, SOYBEANS, WHEAT). Default: CORNCORN
geographyNoUS for national, or state code (IA, IL, etc.); state coverage is the major corn-belt states. Default: USUS

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description still adds real context beyond them: no API key required, weekly publication cadence in season, the stored copy refreshing weekly, and the meaning of the returned `period` value as the freshest stored week. The freshness caveat is exactly the kind of operational detail annotations cannot convey.

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?

Front-loaded with the core capability before routing and freshness caveats, and no sentence is pure filler. However, the em-dash parenthetical chain makes it denser than necessary for a two-parameter tool.

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 steps in to describe the return shape (share of crop at each growth stage, stages varying by commodity) and the meaning of the `period` field. Combined with the freshness and no-key notes, an agent has everything needed to call and interpret it.

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%, with both `commodity` and `geography` documented including defaults and the state-code form, so the schema carries parameter meaning. The description restates the three commodities but adds no format or scope detail beyond the schema's state-coverage note. Baseline 3 applies when the schema does the heavy lifting.

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?

States a specific verb+resource (most recent weekly NASS crop progress) and enumerates the actual payload (share of crop at each growth stage), noting stages vary by commodity. It also explicitly names what it is not (get_crop_progress_history, get_crop_condition), so an agent can separate it from siblings without opening schemas.

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?

Gives an explicit selection rule: 'Use for current season pace; use get_crop_progress_history instead for week-by-week pace across the season, and get_crop_condition for health ratings.' That is when-to-use plus named alternatives and the condition that selects each.

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

get_crop_progress_historyA
Read-onlyIdempotent
Inspect

Week-by-week NASS crop progress for corn, soybeans, or wheat across the growing season — each week's share of the crop at each growth stage (planted, emerged, silking, harvested, and similar) — from USDA NASS QuickStats. Use to track season pace or compare against earlier weeks; use get_crop_progress instead when only the latest week matters. Read-only lookup of stored statistics; no API key. Returns up to weeks most recent stored weeks, oldest first (default 12, max 52); the stages present vary by commodity and point in the season. Coverage is the current season, national plus major corn-belt states, and the stored copy refreshes weekly.

NameRequiredDescriptionDefault
weeksNoNumber of most recent weeks to return (default 12, max 52)
commodityNoCommodity (CORN, SOYBEANS, WHEAT). Default: CORNCORN
geographyNoUS for national, or state code (IA, IL, etc.); state coverage is the major corn-belt states. Default: USUS

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered; the description adds real behavioral context beyond that — 'no API key,' default and max week counts, oldest-first ordering, stage variability by commodity, and weekly refresh cadence. It stops short of describing error or empty-result behavior, so not 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?

Two sentences plus a coverage note, front-loaded with the core purpose, with no filler. Slightly dense with em-dash clauses but every phrase (stages list, default/max, coverage scope) carries decision-relevant information.

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?

With no output schema, the description compensates by explaining return shape (oldest-first weeks, stage variability) and coverage limits. Minor gaps remain around what happens for out-of-season or unsupported state requests, but it is sufficient to call the tool 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 coverage is 100%, so baseline is 3, but the description adds meaning the schema lacks: the ordering of returned weeks (oldest first), which commodities/states are actually supported for coverage, and that the stage set varies. It reinforces `weeks` semantics rather than merely repeating them.

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 names a concrete verb and resource ('Week-by-week NASS crop progress'), enumerates what each data point contains (share at each growth stage), and states the source. It is clearly distinguishable from sibling get_crop_progress by the explicit weekly-history framing.

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?

It gives a positive use case ('track season pace or compare against earlier weeks') and an explicit exclusion routing to the alternative: 'use get_crop_progress instead when only the latest week matters.' That is exactly the when/when-not/alternatives structure the rubric rewards.

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

get_crop_statsA
Read-onlyIdempotent
Inspect

Annual NASS survey statistics — yield, production, planted or harvested area — for a commodity at national or state level, from USDA NASS QuickStats. These are survey estimates, not market prices. Use for production fundamentals; use get_crop_condition or get_crop_progress instead for in-season weekly crop status. Read-only lookup of stored statistics; no API key. Returns every stored period (year) for the requested statistic, most recent first; the stored copy refreshes weekly. Commodity, statistic, and geography are case-insensitive and default to CORN, YIELD, and US.

NameRequiredDescriptionDefault
statNoStatistic type (YIELD, PRODUCTION, AREA PLANTED, AREA HARVESTED). Default: YIELDYIELD
commodityNoCommodity (CORN, SOYBEANS, WHEAT, COTTON, SORGHUM, OATS, BARLEY, RICE). Default: CORNCORN
geographyNoUS for national, or state code (IA, IL, etc.). Default: USUS

TDQS

A4.7/5.0
Behavior4/5

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

Adds genuine context beyond the annotations: return ordering ('most recent first'), the fact that every stored year is returned, the weekly refresh cadence of the stored copy, and that no API key is needed. 'Read-only lookup' partially restates readOnlyHint, which is the only reason this falls short of 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.

Conciseness5/5

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

Five sentences with no filler, front-loaded with what the tool returns, followed by the sibling routing, then the return shape and input behavior. Every sentence adds information an agent would otherwise have to guess.

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?

There is no output schema, and the description compensates by stating exactly what comes back (all stored periods for the requested statistic, most recent first) and how fresh it is. Combined with the clarified input defaults and case-insensitivity, an agent has everything needed to call it 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 coverage is 100% and documents defaults and allowed values, so the baseline is 3. The description adds that commodity, statistic, and geography are case-insensitive — useful behavior not captured in the schema — though the default values it restates are already in the 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?

States a specific verb-free but precise resource: annual NASS survey statistics (yield, production, planted/harvested area) for a commodity at national or state level, sourced from USDA NASS QuickStats. It explicitly separates itself from market prices and from the in-season sibling tools, so an agent can identify 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?

Names both the positive case ('Use for production fundamentals') and the alternatives with their selection condition ('use get_crop_condition or get_crop_progress instead for in-season weekly crop status'). Nothing about when to prefer it is left to inference.

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

get_dairy_historyA
Read-onlyIdempotent
Inspect

Weekly price history for one dairy product, from the same USDA MARS weekly dairy reports behind get_dairy_price. Use for trends across report weeks; use get_dairy_price instead when only the latest quote matters. Read-only lookup of stored reports; no API key. Returns up to periods most recent report rows, oldest first (default 30, max 365); geography defaults to US-Central and cheese defaults to geography 'Oceania'. Butter returns a withheld notice — USDA publishes only price differentials for butter, no US base price.

NameRequiredDescriptionDefault
periodsNoNumber of most recent report rows to return (default 30, max 365)
productYesDairy product (cheese, butter, dry_whey, fluid_milk). Butter prices are withheld — see description
geographyNoReport region (US-Central, US-East, US-West; cheese uses US). Default: US-CentralUS-Central

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/closed-world, but the description adds real context: no API key required, rows are returned oldest first up to `periods`, and butter intentionally returns a withheld notice because USDA publishes only differentials. Minor inconsistency: it says cheese defaults to geography 'Oceania' while the schema says cheese uses US, which could confuse an agent.

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?

Front-loaded with purpose and sibling routing, then defaults and the butter edge case. Every sentence carries information, though the cheese/geography clause is confusing enough that it doesn't fully earn its place.

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?

With no output schema, the description does the work of describing the returned rows (up to `periods`, oldest first) and the withheld-case behavior, plus defaults for all three params. Row fields aren't named, but the essentials for correct invocation are present.

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% so the parameter fields are already documented; the description still adds value by explaining ordering semantics (oldest first) for `periods` and by flagging the butter product as a special case that returns no base price. The conflicting cheese/geography claim slightly undercuts it.

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?

States a specific verb+resource (weekly price history for one dairy product) and anchors the data source to the USDA MARS reports behind get_dairy_price. The distinction from the sibling price tool is made explicit, so an agent can choose 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?

Gives explicit when-to-use (trends across report weeks) and names the alternative with its condition (get_dairy_price when only the latest quote matters). This is exactly the routing guidance needed in a family of sibling tools.

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

get_dairy_priceA
Read-onlyIdempotent
Inspect

Latest price for one dairy product, from USDA MARS weekly dairy reports — the same series get_dairy_history extends over time. Use for a current quote; use get_dairy_history instead for the weekly trend. Read-only lookup of stored reports; no API key. Geography defaults to US-Central (cheese is Oceania cheddar and defaults to geography 'Oceania'). Butter is deliberately withheld: USDA publishes only price differentials for butter, no US base price, so butter returns a withheld notice instead of a misleading value.

NameRequiredDescriptionDefault
productYesDairy product (cheese, butter, dry_whey, fluid_milk). Butter prices are withheld — see description
geographyNoReport region (US-Central, US-East, US-West; cheese uses US). Default: US-CentralUS-Central

TDQS

A4.7/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, idempotent, closed-world), and the description adds real operational context beyond them: no API key required, reports are stored/read-only, geography has an implicit default, and butter is deliberately withheld with the reason (USDA publishes only differentials). The butter caveat is exactly the kind of non-obvious behavior an agent cannot infer from structured fields.

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?

Front-loaded with what the tool returns, then routing, then caveats — a sensible order. Four dense sentences with little waste, though "no API key" and the repeated butter note (echoed in the schema) could be trimmed.

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?

With no output schema, the description does the heavy lifting: it signals that butter returns a withheld notice rather than a number, and that other products return a current quote. It omits units/currency for the returned price, which matters for a commodity-price tool and is the main remaining gap.

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%, so the baseline is 3, but the description adds genuine semantics the schema lacks — that cheese maps to Oceania cheddar and therefore defaults to geography 'Oceania'. That nuance is decision-relevant. It stops short of 5 because it does not clarify the tension with the schema's claim that "cheese uses US" / default US-Central, nor state units or currency.

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?

States a specific verb and resource ("latest price for one dairy product") plus the authoritative source ("USDA MARS weekly dairy reports"). It also names the sibling get_dairy_history as the time-extended variant, so the agent can distinguish the two without opening either 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?

Gives an explicit routing rule: "Use for a current quote; use get_dairy_history instead for the weekly trend." When-to-use, when-not, and the alternative are all spelled out.

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

get_export_salesA
Read-onlyIdempotent
Inspect

Latest week of USDA export sales for one commodity from the FAS Export Sales Reporting (ESR) system — sales contracted by exporters, not yet necessarily shipped. Use for current foreign demand; use get_export_sales_history instead for the weekly trend, and get_trade_flows for actual shipped volumes. Read-only lookup of stored reports; no API key. ESR reports weekly (released Thursdays); returns the most recent stored week's weekly exports, outstanding sales, net sales for the current marketing year, and total commitments per destination country, each row with its reported unit. Omit country to include all destinations.

NameRequiredDescriptionDefault
countryNoGENC country code (e.g. CHN, MEX) or omit for all destinations
commodityYesCommodity slug (see list_esr_commodities)

TDQS

A4.5/5.0
Behavior4/5

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

Beyond the annotations (which already declare read-only, idempotent, closed-world), the description discloses data semantics that matter: sales are contracted by exporters, not necessarily shipped; the source updates weekly on Thursdays; only the most recent stored week is returned; no API key is needed. It stops short of describing behavior for edge cases (e.g., a commodity with no recent report), 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.

Conciseness5/5

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

Each of the four sentences does distinct work: purpose, disambiguation, data semantics, and parameter default. Purpose is front-loaded and the alternative tools are named immediately after.

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 2-parameter read tool with no output schema, the description covers what the rows contain (weekly exports, outstanding sales, net sales, total commitments per destination, with units), the refresh cadence, and the default for the optional parameter. Nothing an agent needs in order to call it 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%, so the parameter meanings are already fully documented. The description restates the 'omit country for all destinations' behavior, adding marginal value but no format or syntax detail beyond the 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?

States a specific verb (return latest week), resource (USDA/FAS ESR export sales), and scope (one commodity) in the first clause. It also explicitly names two sibling tools it is not, so an agent can route between them without opening schemas.

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?

Gives an explicit when-to-use (current foreign demand), plus named alternatives with the conditions that select them: get_export_sales_history for the weekly trend and get_trade_flows for shipped volumes. That is the strongest form of routing guidance.

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

get_export_sales_historyA
Read-onlyIdempotent
Inspect

Weekly export sales time series for one commodity, and optionally one destination country, from the same FAS ESR weekly reports behind get_export_sales. Use for demand trends across weeks; use get_export_sales instead when only the latest week matters, and compare_contracts_vs_shipments to set contracted sales against actual shipments. Read-only lookup of stored reports; no API key. Returns up to weeks most recent weeks, oldest first (default 12, max 52); without a country, each week covers all destinations combined as stored.

NameRequiredDescriptionDefault
weeksNoNumber of most recent weeks to return (default 12, max 52)
countryNoGENC country code (e.g. CHN, MEX) or omit for all destinations
commodityYesCommodity slug (see list_esr_commodities)

TDQS

A4.7/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, closed-world behavior, but the description adds useful context: stored FAS ESR reports, no API key, and return ordering from oldest to newest. It also explains default and maximum week counts. It does not cover error behavior, but that is a minor gap given the 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?

The description is front-loaded with the core purpose and then moves efficiently through alternatives, read-only behavior, and return shape. Every sentence contributes useful routing or behavioral information, with no wasted framing.

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 still explains the return shape: weekly time series, scoped to commodity and optional country, with a configurable number of most recent weeks and oldest-first ordering. It also covers source, safety, and sibling alternatives, leaving no major decision gap for calling the tool.

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%, so the baseline is 3, but the description adds meaning beyond the schema: without a country, each week aggregates all destinations as stored, and results are the most recent weeks returned oldest first. This clarifies the aggregation semantics that the country parameter controls.

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 states a specific verb and resource: weekly export sales time series for one commodity and optionally one destination country. It explicitly distinguishes the tool from get_export_sales and compare_contracts_vs_shipments, so an agent can route correctly without opening schemas.

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?

It gives explicit when-to-use guidance: demand trends across weeks. It also names alternatives and their selecting conditions: use get_export_sales when only the latest week matters, and compare_contracts_vs_shipments to compare contracted sales with actual shipments.

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

get_fertilizer_historyA
Read-onlyIdempotent
Inspect

Price history for one fertilizer product across report periods, from the same twice-monthly USDA MARS production cost reports behind get_fertilizer_price. Use for input-cost trends; use get_fertilizer_price instead when only the latest quote matters. Read-only lookup of stored reports; no API key. Returns up to periods most recent reports, oldest first (default 12, max 52 — roughly two years of twice-monthly reports).

NameRequiredDescriptionDefault
periodsNoNumber of most recent report periods to return (default 12, max 52)
productYesProduct slug (e.g. anhydrous_ammonia, urea, dap)

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is covered. The description adds genuinely new context: provenance (twice-monthly USDA MARS production cost reports), 'no API key', and result ordering ('oldest first'), which the annotations do not convey. Rate limits or per-report field detail are absent, keeping it short of 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.

Conciseness5/5

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

Three sentences ordered purpose → usage/alternative → behavior, each carrying distinct information. No filler, and the purpose is front-loaded.

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?

With no output schema, the description still tells the agent what comes back (a sequence of report periods, oldest first, bounded by `periods`) and where the data originates. It stops short of describing the per-report fields, which is the main remaining unknown for a history tool.

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%, so the baseline is 3; the description nonetheless adds meaning the schema lacks, notably the 'oldest first' ordering of the returned periods and the 'roughly two years' framing of max 52. It repeats default/max from the schema rather than extending it further.

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?

States a specific verb and resource ('Price history for one fertilizer product across report periods') and immediately identifies the data source. It explicitly distinguishes itself from the sibling get_fertilizer_price, so an agent can route correctly without opening either 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?

Gives both directions explicitly: 'Use for input-cost trends' and 'use get_fertilizer_price instead when only the latest quote matters.' The alternative and the condition that selects it are named, leaving nothing to inference.

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

get_fertilizer_priceA
Read-onlyIdempotent
Inspect

Latest price for one fertilizer product from USDA MARS production cost reports (Illinois-led regional coverage) — the same series get_fertilizer_history extends over time. Use for a current input-cost quote; use get_spreads instead to relate fertilizer cost to corn or cattle prices. Read-only lookup of stored reports; no API key. The reports publish twice a month and are fetched on the 1st and 15th, so the latest price can be up to about two weeks old; returns the price, its unit (typically USD per ton), and the change versus the prior report.

NameRequiredDescriptionDefault
productYesProduct slug (e.g. anhydrous_ammonia, urea, dap)

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description still adds meaningful context beyond them: no API key required, reports publish twice monthly and are fetched on the 1st/15th, so data can be roughly two weeks stale. The staleness disclosure is exactly the kind of trait an agent needs and cannot infer from annotations.

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?

Purpose and source are front-loaded, and every sentence carries distinct information (alternatives, auth, refresh cadence, return shape). It is somewhat dense with parenthetical detail, but no sentence is filler.

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?

No output schema exists, but the description compensates by naming the return components (price, unit typically USD per ton, change vs prior report) alongside freshness expectations. An agent has everything needed to call and interpret this single-parameter lookup.

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% with a single enumerated product slug, so the schema fully documents the parameter. The description adds no per-parameter syntax or format guidance beyond the schema, which is the expected baseline here.

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?

States a specific verb+resource ('Latest price for one fertilizer product') with source (USDA MARS production cost reports) and scope (Illinois-led regional coverage). It explicitly distinguishes itself from get_fertilizer_history (time-series extension) and get_spreads (cost-relation view), so an agent can route without opening schemas.

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?

Gives a direct when-to-use ('current input-cost quote') and names the alternative for a different need ('use get_spreads instead to relate fertilizer cost to corn or cattle prices'). Both the selection condition and the exclusion are explicit.

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

get_grain_historyA
Read-onlyIdempotent
Inspect

Daily cash price history for one grain commodity in one state, from the same USDA MARS daily reports behind get_grain_price. Use for trends or day-over-day comparison; use get_grain_price instead when only the latest quote matters. Read-only lookup of stored reports; no API key. Returns up to periods most recent daily report rows, oldest first; periods counts report rows, not calendar days (default 30, max 365).

NameRequiredDescriptionDefault
periodsNoNumber of most recent report rows to return (default 30, max 365)
productYesGrain slug (e.g. corn, soybeans, wheat)
geographyNoState/region code from a tracked MARS report (e.g. IL, IA, TX, PNW, GULF). Default: ILIL

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already cover the safety profile (read-only, idempotent, non-destructive, closed-world), yet the description still adds real context: the upstream source (USDA MARS daily reports), that no API key is needed, oldest-first ordering, and the row-vs-calendar-day caveat. It stops short of describing row contents or behavior at empty results, which keeps it below 5.

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?

Four tight sentences, front-loaded with purpose then the sibling alternative then the return semantics. No sentence is filler; the periods caveat is placed where the agent will read it before calling.

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?

With no output schema, the description carries the return burden and does it adequately: up to periods rows, most recent first collected but returned oldest first, default 30 cap 365. Missing only the shape of an individual row (price field, date field), a minor gap for a history lookup.

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%, so baseline 3 applies, but the description adds meaning beyond the schema: periods counts report rows rather than calendar days, results are ordered oldest first, and scope is limited to one commodity and one state. This is a genuine clarification of an easily-misread parameter.

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?

States a specific verb and resource: daily cash price history for one grain commodity in one state, sourced from the same USDA MARS reports as get_grain_price. An agent can distinguish it from the latest-quote sibling without opening either 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 routing: 'Use for trends or day-over-day comparison; use get_grain_price instead when only the latest quote matters.' Both the when and the alternative are named with the selecting condition.

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

get_grain_priceA
Read-onlyIdempotent
Inspect

Latest cash grain price for one commodity in one state, from USDA MARS daily market reports — the same series get_grain_history extends over time. Use for a current quote; use get_grain_history instead for trends across days. Read-only lookup of stored reports; no API key. Returns the most recent report's price with its unit (USD per bushel in most markets) and market location; a commodity/state pair with no report returns a no-data error rather than a stale price.

NameRequiredDescriptionDefault
productYesGrain slug (e.g. corn, soybeans, wheat)
geographyNoState/region code from a tracked MARS report (e.g. IL, IA, TX, PNW, GULF). Default: ILIL

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds valuable context beyond that: no API key needed, the no-data error behavior instead of returning a stale price, and what the return includes (unit and market location). It stops short of describing report freshness windows or rate behavior, but for a stored-report lookup this is strong.

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?

Front-loads purpose and sibling differentiation, then layers behavioral detail. Five sentences are dense but each earns its place except for mild redundancy around the current-quote vs history distinction, which is stated twice.

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?

Even without an output schema, the description covers the return shape (most recent price, unit, market location) and the failure mode (no-data error rather than stale price). Combined with annotations and full schema coverage, an agent has everything needed to call it correctly.

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 description coverage is 100%, with both parameters documented and an enum for product, so the schema carries the parameter burden. The description reinforces that the pair is commodity/state and that geography must come from a tracked MARS report, but adds no syntax or format detail beyond the schema. Baseline 3 is appropriate.

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?

States a specific verb and resource (latest cash grain price for one commodity in one state) and names the data source (USDA MARS daily market reports). It explicitly distinguishes itself from get_grain_history by describing the sibling as the same series extended over time.

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?

Gives explicit when-to-use guidance ('Use for a current quote') and names the alternative with its selecting condition ('use get_grain_history instead for trends across days'). The current-quote vs trend distinction is exactly what an agent needs to choose between the two.

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

get_livestock_historyA
Read-onlyIdempotent
Inspect

Price history for one livestock category in one region, from the same USDA MARS reports behind get_livestock_price (daily direct-trade reports plus weekly auction summaries). Use for trends; use get_livestock_price instead when only the latest quote matters. Read-only lookup of stored reports; no API key. Returns up to periods most recent report rows, oldest first; periods counts report rows, not calendar days (default 30, max 365).

NameRequiredDescriptionDefault
periodsNoNumber of most recent report rows to return (default 30, max 365)
productYesLivestock slug (e.g. fed_cattle, feeder_cattle, hogs)
geographyNoRegion or state code (e.g. IA, ECB, KS). Default: IAIA

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description still adds real context: no API key required, the underlying USDA MARS report types, and the ordering guarantee ('oldest first'). That is genuine added value beyond the 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?

Four sentences, all front-loaded and zero waste: purpose, sibling routing, access model, return semantics. Each sentence carries a distinct piece of information the agent needs.

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?

With no output schema, the description carries the return-value burden and does explain row count, default/max, and ordering. It leaves the per-row fields (e.g. what price columns a report row contains) unstated, a small but real gap for an agent parsing the response.

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%, so the baseline is 3. The description goes beyond the schema by clarifying that `periods` counts report rows rather than calendar days and by specifying the sort order, which materially changes how an agent should interpret results.

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?

States a specific resource (price history for one livestock category in one region) and names its data source, and explicitly distinguishes itself from get_livestock_price by framing itself as the trends tool. An agent can tell the two apart without opening either 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?

Gives an explicit when-to-use ('Use for trends') and a named alternative with the exact condition that selects it ('use get_livestock_price instead when only the latest quote matters'). Nothing is left to inference.

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

get_livestock_priceA
Read-onlyIdempotent
Inspect

Latest price for one livestock category in one region, from USDA MARS direct-trade and auction reports — the same series get_livestock_history extends over time. Use for a current quote; use get_livestock_history instead for trends. Read-only lookup of stored reports; no API key. Returns the most recent report's price and its unit (typically USD per cwt); direct-trade reports can skip weeks when no trades occur, and a category/region pair with no report returns a no-data error rather than a stale price.

NameRequiredDescriptionDefault
productYesLivestock slug (e.g. fed_cattle, feeder_cattle, hogs)
geographyNoRegion or state code (e.g. IA for Iowa direct trade, ECB for Eastern Cornbelt, or a state auction code). Default: IAIA

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing that no API key is needed, that direct-trade reports may skip weeks without trades, and that a missing category/region pair returns a no-data error rather than a stale price. These are meaningful behavioral details for correct interpretation and error handling.

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 and sibling routing are front-loaded, and the paragraph is information-dense rather than padded. It is slightly long and repeats read-only safety context already covered by annotations, but every sentence contributes operational value.

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?

Because no output schema exists, the description steps in to explain the return value (most recent report's price and unit, typically USD per cwt), error behavior for missing data, and reporting gaps. Together with the annotations, an agent has everything needed to call and interpret the tool.

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 description coverage is 100%, so both parameters are already documented, including the product enum and geography default. The description adds only light framing ('one livestock category in one region') without expanding on slug choices or region code formats beyond what the schema provides.

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?

States a specific verb and resource ('Latest price for one livestock category in one region'), names the data source (USDA MARS direct-trade and auction reports), and explicitly distinguishes itself from get_livestock_history as the trend-oriented sibling. An agent can identify the exact operation 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?

Gives explicit routing guidance: 'Use for a current quote; use get_livestock_history instead for trends.' This directly states when to select this tool and when to select the alternative, leaving no ambiguity.

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

get_spreadsA
Read-onlyIdempotent
Inspect

Derived input-to-output price spreads computed from the latest stored Magpie prices: corn-to-nitrogen cost broken down per fertilizer product (bushels of corn per ton of product and per pound of actual N), the soybean-to-corn price ratio, and the feeder-to-fed cattle spread. Use for planting and feeding economics; use the raw price tools (get_grain_price, get_fertilizer_price, get_livestock_price) instead for the quotes behind a spread. Read-only; no API key. These are Magpie calculations over stored USDA MARS prices, not USDA-published figures; a spread is omitted when either side has no stored price. Geography defaults to IL and applies to both sides of each spread.

NameRequiredDescriptionDefault
geographyNoState/region code used for both sides of the spreads (e.g. IL, IA). Default: ILIL

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already cover read-only/idempotent safety, but the description goes well beyond them: no API key required, data provenance (Magpie calculations over stored USDA MARS prices, not official USDA figures), and the omission rule when either side lacks a stored price. The provenance caveat is material for an agent reporting these numbers as facts.

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?

Definition is front-loaded in the first sentence, followed by routing, then provenance and edge-case behavior. Dense but every clause carries information; nothing is filler.

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 must describe return content and does so by enumerating each spread and its units. Combined with the omission rule and provenance note, an agent can call and correctly interpret this tool without further context.

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% and the single parameter already documents the default IL and its dual application. The description restates that geography applies to both sides of each spread, which reinforces interpretation but adds little the schema does not already say, so the baseline 3 fits.

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?

Names a specific derived resource and enumerates its three outputs (corn-to-nitrogen cost per product and per pound of N, soybean-to-corn ratio, feeder-to-fed spread), so an agent knows exactly what comes back. It also explicitly separates itself from the raw quote tools, which is the main confusion risk among these siblings.

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?

States the use case ('planting and feeding economics') and names the exact alternative tools (get_grain_price, get_fertilizer_price, get_livestock_price) with the condition that selects them (you want the quotes behind a spread). When-to-use and when-not-to-use are both explicit.

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

get_trade_flowsA
Read-onlyIdempotent
Inspect

Monthly US agricultural export shipments by destination, from USDA GATS (Census trade data) — quantities and values actually shipped, not sales contracted. Use for realized trade volumes; use get_export_sales instead for contracted-but-unshipped demand, and compare_contracts_vs_shipments for the sold-versus-shipped gap. Read-only lookup of stored Census data; no API key. Coverage is a rolling 24 months, refreshed monthly; quantities are in metric tons with values in USD. Some commodities are withheld when GATS unit inconsistencies fail a dollars-per-ton sanity check — a withheld result says so explicitly instead of returning bad numbers.

NameRequiredDescriptionDefault
monthsNoNumber of months of flows to return (default 12, max 24)
partnerNoPartner country code (2-letter ISO/GENC, e.g. MX, CN) or omit for all partners
commodityYesCommodity slug (see list_gats_commodities)

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover read-only/idempotent/no destruction, yet the description adds substantive context: no API key required, a rolling 24-month coverage window refreshed monthly, metric-ton/USD units, and — most importantly — that commodities failing a dollars-per-ton sanity check are withheld with an explicit signal rather than returning bad numbers. That withholding behavior is a non-obvious trait an agent could not infer from structured fields.

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?

Purpose and sibling routing are front-loaded, and the data-quality caveat is well placed at the end. Minor redundancy: 'Read-only lookup ... no API key' partly restates the readOnlyHint annotation, though the no-key detail is genuinely new.

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?

No output schema exists, and the description compensates by specifying units, coverage window, refresh cadence, source system, and the withheld-data edge case. An agent has everything needed to call it and interpret results without a return-schema.

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%, so the baseline is 3; the description adds meaning by explaining the rolling 24-month coverage window (which explains the max-24 constraint on 'months') and by specifying metric tons and USD for the returned quantities and values. It does not elaborate on the partner code format beyond what the schema already states.

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?

States a specific verb+resource ('Monthly US agricultural export shipments by destination') with source attribution (USDA GATS/Census) and a precise scope distinction: quantities actually shipped, not sales contracted. It explicitly names the siblings get_export_sales and compare_contracts_vs_shipments, letting an agent disambiguate without opening a 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?

Gives an explicit when-to-use ('realized trade volumes') and when-to-use-alternatives with the selecting condition ('contracted-but-unshipped demand' → get_export_sales; 'sold-versus-shipped gap' → compare_contracts_vs_shipments). No inference is required to route correctly.

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

get_wasde_historyA
Read-onlyIdempotent
Inspect

Revision history of one WASDE projection figure (default ending_stocks) across monthly reports — how the estimate for a commodity and marketing year moved as successive WASDE reports landed. Use to study estimate revisions; use get_wasde_projection instead for the full current balance sheet. Read-only lookup of stored projections; no API key. Returns up to 24 monthly report values, oldest first, each with its report date and unit, for the requested commodity, attribute, and country (default WORLD).

NameRequiredDescriptionDefault
countryNoCountry code (WORLD, US, BR, AR). Default: WORLD aggregateWORLD
attributeNoProjection attribute (beginning_stocks, production, imports, exports, domestic_consumption, ending_stocks)ending_stocks
commodityYesCommodity slug (e.g. corn, wheat, soybeans)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds genuinely new traits: no API key required, results capped at 24 monthly values, oldest-first ordering, and per-value report date and unit. It does not cover pagination limits or behavior when a commodity/attribute combination has no stored history, which keeps it off 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?

Three sentences, front-loaded with the core purpose and followed by the routing hint and return shape. The final clause listing 'commodity, attribute, and country (default WORLD)' partly repeats the schema, which is minor waste but not harmful.

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 and only three parameters, the description covers everything an agent needs: scope, defaults, ordering, result cap, and what each returned value contains. Nothing essential is missing for correct invocation.

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% and both enums are fully documented, so the schema already does the heavy lifting. The description restates the defaults (ending_stocks, WORLD) that already appear in the schema's default fields, adding no syntax or format detail beyond it. Baseline 3 is appropriate.

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?

States a specific verb and resource — the revision history of one WASDE projection figure across monthly reports — and explicitly contrasts with the sibling get_wasde_projection. An agent can identify both what it returns and what it is not 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?

Gives direct usage context ('use to study estimate revisions') and names the alternative tool plus the condition that selects it ('use get_wasde_projection instead for the full current balance sheet'). The routing decision is fully determined.

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

get_wasde_projectionA
Read-onlyIdempotent
Inspect

Latest USDA WASDE supply/demand projections for one commodity — beginning stocks, production, imports, exports, domestic consumption, and ending stocks — from the FAS PSD database behind the monthly WASDE report. Use for the current balance-sheet outlook; use get_wasde_history instead to see how a single figure has been revised across reports. Read-only lookup of stored projections; no API key. Returns the newest stored report's values for the requested marketing year (default: the current marketing year, where e.g. 2026 means the 2025/26 season) and country (default WORLD aggregate; US, BR, and AR are also tracked).

NameRequiredDescriptionDefault
countryNoCountry code (WORLD, US, BR, AR). Default: WORLD aggregateWORLD
commodityYesCommodity slug (e.g. corn, wheat, soybeans, rice, cotton)
market_yearNoMarketing year (e.g. 2026 = 2025/26 season). Default: current marketing year

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the bar is lower; the description still adds value by noting it is a read-only lookup of stored data, needs no API key, and returns the newest stored report's values (a freshness/recency behavior not encoded in annotations). It stops short of describing pagination or failure modes, but the essential behavioral profile is covered.

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?

Front-loaded with the resource and purpose, then the when/when-not routing in the second sentence, then data defaults. Roughly 80 words with no filler; every clause carries 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?

No output schema exists, yet the description enumerates the returned balance-sheet components (beginning stocks, production, imports, exports, domestic consumption, ending stocks) and the scoping defaults, so an agent knows what it will receive. Annotations cover the safety profile; nothing material is missing for correct invocation.

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%, so baseline is 3; the description goes slightly beyond by clarifying that WORLD is an aggregate, that US/BR/AR are the other tracked countries (data coverage, not just param names), and by restating the marketing-year convention (2026 = 2025/26) and defaulting behavior in prose.

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?

States a specific verb+resource (latest USDA WASDE supply/demand projections for one commodity) and enumerates the balance-sheet fields returned, plus the underlying source (FAS PSD behind the monthly WASDE report). Explicitly contrasts with sibling get_wasde_history, so an agent can route correctly without opening either 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?

Gives an explicit when-to-use ('current balance-sheet outlook') and names the alternative with the condition that selects it ('use get_wasde_history instead to see how a single figure has been revised across reports'). No inferences required.

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

list_dairy_productsA
Read-onlyIdempotent
Inspect

Lists the dairy product slugs this API tracks (cheese, butter, dry_whey, fluid_milk) with display labels. Use to discover valid product values before calling get_dairy_price or get_dairy_history. Read-only; no API key. Butter is listed for completeness but its price is withheld in the price tools — USDA reports no US base price for butter.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful context beyond that: 'no API key' and the caveat that butter is listed for completeness but its price is withheld in price tools because USDA reports no US base price. This is meaningful behavioral context for an agent planning downstream calls.

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 tight sentences with zero waste. The core purpose and downstream usage are front-loaded, followed by the butter caveat.

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 zero-parameter discovery tool with no output schema, the description is complete: it explains what is returned (slugs plus display labels), why to call it, and the butter exception. Nothing an agent needs in order to call it correctly is missing.

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?

The tool takes zero parameters, so the baseline is 4. The description does not need to explain parameter semantics, though it does clarify the meaning of the `product` values returned for use in sibling tools.

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?

States a specific verb (Lists) and resource (dairy product slugs) and even enumerates the tracked slugs. It is clearly distinguishable from sibling list_* tools for other commodities.

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?

Explicitly says to use it to discover valid `product` values before calling get_dairy_price or get_dairy_history, naming the exact downstream tools. This leaves no ambiguity about when to invoke it.

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

list_esr_commoditiesA
Read-onlyIdempotent
Inspect

Lists the commodities tracked in USDA export sales reporting (wheat, barley, corn, sorghum, soybeans, soybean meal, soybean oil, cotton, rice) with their FAS commodity codes. Use to discover valid commodity slugs before calling get_export_sales or get_export_sales_history. Read-only; no API key. Slugs map to FAS 'all' aggregate commodity codes where available.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already carry readOnly, idempotent, non-destructive, so 'Read-only' is partly redundant, but the description adds real context: no API key required, and the important nuance that slugs map to FAS 'all' aggregate commodity codes where available. That aggregation detail is a behavioral trait not derivable from any structured field. It does not describe paging or exact response shape, a minor gap for a zero-arg list call.

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 short sentences, each earning its place: what it lists, when to call it, and the mapping caveat. The key content (what and when) is front-loaded before the edge-case note.

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 and no parameters, the description must carry the return-value burden, and it does so by enumerating the commodity set and stating that FAS codes accompany them. The aggregate-code caveat pre-empts the main downstream ambiguity, so 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.

Parameters5/5

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

Zero parameters, so the baseline is 4, and the description goes further by explaining that the output values are `commodity` slugs usable as input to sibling tools. That is directly useful semantic framing the empty schema cannot convey.

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?

States a specific verb and resource ('Lists the commodities tracked in USDA export sales reporting') and enumerates exactly what comes back (nine named commodities plus FAS commodity codes). The phrase 'USDA export sales reporting' separates it from siblings like list_wasde_commodities and list_gats_commodities without opening either 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?

Explicitly names the downstream tools this enables ('Use to discover valid `commodity` slugs before calling get_export_sales or get_export_sales_history'), which is clear when-to-use guidance. It stops short of an explicit exclusion such as 'not for WASDE or GATS commodity slugs, use list_wasde_commodities/list_gats_commodities instead' — the most likely sibling confusion.

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

list_fertilizer_productsA
Read-onlyIdempotent
Inspect

Lists the fertilizer product slugs this API tracks (anhydrous ammonia, urea, DAP, MAP, potash, liquid N 28/32, ATS, farm diesel, biodiesel) with display labels. Use to discover valid product values before calling get_fertilizer_price or get_fertilizer_history. Read-only; no API key. The list is the configured catalog across the tracked MARS production cost reports, not a live availability check.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/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, closed-world behavior, yet the description adds real value: 'no API key' and, crucially, that the list is a configured catalog over tracked MARS production cost reports rather than a live availability check. That caveat prevents a plausible misinterpretation. It stops short of describing the return shape (label/slug pairing structure), keeping it from 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.

Conciseness5/5

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

Three tightly packed sentences: what it returns, when to call it, and the one caveat that matters. Purpose, routing, and the non-live-availability qualifier are all front-loaded with zero waste.

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 zero-param discovery tool with full annotation coverage and no output schema, the description supplies everything the agent needs: contents, intended downstream use, auth requirements, and the static-catalog caveat. Nothing material is missing.

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?

Zero parameters, so the baseline is 4 per the rubric. There is nothing for the description to disambiguate, and it does not waste space restating an empty 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?

States a specific verb and resource ('Lists the fertilizer product slugs this API tracks') and even enumerates the concrete slugs with display labels. It is immediately distinguishable from sibling list_* tools by resource (fertilizer vs dairy/grain/livestock/etc.).

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?

Explicitly prescribes the use case ('Use to discover valid `product` values before calling get_fertilizer_price or get_fertilizer_history'), naming the exact downstream tools it feeds. No inference is left to the agent about when to reach for this over the price/history tools.

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

list_gats_commoditiesA
Read-onlyIdempotent
Inspect

Lists the commodities tracked in GATS trade flows (matched to Census data by HS chapter) with display labels. Use to discover valid commodity slugs before calling get_trade_flows or compare_contracts_vs_shipments. Read-only; no API key. The list is the configured catalog — individual commodities can still be withheld in get_trade_flows when their source data fails sanity checks.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds value beyond that with 'no API key' (auth requirement) and the important caveat that listing here does not guarantee a commodity appears in get_trade_flows when source data fails sanity checks.

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 compact sentences, front-loaded with the purpose, then usage routing, then behavioral caveat. Every sentence carries distinct information with no repetition of the schema or annotations.

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 zero-parameter, read-only catalog tool with no output schema, the description covers what is returned (commodities with display labels, matched by HS chapter), why to call it, auth needs, and a subtle caveat about the catalog versus actual data availability. An agent has everything needed to invoke it 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?

The tool takes no parameters (0 params, empty object schema), so there is nothing for the description to disambiguate; baseline 4 applies. The description does not need to explain any inputs and correctly focuses on outputs and usage.

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?

States a specific verb (Lists) plus resource (commodities tracked in GATS trade flows) and scoping detail (matched to Census data by HS chapter, with display labels). This distinguishes it cleanly from the other list_ siblings like list_esr_commodities and list_wasde_commodities, which cover different datasets.

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?

Explicitly says to use it to discover valid `commodity` slugs before calling get_trade_flows or compare_contracts_vs_shipments, naming the downstream tools and the condition that selects this one. Nothing is left to inference about when this tool is the right choice.

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

list_grain_productsA
Read-onlyIdempotent
Inspect

Lists the grain commodity slugs this API tracks (corn, soybeans, wheat, sorghum, oats, barley, rice) with display labels. Use to discover valid product values before calling get_grain_price or get_grain_history. Read-only; no API key. The list is the configured MARS catalog, not a live availability check — a listed product can still have no report for a given state.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the description correctly spends its words on new traits: no API key required, and the important caveat that a listed product may still lack a report for a given state. It doesn't describe ordering or the exact return shape, which keeps it from 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.

Conciseness5/5

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

Three short sentences, front-loaded with what is returned, then the usage routing, then the caveat. Nothing is repeated from the annotation block and no sentence is filler.

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 zero-parameter, read-only list tool with full annotation coverage and no output schema, the description supplies everything an agent needs: what comes back, what to do with it, and the one caveat that could cause a wrong inference. No meaningful gap remains.

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?

The tool takes zero parameters, so the baseline is 4; there is no parameter semantics to explain. The description does clarify the meaning of the values returned (slugs plus display labels), which is the only semantic surface available.

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?

States a specific verb and resource ('Lists the grain commodity slugs this API tracks') and enumerates the actual items returned, plus mentions display labels. It is clearly separable from the sibling list_* tools (list_dairy_products, list_fertilizer_products, etc.) which cover different catalogs.

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?

Explicitly names the downstream tools it feeds ('before calling get_grain_price or get_grain_history'), giving a concrete when-to-use rule. It also sets a negative expectation ('not a live availability check'), preventing misuse as a data-availability probe.

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

list_livestock_productsA
Read-onlyIdempotent
Inspect

Lists the livestock category slugs this API tracks (fed_cattle, feeder_cattle, cows_cwt, cows_head, hogs, sheep) with display labels. Use to discover valid product values before calling get_livestock_price or get_livestock_history. Read-only; no API key. The list is the configured catalog, not a live availability check — some categories trade sporadically and can have no recent report in a region. Cows are split by quote unit: cows_cwt is per-hundredweight, cows_head is per-head.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already cover read-only/idempotent safety. Description adds value beyond them: no API key needed, static catalog vs. live availability, sporadic trading caveat, and the cows_cwt vs cows_head unit split. Doesn't describe response format but content is implied by the enumeration.

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?

Front-loaded purpose, then usage, then caveats. Slightly dense with three sentences of caveat, but every sentence carries actionable information (catalog vs live, sporadic reports, unit split).

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 zero-param list tool with no output schema, the description supplies the actual contents, the return format intent, usage routing, and domain caveats. Nothing needed to call it correctly is missing.

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?

Zero parameters, so baseline is 4. Description nonetheless clarifies the semantics of the output values (slugs, labels, unit distinctions) that feed the `product` parameter of sibling tools.

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?

Specific verb+resource: lists livestock category slugs with display labels, enumerates them explicitly (fed_cattle, hogs, sheep...), and distinguishes from sibling list_* tools by domain. An agent knows exactly what this returns.

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?

Explicitly states when to use: discover valid `product` values before calling get_livestock_price or get_livestock_history, naming both alternatives. Also warns the list is a configured catalog, not a live availability check — a critical usage caveat.

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

list_wasde_commoditiesA
Read-onlyIdempotent
Inspect

Lists the commodities tracked in WASDE projections (corn, wheat, soybeans, soybean meal, soybean oil, rice, barley, cotton) with their FAS PSD commodity codes. Use to discover valid commodity slugs before calling get_wasde_projection or get_wasde_history. Read-only; no API key.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so safety is covered. The description adds genuinely new context — 'no API key' required — and specifies what the response contains (commodity names plus FAS PSD codes). 'Read-only' mildly restates the annotations, which keeps it from 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.

Conciseness5/5

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

Two sentences, no waste: the first identifies the resource and its contents, the second gives the action-guiding usage. The parenthetical list is compact and informative rather than noise.

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 input params and no output schema, the description must convey what comes back — and it does, naming the commodities and the FAS PSD codes. Nothing an agent needs to invoke or interpret the result is missing.

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?

Zero parameters, so the baseline is 4. The description correctly implies no arguments are needed to call it, and the mention of 'commodity slugs' clarifies how the output connects to other tools' parameters.

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?

States a specific verb (Lists) and resource (commodities tracked in WASDE projections), plus enumerates the actual members and notes the FAS PSD commodity codes are returned. This distinguishes it from the many sibling list_* tools (list_esr_commodities, list_gats_commodities, etc.) that cover other datasets.

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?

Explicitly states the use case ('Use to discover valid `commodity` slugs') and names the two downstream tools it feeds (get_wasde_projection, get_wasde_history). An agent knows exactly when to reach for this versus a projection/history call.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updates
    • Changedget_livestock_history1 field changed
      • changedInput schema / properties / product / enum
        Previous value: -[
        -  "fed_cattle",
        -  "feeder_cattle",
        -  "cows",
        -  "hogs",
        -  "sheep"
        -]New value: +[
        +  "fed_cattle",
        +  "feeder_cattle",
        +  "hogs",
        +  "sheep",
        +  "cows_cwt",
        +  "cows_head"
        +]
    • Changedget_livestock_price1 field changed
      • changedInput schema / properties / product / enum
        Previous value: -[
        -  "fed_cattle",
        -  "feeder_cattle",
        -  "cows",
        -  "hogs",
        -  "sheep"
        -]New value: +[
        +  "fed_cattle",
        +  "feeder_cattle",
        +  "hogs",
        +  "sheep",
        +  "cows_cwt",
        +  "cows_head"
        +]
  2. 3 tool updates
    • Removedget_forecast
    • Removedget_weather
    • Removedget_weather_history
  3. 22 tool updates
    • Changedcompare_contracts_vs_shipments2 fields changed
      • changedInput schema / properties / commodity / description
        Previous value: -"Commodity slug"New value: +"Commodity slug (see list_gats_commodities)"
      • changedInput schema / properties / partner / description
        Previous value: -"Partner country code or omit for all"New value: +"Partner country code (2-letter ISO/GENC, e.g. MX, CN) or omit for all partners"
    • Changedget_crop_condition2 fields changed
      • changedInput schema / properties / commodity / description
        Previous value: -"Commodity (CORN, SOYBEANS, WHEAT)"New value: +"Commodity (CORN, SOYBEANS, WHEAT). Default: CORN"
      • changedInput schema / properties / geography / description
        Previous value: -"US for national, or state code (IA, IL, etc.)"New value: +"US for national, or state code (IA, IL, etc.); state coverage is the major corn-belt states. Default: US"
    • Addedget_crop_condition_history
    • Changedget_crop_progress2 fields changed
      • changedInput schema / properties / commodity / description
        Previous value: -"Commodity (CORN, SOYBEANS, WHEAT)"New value: +"Commodity (CORN, SOYBEANS, WHEAT). Default: CORN"
      • changedInput schema / properties / geography / description
        Previous value: -"US for national, or state code (IA, IL, etc.)"New value: +"US for national, or state code (IA, IL, etc.); state coverage is the major corn-belt states. Default: US"
    • Addedget_crop_progress_history
    • Changedget_crop_stats3 fields changed
      • changedInput schema / properties / commodity / description
        Previous value: -"Commodity (CORN, SOYBEANS, WHEAT, etc.)"New value: +"Commodity (CORN, SOYBEANS, WHEAT, COTTON, SORGHUM, OATS, BARLEY, RICE). Default: CORN"
      • changedInput schema / properties / geography / description
        Previous value: -"US for national, or state code (IA, IL, etc.)"New value: +"US for national, or state code (IA, IL, etc.). Default: US"
      • changedInput schema / properties / stat / description
        Previous value: -"Statistic type (YIELD, PRODUCTION, AREA PLANTED)"New value: +"Statistic type (YIELD, PRODUCTION, AREA PLANTED, AREA HARVESTED). Default: YIELD"
    • Addedget_dairy_history
    • Changedget_dairy_price2 fields changed
      • addedInput schema / properties / geography / description
        Added value: +"Report region (US-Central, US-East, US-West; cheese uses US). Default: US-Central"
      • changedInput schema / properties / product / description
        Previous value: -"Dairy product (cheese, butter, dry_whey, fluid_milk)"New value: +"Dairy product (cheese, butter, dry_whey, fluid_milk). Butter prices are withheld — see description"
    • Changedget_export_sales2 fields changed
      • changedInput schema / properties / commodity / description
        Previous value: -"Commodity slug"New value: +"Commodity slug (see list_esr_commodities)"
      • changedInput schema / properties / country / description
        Previous value: -"GENC country code (e.g. CHN, MEX) or omit for all"New value: +"GENC country code (e.g. CHN, MEX) or omit for all destinations"
    • Changedget_export_sales_history4 fields changed
      • addedInput schema / properties / commodity / description
        Added value: +"Commodity slug (see list_esr_commodities)"
      • changedInput schema / properties / country / description
        Previous value: -"GENC country code"New value: +"GENC country code (e.g. CHN, MEX) or omit for all destinations"
      • addedInput schema / properties / weeks / default
        Added value: +12
      • changedInput schema / properties / weeks / description
        Previous value: -"Number of weeks (default 12, max 52)"New value: +"Number of most recent weeks to return (default 12, max 52)"
    • Changedget_fertilizer_history2 fields changed
      • changedInput schema / properties / periods / description
        Previous value: -"Number of periods (max 52)"New value: +"Number of most recent report periods to return (default 12, max 52)"
      • addedInput schema / properties / product / description
        Added value: +"Product slug (e.g. anhydrous_ammonia, urea, dap)"
    • Changedget_forecast1 field changed
      • changedInput schema / properties / location / description
        Previous value: -"Location key"New value: +"Location key (IL-central, IA-central, NE-central, IN-central, KS-central). Default: IL-central"
    • Changedget_grain_history3 fields changed
      • addedInput schema / properties / geography / description
        Added value: +"State/region code from a tracked MARS report (e.g. IL, IA, TX, PNW, GULF). Default: IL"
      • changedInput schema / properties / periods / description
        Previous value: -"Number of days (max 365)"New value: +"Number of most recent report rows to return (default 30, max 365)"
      • addedInput schema / properties / product / description
        Added value: +"Grain slug (e.g. corn, soybeans, wheat)"
    • Changedget_grain_price1 field changed
      • changedInput schema / properties / geography / description
        Previous value: -"State code (e.g. IL, IA). Default: IL"New value: +"State/region code from a tracked MARS report (e.g. IL, IA, TX, PNW, GULF). Default: IL"
    • Changedget_livestock_history3 fields changed
      • addedInput schema / properties / geography / description
        Added value: +"Region or state code (e.g. IA, ECB, KS). Default: IA"
      • changedInput schema / properties / periods / description
        Previous value: -"Days (max 365)"New value: +"Number of most recent report rows to return (default 30, max 365)"
      • addedInput schema / properties / product / description
        Added value: +"Livestock slug (e.g. fed_cattle, feeder_cattle, hogs)"
    • Changedget_livestock_price1 field changed
      • changedInput schema / properties / geography / description
        Previous value: -"Region (IA, ECB). Default: IA"New value: +"Region or state code (e.g. IA for Iowa direct trade, ECB for Eastern Cornbelt, or a state auction code). Default: IA"
    • Changedget_spreads1 field changed
      • addedInput schema / properties / geography / description
        Added value: +"State/region code used for both sides of the spreads (e.g. IL, IA). Default: IL"
    • Changedget_trade_flows4 fields changed
      • changedInput schema / properties / commodity / description
        Previous value: -"Commodity slug"New value: +"Commodity slug (see list_gats_commodities)"
      • addedInput schema / properties / months / default
        Added value: +12
      • changedInput schema / properties / months / description
        Previous value: -"Number of months (default 12, max 24)"New value: +"Number of months of flows to return (default 12, max 24)"
      • changedInput schema / properties / partner / description
        Previous value: -"Partner country code or omit for all"New value: +"Partner country code (2-letter ISO/GENC, e.g. MX, CN) or omit for all partners"
    • Changedget_wasde_history3 fields changed
      • changedInput schema / properties / attribute / description
        Previous value: -"Projection attribute"New value: +"Projection attribute (beginning_stocks, production, imports, exports, domestic_consumption, ending_stocks)"
      • addedInput schema / properties / commodity / description
        Added value: +"Commodity slug (e.g. corn, wheat, soybeans)"
      • addedInput schema / properties / country / description
        Added value: +"Country code (WORLD, US, BR, AR). Default: WORLD aggregate"
    • Changedget_wasde_projection2 fields changed
      • changedInput schema / properties / country / description
        Previous value: -"Country code or WORLD aggregate"New value: +"Country code (WORLD, US, BR, AR). Default: WORLD aggregate"
      • changedInput schema / properties / market_year / description
        Previous value: -"Marketing year (e.g. 2026 = 2025/26 season)"New value: +"Marketing year (e.g. 2026 = 2025/26 season). Default: current marketing year"
    • Changedget_weather1 field changed
      • changedInput schema / properties / location / description
        Previous value: -"Location key (IL-central, IA-central, NE-central, IN-central, KS-central)"New value: +"Location key (IL-central, IA-central, NE-central, IN-central, KS-central). Default: IL-central"
    • Addedget_weather_history
  4. 26 tool updates
    • First observedcompare_contracts_vs_shipments
    • First observedget_crop_condition
    • First observedget_crop_progress
    • First observedget_crop_stats
    • First observedget_dairy_price
    • First observedget_export_sales
    • First observedget_export_sales_history
    • First observedget_fertilizer_history
    • First observedget_fertilizer_price
    • First observedget_forecast
    • First observedget_grain_history
    • First observedget_grain_price
    • First observedget_livestock_history
    • First observedget_livestock_price
    • First observedget_spreads
    • First observedget_trade_flows
    • First observedget_wasde_history
    • First observedget_wasde_projection
    • First observedget_weather
    • First observedlist_dairy_products
    • First observedlist_esr_commodities
    • First observedlist_fertilizer_products
    • First observedlist_gats_commodities
    • First observedlist_grain_products
    • First observedlist_livestock_products
    • First observedlist_wasde_commodities

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to access free, open agronomic data for field briefings, spray windows, water balance, pest pressure, and more, using only public data sources without API keys.
    1
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables plain English queries about US agricultural data, including historical crop statistics from NASS QuickStats and current cash grain prices from AMS Market News.
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    62 real-time data tools for AI agents via MCP. Finance, crypto, FMCSA, sanctions, courts, weather, vehicles, cybersecurity. One bearer token, one bill. Free tier available.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources