Skip to main content
Glama

us-drought-monitor-mcp-server

Server Details

Query U.S. Drought Monitor severity, DSCI, population, and drought duration.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
cyanheads/us-drought-monitor-mcp-server
GitHub Stars
1
Server Listing
us-drought-monitor-mcp-server

TDQS

A4.1/5.0

Scored across 7 tools

Disambiguation4/5

Most tools have clearly distinct roles: reference lookup, current severity, time series, drought-week counts, area ranking, staged-table inspection, and staged-table querying. The only mild overlap is between current severity and time-series retrieval of drought metrics, but the descriptions distinguish current/dated severity from multi-area weekly metrics.

Naming Consistency5/5

All tool names use a consistent drought_ prefix with snake_case. The main tools follow verb-oriented patterns such as get_, list_, and compare_, while the two dataframe tools form a coherent noun-prefixed subgroup.

Tool Count5/5

Seven tools is well-scoped for a domain-specific drought data server. Each tool appears to serve a distinct part of the reference, acquisition, comparison, or staged-data analytics workflow without obvious filler.

Completeness4/5

The set covers reference lookup, current and historical metrics, weekly time series, streak statistics, area comparisons, and querying staged results. There are only minor potential gaps, such as direct area enumeration or export conveniences, which are largely workable through list_reference and dataframe_query.

Available Tools

7 tools
drought_compare_areasCompare drought severity across areasA
Read-only
Inspect

Rank all supported states, or counties within an optional state, on one published map. Omit state for nationwide supported counties. With baselineDate, rank target minus exact baseline; missing sides are excluded explicitly. Equal values share competition rank. limit controls a staged preview; without analytics, complete rankings remain inline within acquisition limits.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
rowsNoComplete ranking or staged preview.
unitNoSeverity unit.
errorNoPresent when the call failed. Absent on success.
scopeNoCompared geography scope.
stateNoResolved county state or null.
metricNoCompared severity measure.
noticeNoEmpty comparison or preview continuation guidance.
stagingNoComplete ranking table when staged.
changeUnitNoDifference unit.
provenanceNoActual sources and attribution.
totalCountNoComplete comparable population before preview selection.
limitNoticeNoDisclosure when the requested limit was clamped.
comparedCountNoComplete comparable population.
excludedAreasNoEvery area lacking a required value.
targetMapDateNoExact target Tuesday.
effectiveLimitNoEffective preview ceiling after clamping to 200.
includedStatesNoActual supported included state postal codes.
baselineMapDateNoExact baseline Tuesday or null.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds genuinely new behavior: equal values share competition rank, rows missing either side of a baseline comparison are excluded explicitly, and limit only stages a preview while complete rankings stay inline within acquisition limits.

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 ranking operation, then progressively adds baseline, tie, and limit behavior in four compact sentences with no filler. Some phrasing ('one published map', 'acquisition limits') is terse enough to be mildly opaque.

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 an output schema present and annotations covering read safety, the description needn't explain return values and covers scope, baseline comparison, tie handling and preview limits adequately. Minor gaps remain around what 'supported' geography means and how metric choices affect ranking.

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 semantics the schema cannot express: what baselineDate actually computes (target minus baseline, with explicit exclusion of missing sides), how ties are ranked, and that limit is a preview rather than a truncation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (rank/compare) and resource (states or counties within a state) on a published drought map, which clearly separates it from sibling read tools like drought_get_current_severity or drought_get_timeseries. It doesn't explicitly name a sibling alternative, so it stops short of 5.

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

Usage Guidelines3/5

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

The description does give conditional usage: omit state for nationwide counties, and supply baselineDate to rank target-versus-baseline change. However, it never states when to prefer this tool over the sibling severity/timeseries tools, leaving the main routing decision to inference.

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

drought_dataframe_describeDescribe staged drought tablesA
Read-onlyIdempotent
Inspect

Inspect tables and column types in a canvas_id returned by drought_get_timeseries or drought_compare_areas. Supply table_name for its complete source query, area/date/metric, units, missing-data and provenance metadata. Omit table_name for bounded schema summaries. Tokens are shareable capabilities and expire; this tool never lists other tokens.

NameRequiredDescriptionDefault
canvas_idYesToken returned by a drought producer.
table_nameNoTable name from the stage handle; omit for schema summaries.
metadata_fieldNoRetained metadata collection to page; requires table_name.
metadata_limitNoDefault 20 metadata items per page; values above 100 are clamped with disclosure.
metadata_offsetNoItems to skip in the retained metadata snapshot.

Output Schema

NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
tablesNoTables only in this specified canvas.
canvas_idNoSupplied canvas token.
expires_atNoActual canvas expiry.
totalCountNoTotal items in the requested retained metadata collection.
limitNoticeNoDisclosure when metadata_limit was clamped.
metadata_pageNoRequested count of complete metadata items, fewer only at exhaustion.
effectiveLimitNoEffective metadata page ceiling after clamping to 100.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, closed-world behavior, and the description adds real context beyond them: tokens are shareable capabilities that expire, and the tool deliberately never lists other tokens. That is a meaningful scope/security disclosure an agent would not otherwise know, though it says nothing about size limits on the returned summaries.

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, front-loaded with the action and scope, then the two operating modes, then the token caveat. No filler and no restatement of the title.

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 an output schema present, return values need no explanation; pagination defaults and clamping are documented in the schema. The description covers the remaining gaps an agent needs: where canvas_id comes from, the two modes, and token expiry.

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 semantic payload: table_name unlocks the complete source query plus area/date/metric, units, missing-data and provenance metadata, while omission yields schema summaries. That clarifies intent of a parameter whose schema text only says 'Table name from the stage handle.'

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 ('Inspect tables and column types') scoped to a canvas_id, and names the two sibling producers that create that handle. It also distinguishes its own two modes (table_name present vs omitted), so an agent can tell it apart from drought_dataframe_query 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 branches on table_name: supply it for full source query and provenance metadata, omit it for bounded schema summaries. It names the upstream producers but does not explicitly contrast with drought_dataframe_query (the natural 'then fetch the data' alternative), leaving that inference to the agent.

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

drought_dataframe_queryQuery staged drought dataA
Read-only
Inspect

Run one DuckDB read expression against staged drought tables, optionally ending with one semicolon. Get canvas_id from drought_get_timeseries or drought_compare_areas and inspect columns with drought_dataframe_describe. For every original row, SELECT * FROM the table ORDER BY row_id and follow next_offset until null. Arbitrary SQL pagination requires your own stable ORDER BY. Exact totals require SELECT COUNT(*).

NameRequiredDescriptionDefault
sqlYesOne DuckDB read expression with an optional terminal semicolon; staged tables only.
limitNoDefault 25 rows per page; values above 500 are clamped with disclosure.
offsetNoRows to skip in the stable ordered query.
canvas_idYesToken returned by a drought producer.

Output Schema

NameRequiredDescription
capNoRequested maximum page rows.
rowsNoComplete projected values on this page.
errorNoPresent when the call failed. Absent on success.
shownNoComplete rows shown on the truncated page.
noticeNoEmpty-result or continuation guidance.
offsetNoRows skipped by this query.
columnsNoProjected column names in order.
has_moreNoWhether another page remains.
canvas_idNoSupplied canvas token.
truncatedNoMore query rows remain beyond this page.
limitNoticeNoDisclosure when the requested limit was clamped.
next_offsetNoContinue with this offset and identical SQL, or null.
countIsExactNoTrue only when the page exhausts the query at offset zero.
returnedCountNoNumber of rows returned.
tableMetadataNoBounded table identity and source provenance.
effectiveLimitNoEffective page ceiling after clamping to 500.

TDQS

A4.5/5.0
Behavior5/5

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

Goes well past the readOnlyHint/openWorldHint annotations: it discloses the single-statement constraint with one optional semicolon, the staged-tables-only restriction, the limit clamping above 500 with disclosure, the next_offset-until-null pagination contract, and the requirement for a caller-supplied stable ORDER BY when paginating arbitrary SQL. These are exactly the behaviors that cause silent wrong results if unknown.

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 action, then workflow routing, then pagination rules; every sentence carries operational content. The telegraphic phrasing and the semicolon detail (already in the sql schema description) are minor redundancy, not waste.

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?

