us-drought-monitor-mcp-server
Server Details
Query U.S. Drought Monitor severity, DSCI, population, and drought duration.
- 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
Scored across 7 tools
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.
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.
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.
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 toolsdrought_compare_areasCompare drought severity across areasARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | No | Complete ranking or staged preview. |
| unit | No | Severity unit. |
| error | No | Present when the call failed. Absent on success. |
| scope | No | Compared geography scope. |
| state | No | Resolved county state or null. |
| metric | No | Compared severity measure. |
| notice | No | Empty comparison or preview continuation guidance. |
| staging | No | Complete ranking table when staged. |
| changeUnit | No | Difference unit. |
| provenance | No | Actual sources and attribution. |
| totalCount | No | Complete comparable population before preview selection. |
| limitNotice | No | Disclosure when the requested limit was clamped. |
| comparedCount | No | Complete comparable population. |
| excludedAreas | No | Every area lacking a required value. |
| targetMapDate | No | Exact target Tuesday. |
| effectiveLimit | No | Effective preview ceiling after clamping to 200. |
| includedStates | No | Actual supported included state postal codes. |
| baselineMapDate | No | Exact baseline Tuesday or null. |
TDQS
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.
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.
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.
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.
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.
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 tablesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| canvas_id | Yes | Token returned by a drought producer. | |
| table_name | No | Table name from the stage handle; omit for schema summaries. | |
| metadata_field | No | Retained metadata collection to page; requires table_name. | |
| metadata_limit | No | Default 20 metadata items per page; values above 100 are clamped with disclosure. | |
| metadata_offset | No | Items to skip in the retained metadata snapshot. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| tables | No | Tables only in this specified canvas. |
| canvas_id | No | Supplied canvas token. |
| expires_at | No | Actual canvas expiry. |
| totalCount | No | Total items in the requested retained metadata collection. |
| limitNotice | No | Disclosure when metadata_limit was clamped. |
| metadata_page | No | Requested count of complete metadata items, fewer only at exhaustion. |
| effectiveLimit | No | Effective metadata page ceiling after clamping to 100. |
TDQS
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.
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.
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.
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.
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.
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 dataARead-onlyInspect
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(*).
| Name | Required | Description | Default |
|---|---|---|---|
| sql | Yes | One DuckDB read expression with an optional terminal semicolon; staged tables only. | |
| limit | No | Default 25 rows per page; values above 500 are clamped with disclosure. | |
| offset | No | Rows to skip in the stable ordered query. | |
| canvas_id | Yes | Token returned by a drought producer. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | Requested maximum page rows. |
| rows | No | Complete projected values on this page. |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Complete rows shown on the truncated page. |
| notice | No | Empty-result or continuation guidance. |
| offset | No | Rows skipped by this query. |
| columns | No | Projected column names in order. |
| has_more | No | Whether another page remains. |
| canvas_id | No | Supplied canvas token. |
| truncated | No | More query rows remain beyond this page. |
| limitNotice | No | Disclosure when the requested limit was clamped. |
| next_offset | No | Continue with this offset and identical SQL, or null. |
| countIsExact | No | True only when the page exhausts the query at offset zero. |
| returnedCount | No | Number of rows returned. |
| tableMetadata | No | Bounded table identity and source provenance. |
| effectiveLimit | No | Effective page ceiling after clamping to 500. |
TDQS
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.
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.
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.
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.
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.
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 snapshotARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| area | Yes | One exact geography selector. | |
| date | No | Calendar date YYYY-MM-DD; defaults to latest published map. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| found | No | At least one complete severity snapshot exists. |
| notice | No | Missing observation guidance. |
| guidance | No | Missing-data or coverage guidance. |
| snapshots | No | Complete required severity components for each area. |
| provenance | No | Actual sources and attribution. |
| availableFrom | No | First published map. |
| latestMapDate | No | Latest actually published map. |
| requestedArea | No | Original selector. |
| requestedDate | No | Requested date, or null for latest. |
| resolvedAreas | No | Resolved canonical areas. |
| effectiveMapDate | No | Containing Tuesday. |
TDQS
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.
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.
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.
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.
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.
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 observationsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| areas | Yes | Explicit homogeneous geographies. | |
| metric | No | Measure; population supports US, state and county only and carries estimation assumptions in provenance.populationInterpretation. | area_percent |
| endDate | Yes | Last requested calendar date, YYYY-MM-DD. | |
| canvas_id | No | Canvas token from a previous drought producer to reuse when staging. | |
| startDate | Yes | First requested calendar date, YYYY-MM-DD. | |
| statisticsType | No | Overlapping cumulative or exclusive categorical buckets. | cumulative |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | No | Complete inline rows or exact staged preview. |
| unit | No | Bucket unit. |
| areas | No | Resolved deduplicated areas. |
| error | No | Present when the call failed. Absent on success. |
| metric | No | Selected metric. |
| notice | No | Empty or partial-data guidance. |
| staging | No | Complete analytical table when staged. |
| summary | No | Full-data area summaries. |
| guidance | No | Coverage guidance for known legacy Connecticut counties. |
| rowCount | No | Complete observation count. |
| provenance | No | Actual sources and attribution. |
| missingAreas | No | Areas without metric observations. |
| latestMapDate | No | Latest map actually published. |
| effectiveRange | No | Published coverage intersection. |
| metadata_pages | No | Present only when complete metadata requires automatic continuation. |
| requestedRange | No | Original requested dates. |
| statisticsType | No | Selected representation. |
| missingObservations | No | Missing metric and DSCI dates. |
TDQS
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.
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.
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.
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.
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.
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 droughtARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Window-bounded consecutive streaks or qualifying week counts. | consecutive |
| limit | No | Default 25 rows per page; values above 200 are clamped with disclosure. | |
| county | No | County FIPS or exact/unique suffix-free county name, state; mutually exclusive with states. | |
| cursor | No | Continuation returned with identical filters. | |
| states | No | Exact state postal, FIPS or full names; mutually exclusive with county. | |
| endDate | Yes | Last requested date, YYYY-MM-DD. | |
| minWeeks | Yes | Minimum weeks, no more than requested inclusive map weeks. | |
| startDate | Yes | First requested date, YYYY-MM-DD. | |
| minCategory | Yes | Minimum drought category. |
Output Schema
| Name | Required | Description |
|---|---|---|
| mode | No | Selected duration mode. |
| rows | No | Complete authoritative rows on this page. |
| error | No | Present when the call failed. Absent on success. |
| county | No | Resolved exact county or null. |
| notice | No | Empty threshold or coverage guidance. |
| states | No | Resolved supported state postal codes. |
| hasMore | No | Another page remains. |
| guidance | No | Coverage guidance for known legacy Connecticut counties. |
| minWeeks | No | Minimum qualifying map weeks. |
| nextCursor | No | Query-bound continuation, or null. |
| provenance | No | Actual sources and attribution. |
| totalCount | No | Full filtered result count. |
| limitNotice | No | Disclosure when the requested limit was clamped. |
| minCategory | No | Minimum category. |
| latestMapDate | No | Latest actually published map. |
| thresholdRule | No | County qualifies if any area meets category or worse. |
| effectiveLimit | No | Effective page ceiling after clamping to 200. |
| effectiveRange | No | Published map-week coverage intersection. |
| requestedRange | No | Original dates. |
TDQS
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.
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.
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.
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.
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.
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 dataARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default 25 records per page; values above 200 are clamped with disclosure. | |
| state | No | County or climate-division filter: exact state postal code, two-digit FIPS or full name. | |
| topic | Yes | Reference family to browse; river_forecast_centers provides official RFC codes and names. | |
| cursor | No | Continuation cursor from the previous page with the same filters. | |
| hucLevel | No | Required for huc; exact identifier width. | |
| parentHuc | No | Existing parent HUC at level 2, 4 or 6, shorter than hucLevel; blank is omitted. | |
| nameContains | No | All normalized tokens must appear in the reference name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| topic | No | Selected reference family. |
| notice | No | Guidance when no names match. |
| hasMore | No | Whether another page remains. |
| records | No | Complete records on this page. |
| nextCursor | No | Continuation with identical filters, or null. |
| provenance | No | Source attribution and acquisition time. |
| totalCount | No | Count after filtering, before pagination. |
| limitNotice | No | Disclosure when the requested limit was clamped. |
| bundleVersion | No | Generated reference bundle version. |
| effectiveLimit | No | Effective page ceiling after clamping to 200. |
| sourceMetadata | No | Source vintages and SHA-256 evidence. |
TDQS
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.
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.
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.
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.
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.
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.
7 tool updates
- Changed
drought_compare_areas5 fields changed- changed
Input schema / oneOfPrevious 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" + } +] - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious 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." - changed
Output schema / properties / excludedAreas / items / properties / area / properties / areaType / enumPrevious value: -[ - "us", - "state", - "county", - "huc", - "tribal", - "climate_division" -]New value: +[ + "us", + "state", + "county", + "huc", + "tribal", + "climate_division", + "river_forecast_center" +] - added
Output schema / properties / provenance / properties / populationInterpretationAdded 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" +} - changed
Output schema / properties / rows / items / properties / areaType / enumPrevious value: -[ - "us", - "state", - "county", - "huc", - "tribal", - "climate_division" -]New value: +[ + "us", + "state", + "county", + "huc", + "tribal", + "climate_division", + "river_forecast_center" +]
- Changed
drought_dataframe_describe7 fields changed- changed
Input schema / properties / metadata_limit / descriptionPrevious value: -"Maximum metadata items, further bounded by response budgets."New value: +"Default 20 metadata items per page; values above 100 are clamped with disclosure." - changed
Input schema / properties / metadata_limit / maximumPrevious value: -100New value: +9007199254740991 - added
Output schema / properties / effectiveLimitAdded value: +{ + "description": "Effective metadata page ceiling after clamping to 100.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious 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." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious 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" +] - added
Output schema / properties / limitNoticeAdded value: +{ + "description": "Disclosure when metadata_limit was clamped.", + "type": "string" +} - changed
Output schema / properties / metadata_page / descriptionPrevious value: -"One complete bounded metadata page for a named table."New value: +"Requested count of complete metadata items, fewer only at exhaustion."
- Changed
drought_dataframe_query4 fields changed- changed
Input schema / properties / limit / defaultPrevious value: -100New value: +25 - changed
Input schema / properties / limit / descriptionPrevious 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." - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious 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." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious 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" +]
- Changed
drought_get_current_severity7 fields changed- changed
Input schema / properties / area / oneOfPrevious 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" + } +] - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious 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." - added
Output schema / properties / provenance / properties / populationInterpretationAdded 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" +} - changed
Output schema / properties / requestedArea / oneOfPrevious 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" + } +] - changed
Output schema / properties / resolvedAreas / items / properties / areaType / enumPrevious value: -[ - "us", - "state", - "county", - "huc", - "tribal", - "climate_division" -]New value: +[ + "us", + "state", + "county", + "huc", + "tribal", + "climate_division", + "river_forecast_center" +] - changed
Output schema / properties / snapshots / items / properties / areaType / enumPrevious value: -[ - "us", - "state", - "county", - "huc", - "tribal", - "climate_division" -]New value: +[ + "us", + "state", + "county", + "huc", + "tribal", + "climate_division", + "river_forecast_center" +] - changed
Output schema / properties / snapshots / items / properties / populationCountCumulative / descriptionPrevious value: -"Cumulative population in people, or null."New value: +"Cumulative population estimates in people, or null; see provenance.populationInterpretation."
- Changed
drought_get_timeseries14 fields changed- changed
Input schema / properties / areas / items / oneOfPrevious 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" + } +] - changed
Input schema / properties / metric / descriptionPrevious 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." - changed
Output schema / properties / areas / items / properties / areaType / enumPrevious value: -[ - "us", - "state", - "county", - "huc", - "tribal", - "climate_division" -]New value: +[ + "us", + "state", + "county", + "huc", + "tribal", + "climate_division", + "river_forecast_center" +] - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious 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." - changed
Output schema / properties / metadata_pages / additionalProperties / properties / next_offset / anyOfPrevious value: -[ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } +] - changed
Output schema / properties / metadata_pages / additionalProperties / properties / returned / descriptionPrevious value: -"Items in this inline first page."New value: +"Items in this inline first prefix." - changed
Output schema / properties / metadata_pages / additionalProperties / properties / returned / minimumPrevious value: --9007199254740991New value: +0 - changed
Output schema / properties / metadata_pages / additionalProperties / properties / total / minimumPrevious value: --9007199254740991New value: +0 - added
Output schema / properties / metadata_pages / propertyNames / enumAdded value: +[ + "areas", + "summary", + "missingAreas", + "missingObservations" +] - changed
Output schema / properties / missingAreas / items / properties / areaType / enumPrevious value: -[ - "us", - "state", - "county", - "huc", - "tribal", - "climate_division" -]New value: +[ + "us", + "state", + "county", + "huc", + "tribal", + "climate_division", + "river_forecast_center" +] - changed
Output schema / properties / missingObservations / items / properties / area / properties / areaType / enumPrevious value: -[ - "us", - "state", - "county", - "huc", - "tribal", - "climate_division" -]New value: +[ + "us", + "state", + "county", + "huc", + "tribal", + "climate_division", + "river_forecast_center" +] - added
Output schema / properties / provenance / properties / populationInterpretationAdded 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" +} - changed
Output schema / properties / rows / items / properties / areaType / enumPrevious value: -[ - "us", - "state", - "county", - "huc", - "tribal", - "climate_division" -]New value: +[ + "us", + "state", + "county", + "huc", + "tribal", + "climate_division", + "river_forecast_center" +] - changed
Output schema / properties / summary / items / properties / area / properties / areaType / enumPrevious value: -[ - "us", - "state", - "county", - "huc", - "tribal", - "climate_division" -]New value: +[ + "us", + "state", + "county", + "huc", + "tribal", + "climate_division", + "river_forecast_center" +]
- Changed
drought_get_weeks_in_drought5 fields changed- changed
Input schema / properties / limit / defaultPrevious value: -50New value: +25 - changed
Input schema / properties / limit / descriptionPrevious 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." - changed
Output schema / properties / county / anyOfPrevious 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" + } +] - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious 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." - added
Output schema / properties / provenance / properties / populationInterpretationAdded 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" +}
- Changed
drought_list_reference9 fields changed- changed
Input schema / properties / limit / defaultPrevious value: -50New value: +25 - changed
Input schema / properties / limit / descriptionPrevious 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." - changed
Input schema / properties / topic / descriptionPrevious value: -"Reference family to browse."New value: +"Reference family to browse; river_forecast_centers provides official RFC codes and names." - changed
Input schema / properties / topic / enumPrevious 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" +] - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious 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." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "ambiguous_area", - "unknown_area", - "invalid_cursor", - "invalid_reference_filter", - "dataset_too_large" -]New value: +[ + "ambiguous_area", + "unknown_area", + "invalid_cursor", + "invalid_reference_filter" +] - added
Output schema / properties / provenance / properties / populationInterpretationAdded 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" +} - changed
Output schema / properties / records / items / anyOfPrevious 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" + } +] - changed
Output schema / properties / topic / enumPrevious 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" +]
7 tool updates
- First observed
drought_compare_areas - First observed
drought_dataframe_describe - First observed
drought_dataframe_query - First observed
drought_get_current_severity - First observed
drought_get_timeseries - First observed
drought_get_weeks_in_drought - First observed
drought_list_reference
Related MCP Connectors
Query NASA POWER solar, wind, building, and agroclimatology data.
Query FEMA disaster declarations, public assistance grants, housing aid, and NFIP claims.
Query real-time and historical USGS water data from ~8,000 stream gages and groundwater wells.
Current drought conditions and severity across the United States
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables 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 npmMIT
- AlicenseNot gradedqualityAmaintenanceQuery FEMA disaster declarations, public assistance grants, housing aid, and NFIP flood insurance claims via MCP. Supports STDIO and Streamable HTTP.155 npm1Apache 2.0
- FlicenseNot gradedqualityDmaintenanceMCP server for DMAP-AI drought monitoring and SPI drought analysis using NASA POWER and ERA5-Land/CDS data.-

SWATGenX MCP Serverofficial
AlicenseNot gradedqualityCmaintenanceEnables 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.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.