An output schema exists, so return shape needn't be described, and the description covers the query contract, pagination, and row-count caveats well. The remaining gap is the canvas_id lifecycle — nothing says whether a staged canvas expires or how long it stays queryable, which matters for a staged-data 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 schema already documents limit, offset, canvas_id, and sql. The description still adds meaning beyond it by defining what the schema's vague 'stable ordered query' means (ORDER BY row_id) and by explaining how offset/limit interact with the next_offset chain.

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: run one DuckDB read expression against staged drought tables. It also distinguishes itself from siblings by naming drought_get_timeseries and drought_compare_areas as the canvas_id producers and drought_dataframe_describe as the column inspector, so the agent can place it in the workflow without inspecting schemas.

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?

Gives explicit prerequisites (canvas_id from a drought producer, columns via drought_dataframe_describe) and prescribes distinct query patterns for distinct goals: SELECT * ... ORDER BY row_id with next_offset for full row enumeration, versus SELECT COUNT(*) for exact totals. It lacks an explicit 'do not use this when...' exclusion, which keeps it below 5.

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

drought_get_current_severityGet a drought severity snapshotA
Read-onlyIdempotent
Inspect

Get current or dated drought severity, cumulative and categorical area percentages, area square miles, supported population counts and experimental upstream DSCI. Resolve identifiers with drought_list_reference. DSCI changes use exactly 4 and 52 weeks earlier; missing observations remain null. US selects both CONUS and Total.

NameRequiredDescriptionDefault
areaYesOne exact geography selector.
dateNoCalendar date YYYY-MM-DD; defaults to latest published map.

Output Schema

NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
foundNoAt least one complete severity snapshot exists.
noticeNoMissing observation guidance.
guidanceNoMissing-data or coverage guidance.
snapshotsNoComplete required severity components for each area.
provenanceNoActual sources and attribution.
availableFromNoFirst published map.
latestMapDateNoLatest actually published map.
requestedAreaNoOriginal selector.
requestedDateNoRequested date, or null for latest.
resolvedAreasNoResolved canonical areas.
effectiveMapDateNoContaining Tuesday.

TDQS

A4.4/5.0
Behavior4/5

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

The annotations already establish read-only, idempotent, open-world behavior, and the description adds useful data semantics: missing observations remain null and DSCI changes use exactly 4- and 52-week comparison windows. It does not discuss auth, rate limits, or return structure, but the output schema covers return shape.

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 description is front-loaded with the core purpose and returned data, followed by identifier and aggregation notes. It is dense but efficient; each sentence carries useful meaning, though the output-measure enumeration is somewhat packed.

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

Completeness5/5

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

Given the complex oneOf area selector, rich schema coverage, annotations, and an output schema, the description is complete enough for an agent to call the tool correctly. It covers the key non-schema behaviors: identifier resolution, null handling, DSCI timing, and US aggregation.

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 schema already documents area selectors and date formatting. The description adds meaning beyond the schema by noting that US selects both CONUS and Total and by directing identifier resolution through drought_list_reference.

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: get drought severity as a current or dated snapshot. It enumerates the returned measures and distinguishes the snapshot use case from time-series or comparison siblings by naming the identifier helper explicitly.

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

Usage Guidelines4/5

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

It gives clear usage context by saying identifiers should be resolved with drought_list_reference and clarifies that US selects both CONUS and Total. It does not explicitly exclude or compare against drought_get_timeseries or drought_compare_areas, so it stops short of full when-to-use guidance.

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

drought_get_timeseriesGet weekly drought observationsA
Read-only
Inspect

Get weekly drought metrics and experimental DSCI for 1–100 explicit areas sharing one geography type and HUC level. Resolve identifiers with drought_list_reference. Dates select inclusive Tuesday map weeks. Missing values remain null; summaries include every tied peak. Large results are staged when analytics is enabled; use the returned dataframe tools to read every row and retained metadata page. Without analytics, complete results remain inline within acquisition limits.

NameRequiredDescriptionDefault
areasYesExplicit homogeneous geographies.
metricNoMeasure; population supports US, state and county only and carries estimation assumptions in provenance.populationInterpretation.area_percent
endDateYesLast requested calendar date, YYYY-MM-DD.
canvas_idNoCanvas token from a previous drought producer to reuse when staging.
startDateYesFirst requested calendar date, YYYY-MM-DD.
statisticsTypeNoOverlapping cumulative or exclusive categorical buckets.cumulative

Output Schema

NameRequiredDescription
rowsNoComplete inline rows or exact staged preview.
unitNoBucket unit.
areasNoResolved deduplicated areas.
errorNoPresent when the call failed. Absent on success.
metricNoSelected metric.
noticeNoEmpty or partial-data guidance.
stagingNoComplete analytical table when staged.
summaryNoFull-data area summaries.
guidanceNoCoverage guidance for known legacy Connecticut counties.
rowCountNoComplete observation count.
provenanceNoActual sources and attribution.
missingAreasNoAreas without metric observations.
latestMapDateNoLatest map actually published.
effectiveRangeNoPublished coverage intersection.
metadata_pagesNoPresent only when complete metadata requires automatic continuation.
requestedRangeNoOriginal requested dates.
statisticsTypeNoSelected representation.
missingObservationsNoMissing metric and DSCI dates.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations only declare readOnlyHint and openWorldHint, so the description carries most of the behavioral load and does add real context: inclusive Tuesday map-week alignment, missing values retained as null, staging under analytics versus inline results within acquisition limits. What is missing is cost/latency expectation for large area lists and what 'acquisition limits' actually truncates at.

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?

Five sentences, front-loaded with purpose and identifier resolution, then behavioral caveats; nearly every clause carries information. It is dense and a couple of clauses ('summaries include every tied peak') are oblique given there is no summary parameter, which costs a point.

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 an output schema present, the description need not document return values, and it still explains the staged-versus-inline delivery model that affects how the agent must follow up. The one gap is that the reference to 'summaries' and 'tied peaks' implies output structure the agent cannot reconcile with the visible parameter set.

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 the baseline is 3 and the schema already documents every parameter including the metric enum's population caveat. The description contributes one genuine addition beyond the schema — the requirement that all areas share one geography type and HUC level, a cross-parameter constraint the schema does not enforce — but adds nothing on metric or statisticsType semantics.

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 (get), resource (weekly drought metrics and experimental DSCI), and hard scope: 1–100 explicit areas sharing one geography type and HUC level. That homogeneity constraint alone separates it from siblings like drought_compare_areas and drought_get_current_severity, which operate on different axes.

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?

Routes the agent explicitly for two sub-decisions: resolve identifiers with drought_list_reference, and read staged output with the returned dataframe tools. It does not explicitly say when to prefer drought_compare_areas or drought_get_weeks_in_drought instead, so the exclusion side is inferential rather than stated.

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

drought_get_weeks_in_droughtGet county weeks in droughtA
Read-onlyIdempotent
Inspect

Get authoritative consecutive streaks or non-consecutive week counts when any county area meets the selected drought category or worse. Supply states or one county, never both; omitted selectors mean supported nationwide counties. Counts are duration statistics, not program eligibility. Follow nextCursor with unchanged filters within five minutes.

NameRequiredDescriptionDefault
modeNoWindow-bounded consecutive streaks or qualifying week counts.consecutive
limitNoDefault 25 rows per page; values above 200 are clamped with disclosure.
countyNoCounty FIPS or exact/unique suffix-free county name, state; mutually exclusive with states.
cursorNoContinuation returned with identical filters.
statesNoExact state postal, FIPS or full names; mutually exclusive with county.
endDateYesLast requested date, YYYY-MM-DD.
minWeeksYesMinimum weeks, no more than requested inclusive map weeks.
startDateYesFirst requested date, YYYY-MM-DD.
minCategoryYesMinimum drought category.

Output Schema

NameRequiredDescription
modeNoSelected duration mode.
rowsNoComplete authoritative rows on this page.
errorNoPresent when the call failed. Absent on success.
countyNoResolved exact county or null.
noticeNoEmpty threshold or coverage guidance.
statesNoResolved supported state postal codes.
hasMoreNoAnother page remains.
guidanceNoCoverage guidance for known legacy Connecticut counties.
minWeeksNoMinimum qualifying map weeks.
nextCursorNoQuery-bound continuation, or null.
provenanceNoActual sources and attribution.
totalCountNoFull filtered result count.
limitNoticeNoDisclosure when the requested limit was clamped.
minCategoryNoMinimum category.
latestMapDateNoLatest actually published map.
thresholdRuleNoCounty qualifies if any area meets category or worse.
effectiveLimitNoEffective page ceiling after clamping to 200.
effectiveRangeNoPublished map-week coverage intersection.
requestedRangeNoOriginal dates.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, and open-world status, and the description adds non-obvious context: results are 'authoritative' duration measures rather than program eligibility, and cursors must be replayed with unchanged filters within five minutes. The clamping behavior at high limits lives in the schema rather than the description, but overall the description adds substantive behavioral context beyond 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?

Four sentences, front-loaded with purpose, then selector rules, then the caveat, then the pagination rule; no sentence is filler. It is dense but each line carries a distinct constraint.

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 an output schema present and full annotation coverage, the description need not document return values or safety; it covers selector exclusivity, scope defaults, the duration-vs-eligibility distinction, and cursor expiry. The only gap is guidance on choosing this tool over its siblings.

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 baseline is 3; the description only modestly extends it by clarifying that minCategory includes 'or worse' categories and that omitted selectors default to nationwide counties. It does not explain the practical difference between consecutive and non_consecutive modes or how minWeeks interacts with the requested date window, which are the hardest parameters to get right.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The definition names a specific verb and resource — counting consecutive streaks or non-consecutive weeks any county area spends at or above a chosen drought category — and separates itself from severity/timeseries siblings by framing itself as duration statistics. It stops short of explicitly naming which sibling to use for point-in-time severity or trend questions.

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

Usage Guidelines3/5

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

It gives real selector guidance: 'Supply states or one county, never both; omitted selectors mean supported nationwide counties,' plus a follow-up rule for nextCursor. It does not state when to choose this over drought_get_timeseries or drought_compare_areas, so the agent must infer the boundary.

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

drought_list_referenceLook up drought reference dataA
Read-onlyIdempotent
Inspect

Look up drought categories, DSCI formulas, metric support, publication coverage and exact geography identifiers. Filter complete families by nameContains before paging. Use state for counties or climate_divisions; huc requires hucLevel 2, 4, 6 or 8 and accepts a shorter parentHuc. Follow nextCursor with the same filters to browse every match.

NameRequiredDescriptionDefault
limitNoDefault 25 records per page; values above 200 are clamped with disclosure.
stateNoCounty or climate-division filter: exact state postal code, two-digit FIPS or full name.
topicYesReference family to browse; river_forecast_centers provides official RFC codes and names.
cursorNoContinuation cursor from the previous page with the same filters.
hucLevelNoRequired for huc; exact identifier width.
parentHucNoExisting parent HUC at level 2, 4 or 6, shorter than hucLevel; blank is omitted.
nameContainsNoAll normalized tokens must appear in the reference name.

Output Schema

NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
topicNoSelected reference family.
noticeNoGuidance when no names match.
hasMoreNoWhether another page remains.
recordsNoComplete records on this page.
nextCursorNoContinuation with identical filters, or null.
provenanceNoSource attribution and acquisition time.
totalCountNoCount after filtering, before pagination.
limitNoticeNoDisclosure when the requested limit was clamped.
bundleVersionNoGenerated reference bundle version.
effectiveLimitNoEffective page ceiling after clamping to 200.
sourceMetadataNoSource vintages and SHA-256 evidence.

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, closed-world, so the safety profile is covered. The description adds real behavior beyond that: cross-page filter consistency requirement for cursors, the parentHuc-must-be-shorter constraint, and that families are filtered before paging — all useful operational context.

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 dense sentences, front-loaded with the resource list, then filtering, geography constraints, and pagination — in the order an agent would need them. No filler or tautology.

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 an output schema present, return values need no explanation, and all seven parameters are addressed in context. Remaining gaps are minor: default ordering of results, and whether some topics (e.g. tribal) combine with state filtering.

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 would be 3, but the description adds relationships the schema only states in isolation: which topic values pair with which geography parameters, and the coupling of parentHuc to hucLevel. That linkage meaningfully reduces mis-invocation risk.

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 concrete verb ('look up') and enumerates the exact reference families (categories, DSCI formulas, metric support, coverage, geography identifiers), which cleanly separates it from the data-returning siblings like drought_get_timeseries or drought_get_current_severity. An agent can tell this is a static reference/metadata tool without opening the schema.

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

Usage Guidelines4/5

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

Gives actionable routing rules: use state for counties or climate_divisions, huc requires hucLevel 2/4/6/8, and follow nextCursor with the same filters. It does not explicitly say when a sibling tool is the better choice (e.g. 'use drought_compare_areas instead for cross-area comparison'), so the alternative-selection guidance is implied rather than stated.

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. 7 tool updates
    • Changeddrought_compare_areas5 fields changed
      • changedInput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "baselineDate": {
        -        "description": "Optional exact baseline date, no later than target.",
        -        "maxLength": 10,
        -        "pattern": "^(?:|\\d{4}-\\d{2}-\\d{2})$",
        -        "type": "string"
        -      },
        -      "canvas_id": {
        -        "anyOf": [
        -          {
        -            "const": "",
        -            "type": "string"
        -          },
        -          {
        -            "description": "Canvas ID as an earlier response on this server returned it — exactly 10 characters of letters, digits, hyphens, and underscores.",
        -            "pattern": "^[A-Za-z0-9_-]{10}$",
        -            "type": "string"
        -          }
        -        ],
        -        "description": "Canvas token from an earlier drought producer to reuse."
        -      },
        -      "date": {
        -        "description": "Target calendar date; defaults to latest published map.",
        -        "maxLength": 10,
        -        "pattern": "^(?:|\\d{4}-\\d{2}-\\d{2})$",
        -        "type": "string"
        -      },
        -      "direction": {
        -        "default": "desc",
        -        "description": "Order by severity or baseline change.",
        -        "enum": [
        -          "asc",
        -          "desc"
        -        ],
        -        "type": "string"
        -      },
        -      "limit": {
        -        "default": 20,
        -        "description": "Preview row limit, clamped to 200 with disclosure; complete rankings remain staged.",
        -        "maximum": 9007199254740991,
        -        "minimum": 1,
        -        "type": "integer"
        -      },
        -      "metric": {
        -        "default": "dsci",
        -        "description": "Experimental DSCI or cumulative area percentage.",
        -        "enum": [
        -          "dsci",
        -          "d2_d4",
        -          "d3_d4"
        -        ],
        -        "type": "string"
        -      },
        -      "scope": {
        -        "const": "states",
        -        "description": "All supported states.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "scope"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "baselineDate": {
        -        "description": "Optional exact baseline date, no later than target.",
        -        "maxLength": 10,
        -        "pattern": "^(?:|\\d{4}-\\d{2}-\\d{2})$",
        -        "type": "string"
        -      },
        -      "canvas_id": {
        -        "anyOf": [
        -          {
        -            "const": "",
        -            "type": "string"
        -          },
        -          {
        -            "description": "Canvas ID as an earlier response on this server returned it — exactly 10 characters of letters, digits, hyphens, and underscores.",
        -            "pattern": "^[A-Za-z0-9_-]{10}$",
        -            "type": "string"
        -          }
        -        ],
        -        "description": "Canvas token from an earlier drought producer to reuse."
        -      },
        -      "date": {
        -        "description": "Target calendar date; defaults to latest published map.",
        -        "maxLength": 10,
        -        "pattern": "^(?:|\\d{4}-\\d{2}-\\d{2})$",
        -        "type": "string"
        -      },
        -      "direction": {
        -        "default": "desc",
        -        "description": "Order by severity or baseline change.",
        -        "enum": [
        -          "asc",
        -          "desc"
        -        ],
        -        "type": "string"
        -      },
        -      "limit": {
        -        "default": 20,
        -        "description": "Preview row limit, clamped to 200 with disclosure; complete rankings remain staged.",
        -        "maximum": 9007199254740991,
        -        "minimum": 1,
        -        "type": "integer"
        -      },
        -      "metric": {
        -        "default": "dsci",
        -        "description": "Experimental DSCI or cumulative area percentage.",
        -        "enum": [
        -          "dsci",
        -          "d2_d4",
        -          "d3_d4"
        -        ],
        -        "type": "string"
        -      },
        -      "scope": {
        -        "const": "counties",
        -        "description": "Supported counties.",
        -        "type": "string"
        -      },
        -      "state": {
        -        "description": "Exact state postal, FIPS or full name; omitted means nationwide.",
        -        "maxLength": 200,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "scope"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "baselineDate": {
        +        "description": "Optional exact baseline date, no later than target.",
        +        "maxLength": 10,
        +        "pattern": "^(?:|\\d{4}-\\d{2}-\\d{2})$",
        +        "type": "string"
        +      },
        +      "canvas_id": {
        +        "anyOf": [
        +          {
        +            "const": "",
        +            "type": "string"
        +          },
        +          {
        +            "description": "Canvas ID as an earlier response on this server returned it — exactly 10 characters of letters, digits, hyphens, and underscores.",
        +            "pattern": "^[A-Za-z0-9_-]{10}$",
        +            "type": "string"
        +          }
        +        ],
        +        "description": "Canvas token from an earlier drought producer to reuse."
        +      },
        +      "date": {
        +        "description": "Target calendar date; defaults to latest published map.",
        +        "maxLength": 10,
        +        "pattern": "^(?:|\\d{4}-\\d{2}-\\d{2})$",
        +        "type": "string"
        +      },
        +      "direction": {
        +        "default": "desc",
        +        "description": "Order by severity or baseline change.",
        +        "enum": [
        +          "asc",
        +          "desc"
        +        ],
        +        "type": "string"
        +      },
        +      "limit": {
        +        "default": 20,
        +        "description": "Default 20 preview rows; values above 200 are clamped with disclosure.",
        +        "maximum": 9007199254740991,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "metric": {
        +        "default": "dsci",
        +        "description": "Experimental DSCI or cumulative area percentage.",
        +        "enum": [
        +          "dsci",
        +          "d2_d4",
        +          "d3_d4"
        +        ],
        +        "type": "string"
        +      },
        +      "scope": {
        +        "const": "states",
        +        "description": "All supported states.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "scope"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "baselineDate": {
        +        "description": "Optional exact baseline date, no later than target.",
        +        "maxLength": 10,
        +        "pattern": "^(?:|\\d{4}-\\d{2}-\\d{2})$",
        +        "type": "string"
        +      },
        +      "canvas_id": {
        +        "anyOf": [
        +          {
        +            "const": "",
        +            "type": "string"
        +          },
        +          {
        +            "description": "Canvas ID as an earlier response on this server returned it — exactly 10 characters of letters, digits, hyphens, and underscores.",
        +            "pattern": "^[A-Za-z0-9_-]{10}$",
        +            "type": "string"
        +          }
        +        ],
        +        "description": "Canvas token from an earlier drought producer to reuse."
        +      },
        +      "date": {
        +        "description": "Target calendar date; defaults to latest published map.",
        +        "maxLength": 10,
        +        "pattern": "^(?:|\\d{4}-\\d{2}-\\d{2})$",
        +        "type": "string"
        +      },
        +      "direction": {
        +        "default": "desc",
        +        "description": "Order by severity or baseline change.",
        +        "enum": [
        +          "asc",
        +          "desc"
        +        ],
        +        "type": "string"
        +      },
        +      "limit": {
        +        "default": 20,
        +        "description": "Default 20 preview rows; values above 200 are clamped with disclosure.",
        +        "maximum": 9007199254740991,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "metric": {
        +        "default": "dsci",
        +        "description": "Experimental DSCI or cumulative area percentage.",
        +        "enum": [
        +          "dsci",
        +          "d2_d4",
        +          "d3_d4"
        +        ],
        +        "type": "string"
        +      },
        +      "scope": {
        +        "const": "counties",
        +        "description": "Supported counties.",
        +        "type": "string"
        +      },
        +      "state": {
        +        "description": "Exact state postal, FIPS or full name; omitted means nationwide.",
        +        "maxLength": 200,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "scope"
        +    ],
        +    "type": "object"
        +  }
        +]
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `upstream_request_rejected`: USDM rejects a selector or date request. `staging_busy`: The bounded acquisition admission slots are occupied. `ambiguous_area`: Several exact names match. `unknown_area`: The state name cannot resolve. `invalid_area`: State is used with the wrong scope. `invalid_date_range`: Dates are impossible or baseline follows target. `publication_unavailable`: No latest publication is available. `dataset_too_large`: The complete request exceeds acquisition or metadata budgets. `upstream_shape_invalid`: Upstream data is malformed, duplicate or outside scope. `canvas_unavailable`: A complete ranking requires an unavailable analytical provider. `staging_capacity_exhausted`: Retained analytical capacity is exhausted. `canvas_not_found`: The supplied canvas is absent or expired. `canvas_capacity_exhausted`: The provider cannot mint another canvas. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `upstream_request_rejected`: USDM rejects a selector or date request. `staging_busy`: The bounded acquisition admission slots are occupied. `ambiguous_area`: Several exact names match. `unknown_area`: The state name cannot resolve. `invalid_area`: State is used with the wrong scope. `invalid_date_range`: Dates are impossible or baseline follows target. `publication_unavailable`: No latest publication is available. `dataset_too_large`: The complete request exceeds acquisition or retained-data quotas. `upstream_shape_invalid`: Upstream data is malformed, duplicate or outside scope. `canvas_unavailable`: An explicit canvas token requires an unavailable analytical provider. `staging_capacity_exhausted`: Retained analytical capacity is exhausted. `canvas_not_found`: The supplied canvas is absent or expired. `canvas_capacity_exhausted`: The provider cannot mint another canvas. Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / excludedAreas / items / properties / area / properties / areaType / enum
        Previous value: -[
        -  "us",
        -  "state",
        -  "county",
        -  "huc",
        -  "tribal",
        -  "climate_division"
        -]New value: +[
        +  "us",
        +  "state",
        +  "county",
        +  "huc",
        +  "tribal",
        +  "climate_division",
        +  "river_forecast_center"
        +]
      • addedOutput schema / properties / provenance / properties / populationInterpretation
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Present when the workflow includes a supported population metric.",
        +  "properties": {
        +    "caveat": {
        +      "description": "Population assumptions and precision limitations.",
        +      "type": "string"
        +    },
        +    "methodologyUrl": {
        +      "description": "Official population estimation methodology.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "methodologyUrl",
        +    "caveat"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / rows / items / properties / areaType / enum
        Previous value: -[
        -  "us",
        -  "state",
        -  "county",
        -  "huc",
        -  "tribal",
        -  "climate_division"
        -]New value: +[
        +  "us",
        +  "state",
        +  "county",
        +  "huc",
        +  "tribal",
        +  "climate_division",
        +  "river_forecast_center"
        +]
    • Changeddrought_dataframe_describe7 fields changed
      • changedInput schema / properties / metadata_limit / description
        Previous value: -"Maximum metadata items, further bounded by response budgets."New value: +"Default 20 metadata items per page; values above 100 are clamped with disclosure."
      • changedInput schema / properties / metadata_limit / maximum
        Previous value: -100New value: +9007199254740991
      • addedOutput schema / properties / effectiveLimit
        Added value: +{
        +  "description": "Effective metadata page ceiling after clamping to 100.",
        +  "maximum": 9007199254740991,
        +  "minimum": -9007199254740991,
        +  "type": "integer"
        +}
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `invalid_metadata_page`: Metadata pagination lacks a named table or uses an unavailable collection. `canvas_unavailable`: Analytical provider is unavailable. `canvas_not_found`: Token is absent, expired or belongs to another tenant. `missing_table`: The requested table is absent. `dataset_too_large`: The complete metadata cannot fit the response. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `invalid_metadata_page`: Metadata pagination lacks a named table or uses an unavailable collection. `canvas_unavailable`: Analytical provider is unavailable. `canvas_not_found`: Token is absent, expired or belongs to another tenant. `missing_table`: The requested table is absent. Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "invalid_metadata_page",
        -  "canvas_unavailable",
        -  "canvas_not_found",
        -  "missing_table",
        -  "dataset_too_large"
        -]New value: +[
        +  "invalid_metadata_page",
        +  "canvas_unavailable",
        +  "canvas_not_found",
        +  "missing_table"
        +]
      • addedOutput schema / properties / limitNotice
        Added value: +{
        +  "description": "Disclosure when metadata_limit was clamped.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / metadata_page / description
        Previous value: -"One complete bounded metadata page for a named table."New value: +"Requested count of complete metadata items, fewer only at exhaustion."
    • Changeddrought_dataframe_query4 fields changed
      • changedInput schema / properties / limit / default
        Previous value: -100New value: +25
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum returned rows, clamped to 500 with disclosure and further bounded by complete response size."New value: +"Default 25 rows per page; values above 500 are clamped with disclosure."
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `canvas_unavailable`: Analytical provider is disabled or unavailable. `canvas_not_found`: Token is absent, expired or belongs to another tenant. `missing_table`: A named staged table is absent. `invalid_sql`: SQL cannot parse or bind. `sql_execution_error`: A data conversion or range expression fails. `sql_read_only`: SQL gate rejects a write, external read or system catalog. `dataset_too_large`: Combined source metadata exceeds the query response budget. `query_row_too_large`: One projected row cannot fit a complete response. `staging_busy`: Two queries are already active in this process. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `canvas_unavailable`: Analytical provider is disabled or unavailable. `canvas_not_found`: Token is absent, expired or belongs to another tenant. `missing_table`: A named staged table is absent. `invalid_sql`: SQL cannot parse or bind. `sql_execution_error`: A data conversion or range expression fails. `sql_read_only`: SQL gate rejects a write, external read or system catalog. `staging_busy`: Two queries are already active in this process. Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "canvas_unavailable",
        -  "canvas_not_found",
        -  "missing_table",
        -  "invalid_sql",
        -  "sql_execution_error",
        -  "sql_read_only",
        -  "dataset_too_large",
        -  "query_row_too_large",
        -  "staging_busy"
        -]New value: +[
        +  "canvas_unavailable",
        +  "canvas_not_found",
        +  "missing_table",
        +  "invalid_sql",
        +  "sql_execution_error",
        +  "sql_read_only",
        +  "staging_busy"
        +]
    • Changeddrought_get_current_severity7 fields changed
      • changedInput schema / properties / area / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "description": "National coverage selector.",
        -    "properties": {
        -      "aoi": {
        -        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "areaType": {
        -        "const": "us",
        -        "description": "National geography.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "areaType",
        -      "aoi"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "description": "Exact state selector.",
        -    "properties": {
        -      "aoi": {
        -        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "areaType": {
        -        "const": "state",
        -        "description": "State geography.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "areaType",
        -      "aoi"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "description": "Exact county selector.",
        -    "properties": {
        -      "aoi": {
        -        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "areaType": {
        -        "const": "county",
        -        "description": "County geography.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "areaType",
        -      "aoi"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "description": "Exact tribal selector.",
        -    "properties": {
        -      "aoi": {
        -        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "areaType": {
        -        "const": "tribal",
        -        "description": "Tribal geography.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "areaType",
        -      "aoi"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "description": "Exact climate division selector.",
        -    "properties": {
        -      "aoi": {
        -        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "areaType": {
        -        "const": "climate_division",
        -        "description": "Climate division geography.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "areaType",
        -      "aoi"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "description": "Exact watershed selector with matching HUC width.",
        -    "properties": {
        -      "aoi": {
        -        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "areaType": {
        -        "const": "huc",
        -        "description": "Watershed geography.",
        -        "type": "string"
        -      },
        -      "hucLevel": {
        -        "anyOf": [
        -          {
        -            "const": 2,
        -            "type": "number"
        -          },
        -          {
        -            "const": 4,
        -            "type": "number"
        -          },
        -          {
        -            "const": 6,
        -            "type": "number"
        -          },
        -          {
        -            "const": 8,
        -            "type": "number"
        -          }
        -        ],
        -        "description": "Exact HUC identifier width."
        -      }
        -    },
        -    "required": [
        -      "areaType",
        -      "aoi",
        -      "hucLevel"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "description": "National coverage selector.",
        +    "properties": {
        +      "aoi": {
        +        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "areaType": {
        +        "const": "us",
        +        "description": "National geography.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "areaType",
        +      "aoi"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "description": "Exact state selector.",
        +    "properties": {
        +      "aoi": {
        +        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "areaType": {
        +        "const": "state",
        +        "description": "State geography.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "areaType",
        +      "aoi"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "description": "Exact county selector.",
        +    "properties": {
        +      "aoi": {
        +        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "areaType": {
        +        "const": "county",
        +        "description": "County geography.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "areaType",
        +      "aoi"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "description": "Exact tribal selector.",
        +    "properties": {
        +      "aoi": {
        +        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "areaType": {
        +        "const": "tribal",
        +        "description": "Tribal geography.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "areaType",
        +      "aoi"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "description": "Exact climate division selector.",
        +    "properties": {
        +      "aoi": {
        +        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "areaType": {
        +        "const": "climate_division",
        +        "description": "Climate division geography.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "areaType",
        +      "aoi"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "description": "Bundled RFC code or exact name.",
        +    "properties": {
        +      "aoi": {
        +        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "areaType": {
        +        "const": "river_forecast_center",
        +        "description": "River Forecast Center geography.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "areaType",
        +      "aoi"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "description": "Exact watershed selector with matching HUC width.",
        +    "properties": {
        +      "aoi": {
        +        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "areaType": {
        +        "const": "huc",
        +        "description": "Watershed geography.",
        +        "type": "string"
        +      },
        +      "hucLevel": {
        +        "anyOf": [
        +          {
        +            "const": 2,
        +            "type": "number"
        +          },
        +          {
        +            "const": 4,
        +            "type": "number"
        +          },
        +          {
        +            "const": 6,
        +            "type": "number"
        +          },
        +          {
        +            "const": 8,
        +            "type": "number"
        +          }
        +        ],
        +        "description": "Exact HUC identifier width."
        +      }
        +    },
        +    "required": [
        +      "areaType",
        +      "aoi",
        +      "hucLevel"
        +    ],
        +    "type": "object"
        +  }
        +]
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `upstream_request_rejected`: USDM rejects a selector or date request. `ambiguous_area`: Several exact names match. `unknown_area`: A geography name cannot resolve. `invalid_area`: Identifier shape is invalid. `invalid_date_range`: The date is not a real calendar date. `publication_unavailable`: No latest publication is available. `upstream_shape_invalid`: Upstream data is malformed, duplicate or outside scope. `dataset_too_large`: The complete snapshot exceeds bounded response budgets. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `upstream_request_rejected`: USDM rejects a selector or date request. `ambiguous_area`: Several exact names match. `unknown_area`: A geography name cannot resolve. `invalid_area`: Identifier shape is invalid. `invalid_date_range`: The date is not a real calendar date. `publication_unavailable`: No latest publication is available. `upstream_shape_invalid`: Upstream data is malformed, duplicate or outside scope. `dataset_too_large`: The complete snapshot exceeds acquisition or normalized-data quotas. Other values are possible when a failure originates below the handler."
      • addedOutput schema / properties / provenance / properties / populationInterpretation
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Present when the workflow includes a supported population metric.",
        +  "properties": {
        +    "caveat": {
        +      "description": "Population assumptions and precision limitations.",
        +      "type": "string"
        +    },
        +    "methodologyUrl": {
        +      "description": "Official population estimation methodology.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "methodologyUrl",
        +    "caveat"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / requestedArea / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "description": "National coverage selector.",
        -    "properties": {
        -      "aoi": {
        -        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "areaType": {
        -        "const": "us",
        -        "description": "National geography.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "areaType",
        -      "aoi"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "description": "Exact state selector.",
        -    "properties": {
        -      "aoi": {
        -        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "areaType": {
        -        "const": "state",
        -        "description": "State geography.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "areaType",
        -      "aoi"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "description": "Exact county selector.",
        -    "properties": {
        -      "aoi": {
        -        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "areaType": {
        -        "const": "county",
        -        "description": "County geography.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "areaType",
        -      "aoi"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "description": "Exact tribal selector.",
        -    "properties": {
        -      "aoi": {
        -        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "areaType": {
        -        "const": "tribal",
        -        "description": "Tribal geography.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "areaType",
        -      "aoi"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "description": "Exact climate division selector.",
        -    "properties": {
        -      "aoi": {
        -        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "areaType": {
        -        "const": "climate_division",
        -        "description": "Climate division geography.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "areaType",
        -      "aoi"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "description": "Exact watershed selector with matching HUC width.",
        -    "properties": {
        -      "aoi": {
        -        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "areaType": {
        -        "const": "huc",
        -        "description": "Watershed geography.",
        -        "type": "string"
        -      },
        -      "hucLevel": {
        -        "anyOf": [
        -          {
        -            "const": 2,
        -            "type": "number"
        -          },
        -          {
        -            "const": 4,
        -            "type": "number"
        -          },
        -          {
        -            "const": 6,
        -            "type": "number"
        -          },
        -          {
        -            "const": 8,
        -            "type": "number"
        -          }
        -        ],
        -        "description": "Exact HUC identifier width."
        -      }
        -    },
        -    "required": [
        -      "areaType",
        -      "aoi",
        -      "hucLevel"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "description": "National coverage selector.",
        +    "properties": {
        +      "aoi": {
        +        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "areaType": {
        +        "const": "us",
        +        "description": "National geography.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "areaType",
        +      "aoi"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "description": "Exact state selector.",
        +    "properties": {
        +      "aoi": {
        +        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "areaType": {
        +        "const": "state",
        +        "description": "State geography.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "areaType",
        +      "aoi"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "description": "Exact county selector.",
        +    "properties": {
        +      "aoi": {
        +        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "areaType": {
        +        "const": "county",
        +        "description": "County geography.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "areaType",
        +      "aoi"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "description": "Exact tribal selector.",
        +    "properties": {
        +      "aoi": {
        +        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "areaType": {
        +        "const": "tribal",
        +        "description": "Tribal geography.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "areaType",
        +      "aoi"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "description": "Exact climate division selector.",
        +    "properties": {
        +      "aoi": {
        +        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "areaType": {
        +        "const": "climate_division",
        +        "description": "Climate division geography.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "areaType",
        +      "aoi"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "description": "Bundled RFC code or exact name.",
        +    "properties": {
        +      "aoi": {
        +        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "areaType": {
        +        "const": "river_forecast_center",
        +        "description": "River Forecast Center geography.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "areaType",
        +      "aoi"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "description": "Exact watershed selector with matching HUC width.",
        +    "properties": {
        +      "aoi": {
        +        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "areaType": {
        +        "const": "huc",
        +        "description": "Watershed geography.",
        +        "type": "string"
        +      },
        +      "hucLevel": {
        +        "anyOf": [
        +          {
        +            "const": 2,
        +            "type": "number"
        +          },
        +          {
        +            "const": 4,
        +            "type": "number"
        +          },
        +          {
        +            "const": 6,
        +            "type": "number"
        +          },
        +          {
        +            "const": 8,
        +            "type": "number"
        +          }
        +        ],
        +        "description": "Exact HUC identifier width."
        +      }
        +    },
        +    "required": [
        +      "areaType",
        +      "aoi",
        +      "hucLevel"
        +    ],
        +    "type": "object"
        +  }
        +]
      • changedOutput schema / properties / resolvedAreas / items / properties / areaType / enum
        Previous value: -[
        -  "us",
        -  "state",
        -  "county",
        -  "huc",
        -  "tribal",
        -  "climate_division"
        -]New value: +[
        +  "us",
        +  "state",
        +  "county",
        +  "huc",
        +  "tribal",
        +  "climate_division",
        +  "river_forecast_center"
        +]
      • changedOutput schema / properties / snapshots / items / properties / areaType / enum
        Previous value: -[
        -  "us",
        -  "state",
        -  "county",
        -  "huc",
        -  "tribal",
        -  "climate_division"
        -]New value: +[
        +  "us",
        +  "state",
        +  "county",
        +  "huc",
        +  "tribal",
        +  "climate_division",
        +  "river_forecast_center"
        +]
      • changedOutput schema / properties / snapshots / items / properties / populationCountCumulative / description
        Previous value: -"Cumulative population in people, or null."New value: +"Cumulative population estimates in people, or null; see provenance.populationInterpretation."
    • Changeddrought_get_timeseries14 fields changed
      • changedInput schema / properties / areas / items / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "description": "National coverage selector.",
        -    "properties": {
        -      "aoi": {
        -        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "areaType": {
        -        "const": "us",
        -        "description": "National geography.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "areaType",
        -      "aoi"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "description": "Exact state selector.",
        -    "properties": {
        -      "aoi": {
        -        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "areaType": {
        -        "const": "state",
        -        "description": "State geography.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "areaType",
        -      "aoi"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "description": "Exact county selector.",
        -    "properties": {
        -      "aoi": {
        -        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "areaType": {
        -        "const": "county",
        -        "description": "County geography.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "areaType",
        -      "aoi"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "description": "Exact tribal selector.",
        -    "properties": {
        -      "aoi": {
        -        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "areaType": {
        -        "const": "tribal",
        -        "description": "Tribal geography.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "areaType",
        -      "aoi"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "description": "Exact climate division selector.",
        -    "properties": {
        -      "aoi": {
        -        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "areaType": {
        -        "const": "climate_division",
        -        "description": "Climate division geography.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "areaType",
        -      "aoi"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "description": "Exact watershed selector with matching HUC width.",
        -    "properties": {
        -      "aoi": {
        -        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "areaType": {
        -        "const": "huc",
        -        "description": "Watershed geography.",
        -        "type": "string"
        -      },
        -      "hucLevel": {
        -        "anyOf": [
        -          {
        -            "const": 2,
        -            "type": "number"
        -          },
        -          {
        -            "const": 4,
        -            "type": "number"
        -          },
        -          {
        -            "const": 6,
        -            "type": "number"
        -          },
        -          {
        -            "const": 8,
        -            "type": "number"
        -          }
        -        ],
        -        "description": "Exact HUC identifier width."
        -      }
        -    },
        -    "required": [
        -      "areaType",
        -      "aoi",
        -      "hucLevel"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "description": "National coverage selector.",
        +    "properties": {
        +      "aoi": {
        +        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "areaType": {
        +        "const": "us",
        +        "description": "National geography.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "areaType",
        +      "aoi"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "description": "Exact state selector.",
        +    "properties": {
        +      "aoi": {
        +        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "areaType": {
        +        "const": "state",
        +        "description": "State geography.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "areaType",
        +      "aoi"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "description": "Exact county selector.",
        +    "properties": {
        +      "aoi": {
        +        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "areaType": {
        +        "const": "county",
        +        "description": "County geography.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "areaType",
        +      "aoi"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "description": "Exact tribal selector.",
        +    "properties": {
        +      "aoi": {
        +        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "areaType": {
        +        "const": "tribal",
        +        "description": "Tribal geography.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "areaType",
        +      "aoi"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "description": "Exact climate division selector.",
        +    "properties": {
        +      "aoi": {
        +        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "areaType": {
        +        "const": "climate_division",
        +        "description": "Climate division geography.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "areaType",
        +      "aoi"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "description": "Bundled RFC code or exact name.",
        +    "properties": {
        +      "aoi": {
        +        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "areaType": {
        +        "const": "river_forecast_center",
        +        "description": "River Forecast Center geography.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "areaType",
        +      "aoi"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "description": "Exact watershed selector with matching HUC width.",
        +    "properties": {
        +      "aoi": {
        +        "description": "Exact geography identifier or state name; county names require a state and resolve exact names before unique suffix-free aliases.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "areaType": {
        +        "const": "huc",
        +        "description": "Watershed geography.",
        +        "type": "string"
        +      },
        +      "hucLevel": {
        +        "anyOf": [
        +          {
        +            "const": 2,
        +            "type": "number"
        +          },
        +          {
        +            "const": 4,
        +            "type": "number"
        +          },
        +          {
        +            "const": 6,
        +            "type": "number"
        +          },
        +          {
        +            "const": 8,
        +            "type": "number"
        +          }
        +        ],
        +        "description": "Exact HUC identifier width."
        +      }
        +    },
        +    "required": [
        +      "areaType",
        +      "aoi",
        +      "hucLevel"
        +    ],
        +    "type": "object"
        +  }
        +]
      • changedInput schema / properties / metric / description
        Previous value: -"Measure; population supports US, state and county only."New value: +"Measure; population supports US, state and county only and carries estimation assumptions in provenance.populationInterpretation."
      • changedOutput schema / properties / areas / items / properties / areaType / enum
        Previous value: -[
        -  "us",
        -  "state",
        -  "county",
        -  "huc",
        -  "tribal",
        -  "climate_division"
        -]New value: +[
        +  "us",
        +  "state",
        +  "county",
        +  "huc",
        +  "tribal",
        +  "climate_division",
        +  "river_forecast_center"
        +]
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `upstream_request_rejected`: USDM rejects a selector or date request. `staging_busy`: The bounded acquisition admission slots are occupied. `ambiguous_area`: Several exact names match. `unknown_area`: A geography name cannot resolve. `invalid_area`: Identifier or homogeneous area combination is invalid. `unsupported_metric`: Population is requested for an unsupported geography. `invalid_date_range`: Dates are impossible or reversed. `publication_unavailable`: No latest publication is available. `dataset_too_large`: The complete request exceeds bounded acquisition or metadata budgets. `upstream_shape_invalid`: Upstream data is malformed, duplicate or outside scope. `canvas_unavailable`: A complete large result requires an unavailable analytical provider. `staging_capacity_exhausted`: Retained analytical capacity is exhausted. `canvas_not_found`: The supplied canvas is absent or expired. `canvas_capacity_exhausted`: The analytical provider cannot mint another canvas. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `upstream_request_rejected`: USDM rejects a selector or date request. `staging_busy`: The bounded acquisition admission slots are occupied. `ambiguous_area`: Several exact names match. `unknown_area`: A geography name cannot resolve. `invalid_area`: Identifier or homogeneous area combination is invalid. `unsupported_metric`: Population is requested for an unsupported geography. `invalid_date_range`: Dates are impossible or reversed. `publication_unavailable`: No latest publication is available. `dataset_too_large`: The complete request exceeds acquisition or retained-data quotas. `upstream_shape_invalid`: Upstream data is malformed, duplicate or outside scope. `canvas_unavailable`: An explicit canvas token requires an unavailable analytical provider. `staging_capacity_exhausted`: Retained analytical capacity is exhausted. `canvas_not_found`: The supplied canvas is absent or expired. `canvas_capacity_exhausted`: The analytical provider cannot mint another canvas. Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / metadata_pages / additionalProperties / properties / next_offset / anyOf
        Previous value: -[
        -  {
        -    "maximum": 9007199254740991,
        -    "minimum": -9007199254740991,
        -    "type": "integer"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maximum": 9007199254740991,
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / metadata_pages / additionalProperties / properties / returned / description
        Previous value: -"Items in this inline first page."New value: +"Items in this inline first prefix."
      • changedOutput schema / properties / metadata_pages / additionalProperties / properties / returned / minimum
        Previous value: --9007199254740991New value: +0
      • changedOutput schema / properties / metadata_pages / additionalProperties / properties / total / minimum
        Previous value: --9007199254740991New value: +0
      • addedOutput schema / properties / metadata_pages / propertyNames / enum
        Added value: +[
        +  "areas",
        +  "summary",
        +  "missingAreas",
        +  "missingObservations"
        +]
      • changedOutput schema / properties / missingAreas / items / properties / areaType / enum
        Previous value: -[
        -  "us",
        -  "state",
        -  "county",
        -  "huc",
        -  "tribal",
        -  "climate_division"
        -]New value: +[
        +  "us",
        +  "state",
        +  "county",
        +  "huc",
        +  "tribal",
        +  "climate_division",
        +  "river_forecast_center"
        +]
      • changedOutput schema / properties / missingObservations / items / properties / area / properties / areaType / enum
        Previous value: -[
        -  "us",
        -  "state",
        -  "county",
        -  "huc",
        -  "tribal",
        -  "climate_division"
        -]New value: +[
        +  "us",
        +  "state",
        +  "county",
        +  "huc",
        +  "tribal",
        +  "climate_division",
        +  "river_forecast_center"
        +]
      • addedOutput schema / properties / provenance / properties / populationInterpretation
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Present when the workflow includes a supported population metric.",
        +  "properties": {
        +    "caveat": {
        +      "description": "Population assumptions and precision limitations.",
        +      "type": "string"
        +    },
        +    "methodologyUrl": {
        +      "description": "Official population estimation methodology.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "methodologyUrl",
        +    "caveat"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / rows / items / properties / areaType / enum
        Previous value: -[
        -  "us",
        -  "state",
        -  "county",
        -  "huc",
        -  "tribal",
        -  "climate_division"
        -]New value: +[
        +  "us",
        +  "state",
        +  "county",
        +  "huc",
        +  "tribal",
        +  "climate_division",
        +  "river_forecast_center"
        +]
      • changedOutput schema / properties / summary / items / properties / area / properties / areaType / enum
        Previous value: -[
        -  "us",
        -  "state",
        -  "county",
        -  "huc",
        -  "tribal",
        -  "climate_division"
        -]New value: +[
        +  "us",
        +  "state",
        +  "county",
        +  "huc",
        +  "tribal",
        +  "climate_division",
        +  "river_forecast_center"
        +]
    • Changeddrought_get_weeks_in_drought5 fields changed
      • changedInput schema / properties / limit / default
        Previous value: -50New value: +25
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum rows on this page; values above 200 are clamped with disclosure."New value: +"Default 25 rows per page; values above 200 are clamped with disclosure."
      • changedOutput schema / properties / county / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "description": "Canonical geography identity and known state or watershed attributes.",
        -    "properties": {
        -      "areaType": {
        -        "description": "Geography family.",
        -        "enum": [
        -          "us",
        -          "state",
        -          "county",
        -          "huc",
        -          "tribal",
        -          "climate_division"
        -        ],
        -        "type": "string"
        -      },
        -      "hucLevel": {
        -        "anyOf": [
        -          {
        -            "const": 2,
        -            "type": "number"
        -          },
        -          {
        -            "const": 4,
        -            "type": "number"
        -          },
        -          {
        -            "const": 6,
        -            "type": "number"
        -          },
        -          {
        -            "const": 8,
        -            "type": "number"
        -          }
        -        ],
        -        "description": "HUC width for watershed areas."
        -      },
        -      "id": {
        -        "description": "Canonical identifier, preserving leading zeroes.",
        -        "type": "string"
        -      },
        -      "name": {
        -        "description": "Source geography name.",
        -        "type": "string"
        -      },
        -      "state": {
        -        "description": "State postal code where known.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "areaType",
        -      "id",
        -      "name"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "description": "Canonical geography identity and known state or watershed attributes.",
        +    "properties": {
        +      "areaType": {
        +        "description": "Geography family.",
        +        "enum": [
        +          "us",
        +          "state",
        +          "county",
        +          "huc",
        +          "tribal",
        +          "climate_division",
        +          "river_forecast_center"
        +        ],
        +        "type": "string"
        +      },
        +      "hucLevel": {
        +        "anyOf": [
        +          {
        +            "const": 2,
        +            "type": "number"
        +          },
        +          {
        +            "const": 4,
        +            "type": "number"
        +          },
        +          {
        +            "const": 6,
        +            "type": "number"
        +          },
        +          {
        +            "const": 8,
        +            "type": "number"
        +          }
        +        ],
        +        "description": "HUC width for watershed areas."
        +      },
        +      "id": {
        +        "description": "Canonical identifier, preserving leading zeroes.",
        +        "type": "string"
        +      },
        +      "name": {
        +        "description": "Source geography name.",
        +        "type": "string"
        +      },
        +      "state": {
        +        "description": "State postal code where known.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "areaType",
        +      "id",
        +      "name"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `upstream_request_rejected`: USDM rejects a selector or date request. `ambiguous_area`: Several exact county names match. `unknown_area`: A county or state cannot resolve. `invalid_area`: Identifier or selector combination is invalid. `invalid_date_range`: Dates are impossible, reversed or shorter than minWeeks. `publication_unavailable`: No latest publication is available. `dataset_too_large`: Complete duration acquisition or metadata exceeds budgets. `upstream_shape_invalid`: Upstream durations are malformed or duplicate. `invalid_cursor`: Continuation is malformed, expired or filters changed. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `upstream_request_rejected`: USDM rejects a selector or date request. `ambiguous_area`: Several exact county names match. `unknown_area`: A county or state cannot resolve. `invalid_area`: Identifier or selector combination is invalid. `invalid_date_range`: Dates are impossible, reversed or shorter than minWeeks. `publication_unavailable`: No latest publication is available. `dataset_too_large`: Complete duration acquisition or cache exceeds resource quotas. `upstream_shape_invalid`: Upstream durations are malformed or duplicate. `invalid_cursor`: Continuation is malformed, expired or filters changed. Other values are possible when a failure originates below the handler."
      • addedOutput schema / properties / provenance / properties / populationInterpretation
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Present when the workflow includes a supported population metric.",
        +  "properties": {
        +    "caveat": {
        +      "description": "Population assumptions and precision limitations.",
        +      "type": "string"
        +    },
        +    "methodologyUrl": {
        +      "description": "Official population estimation methodology.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "methodologyUrl",
        +    "caveat"
        +  ],
        +  "type": "object"
        +}
    • Changeddrought_list_reference9 fields changed
      • changedInput schema / properties / limit / default
        Previous value: -50New value: +25
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum records on this page; values above 200 are clamped with disclosure."New value: +"Default 25 records per page; values above 200 are clamped with disclosure."
      • changedInput schema / properties / topic / description
        Previous value: -"Reference family to browse."New value: +"Reference family to browse; river_forecast_centers provides official RFC codes and names."
      • changedInput schema / properties / topic / enum
        Previous value: -[
        -  "categories",
        -  "dsci",
        -  "area_types",
        -  "coverage",
        -  "states",
        -  "counties",
        -  "tribal",
        -  "climate_divisions",
        -  "huc"
        -]New value: +[
        +  "categories",
        +  "dsci",
        +  "area_types",
        +  "coverage",
        +  "states",
        +  "counties",
        +  "tribal",
        +  "climate_divisions",
        +  "river_forecast_centers",
        +  "huc"
        +]
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `ambiguous_area`: Multiple exact normalized names match. `unknown_area`: The county state filter cannot resolve. `invalid_cursor`: The cursor is malformed or filters changed. `invalid_reference_filter`: Filters do not belong to the selected topic. `dataset_too_large`: A complete reference record exceeds the response budget. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `ambiguous_area`: Multiple exact normalized names match. `unknown_area`: The county state filter cannot resolve. `invalid_cursor`: The cursor is malformed or filters changed. `invalid_reference_filter`: Filters do not belong to the selected topic. Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "ambiguous_area",
        -  "unknown_area",
        -  "invalid_cursor",
        -  "invalid_reference_filter",
        -  "dataset_too_large"
        -]New value: +[
        +  "ambiguous_area",
        +  "unknown_area",
        +  "invalid_cursor",
        +  "invalid_reference_filter"
        +]
      • addedOutput schema / properties / provenance / properties / populationInterpretation
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Present when the workflow includes a supported population metric.",
        +  "properties": {
        +    "caveat": {
        +      "description": "Population assumptions and precision limitations.",
        +      "type": "string"
        +    },
        +    "methodologyUrl": {
        +      "description": "Official population estimation methodology.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "methodologyUrl",
        +    "caveat"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / records / items / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "description": "Canonical geography with source vintage.",
        -    "properties": {
        -      "areaType": {
        -        "description": "Geography family.",
        -        "enum": [
        -          "us",
        -          "state",
        -          "county",
        -          "huc",
        -          "tribal",
        -          "climate_division"
        -        ],
        -        "type": "string"
        -      },
        -      "currentUsdm": {
        -        "description": "Whether the county appears in the acquisition-week USDM response.",
        -        "type": "boolean"
        -      },
        -      "hucLevel": {
        -        "anyOf": [
        -          {
        -            "const": 2,
        -            "type": "number"
        -          },
        -          {
        -            "const": 4,
        -            "type": "number"
        -          },
        -          {
        -            "const": 6,
        -            "type": "number"
        -          },
        -          {
        -            "const": 8,
        -            "type": "number"
        -          }
        -        ],
        -        "description": "HUC width for watershed areas."
        -      },
        -      "id": {
        -        "description": "Canonical identifier, preserving leading zeroes.",
        -        "type": "string"
        -      },
        -      "name": {
        -        "description": "Source geography name.",
        -        "type": "string"
        -      },
        -      "sourceVintage": {
        -        "description": "Source dataset vintage.",
        -        "type": "string"
        -      },
        -      "state": {
        -        "description": "State postal code where known.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "areaType",
        -      "id",
        -      "name",
        -      "sourceVintage"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "description": "Named drought definition, coverage note or selector guidance.",
        -    "properties": {
        -      "categoricalFormula": {
        -        "description": "DSCI formula using categorical area percentages.",
        -        "type": "string"
        -      },
        -      "cumulativeFormula": {
        -        "description": "DSCI formula using cumulative area percentages.",
        -        "type": "string"
        -      },
        -      "description": {
        -        "description": "Definition or interpretation.",
        -        "type": "string"
        -      },
        -      "id": {
        -        "description": "Reference record identifier.",
        -        "type": "string"
        -      },
        -      "identifierFormat": {
        -        "description": "Accepted identifier syntax.",
        -        "type": "string"
        -      },
        -      "metrics": {
        -        "description": "Supported public metrics.",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "name": {
        -        "description": "Reference label.",
        -        "type": "string"
        -      },
        -      "percentile": {
        -        "description": "Official example percentile range.",
        -        "type": "string"
        -      },
        -      "spiSpei": {
        -        "description": "Official SPI/SPEI range.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "name",
        -      "description"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "description": "Canonical geography with source vintage.",
        +    "properties": {
        +      "areaType": {
        +        "description": "Geography family.",
        +        "enum": [
        +          "us",
        +          "state",
        +          "county",
        +          "huc",
        +          "tribal",
        +          "climate_division",
        +          "river_forecast_center"
        +        ],
        +        "type": "string"
        +      },
        +      "currentUsdm": {
        +        "description": "Whether the county appears in the acquisition-week USDM response.",
        +        "type": "boolean"
        +      },
        +      "hucLevel": {
        +        "anyOf": [
        +          {
        +            "const": 2,
        +            "type": "number"
        +          },
        +          {
        +            "const": 4,
        +            "type": "number"
        +          },
        +          {
        +            "const": 6,
        +            "type": "number"
        +          },
        +          {
        +            "const": 8,
        +            "type": "number"
        +          }
        +        ],
        +        "description": "HUC width for watershed areas."
        +      },
        +      "id": {
        +        "description": "Canonical identifier, preserving leading zeroes.",
        +        "type": "string"
        +      },
        +      "name": {
        +        "description": "Source geography name.",
        +        "type": "string"
        +      },
        +      "sourceVintage": {
        +        "description": "Source dataset vintage.",
        +        "type": "string"
        +      },
        +      "state": {
        +        "description": "State postal code where known.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "areaType",
        +      "id",
        +      "name",
        +      "sourceVintage"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "description": "Named drought definition, coverage note or selector guidance.",
        +    "properties": {
        +      "categoricalFormula": {
        +        "description": "DSCI formula using categorical area percentages.",
        +        "type": "string"
        +      },
        +      "cumulativeFormula": {
        +        "description": "DSCI formula using cumulative area percentages.",
        +        "type": "string"
        +      },
        +      "description": {
        +        "description": "Definition or interpretation.",
        +        "type": "string"
        +      },
        +      "id": {
        +        "description": "Reference record identifier.",
        +        "type": "string"
        +      },
        +      "identifierFormat": {
        +        "description": "Accepted identifier syntax.",
        +        "type": "string"
        +      },
        +      "metrics": {
        +        "description": "Supported public metrics.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "name": {
        +        "description": "Reference label.",
        +        "type": "string"
        +      },
        +      "percentile": {
        +        "description": "Official example percentile range.",
        +        "type": "string"
        +      },
        +      "spiSpei": {
        +        "description": "Official SPI/SPEI range.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "name",
        +      "description"
        +    ],
        +    "type": "object"
        +  }
        +]
      • changedOutput schema / properties / topic / enum
        Previous value: -[
        -  "categories",
        -  "dsci",
        -  "area_types",
        -  "coverage",
        -  "states",
        -  "counties",
        -  "tribal",
        -  "climate_divisions",
        -  "huc"
        -]New value: +[
        +  "categories",
        +  "dsci",
        +  "area_types",
        +  "coverage",
        +  "states",
        +  "counties",
        +  "tribal",
        +  "climate_divisions",
        +  "river_forecast_centers",
        +  "huc"
        +]
  2. 7 tool updates
    • First observeddrought_compare_areas
    • First observeddrought_dataframe_describe
    • First observeddrought_dataframe_query
    • First observeddrought_get_current_severity
    • First observeddrought_get_timeseries
    • First observeddrought_get_weeks_in_drought
    • First observeddrought_list_reference

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables querying weekly U.S. drought-severity statistics for the nation, states, and counties, including percent of area and population across None and D0–D4 categories. Supports optional date ranges for historical weekly maps.
    265 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Query FEMA disaster declarations, public assistance grants, housing aid, and NFIP flood insurance claims via MCP. Supports STDIO and Streamable HTTP.
    155 npm
    1
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables search and retrieval of calibrated SWAT+ watershed models, national groundwater lithology and PFAS inventories, plus API-key-secured ordering and downloading of custom watershed models.
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.