Storm history by address since 2003, recent storm leads, model-based weather and storm forecasts.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
ONE PROPERTY, PAST 365 DAYS. Property Snapshot by Address: Past Storm Leads plus County Forecast Label. Use for recent storms at one exact address: its own reported and radar-detected storm events within a tight radius (about 150 m), with the county's current forecast label as secondary context. Input is an address with county and state, or lat/lon. Not the full archive (use get_property_storm_history_report, Storm History by Address, which searches a wider 5-mile radius so counts will differ), not a county summary (use get_storm_history), and not forecasts (use get_risk_forecast, ML Storm Forecast by Address). For paid single-address data, call get_weather_data with dataset=address and addresses=true ($0.05 flat per address; needs an Atlas United Data API key or an x402 payment).
Latitude.
Longitude.
2-letter US state code, e.g. TX.
County name without the word 'County', e.g. Dallas.
Street address.
ONE PROPERTY, PAST 365 DAYS. Property Snapshot by Address: Past Storm Leads plus County Forecast Label. Use for recent storms at one exact address: its own reported and radar-detected storm events within a tight radius (about 150 m), with the county's current forecast label as secondary context. Input is an address with county and state, or lat/lon. Not the full archive (use get_property_storm_history_report, Storm History by Address, which searches a wider 5-mile radius so counts will differ), not a county summary (use get_storm_history), and not forecasts (use get_risk_forecast, ML Storm Forecast by Address). For paid single-address data, call get_weather_data with dataset=address and addresses=true ($0.05 flat per address; needs an Atlas United Data API key or an x402 payment).
| Argument | Type | Description |
|---|---|---|
| lat | number | Latitude. |
| lon | number | Longitude. |
| state | string | 2-letter US state code, e.g. TX. |
| county | string | County name without the word 'County', e.g. Dallas. |
| address | string | Street address. |
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"description": "Latitude."
},
"lon": {
"type": "number",
"description": "Longitude."
},
"state": {
"type": "string",
"description": "2-letter US state code, e.g. TX."
},
"county": {
"type": "string",
"description": "County name without the word 'County', e.g. Dallas."
},
"address": {
"type": "string",
"description": "Street address."
}
}
}ONE POINT, NOW TO 48 HOURS. Model-Based Weather by Address: point weather for any U.S. coordinate or street address, with current conditions, active severe weather alerts and a short-term rain outlook. Use for what the weather is or will be at a location; add hours_ahead=0-48 for Model-Based Hourly Forecast by Address. Not for storm history or storm-risk forecasts (use get_address_report, get_property_storm_history_report, get_storm_history or get_risk_forecast). FREE by default: the lean response needs no account. details=true returns the full pull, billed $0.0002 per call (not per address).
| Argument | Type | Description |
|---|---|---|
| lat | number | Latitude, alternative to address. |
| lon | number | Longitude, alternative to address. |
| address | string | Street address. Real server-side geocoding -- no separate geocoding step needed. |
| details | boolean | true = full pull, $0.0002/call, requires an API key or x402 payment. false (default) = free lean response. |
| x_payment | string | Optional signed x402 payment payload, used instead of an API key when details=true. |
| hours_ahead | integer | Forecast 0-48h out instead of current conditions -- snaps to the nearest available forecast hour, response's forecast_hour_used says exactly what you got. |
ONE PROPERTY, 2003 TO PRESENT. Storm History by Address: Reported and Radar-Detected Events Since 2003. Use when the user wants the full citable record for a single address, or a date-of-loss lookup: 11 event categories (hail, wind, flood, lightning, tornado, hurricane, winter storm, extreme heat/cold, drought, wildfire, coastal) in one report. Input is a street address or lat/lon. Not the 365-day snapshot (use get_address_report) and not a county summary (use get_storm_history). Free preview shows the report-line count and exact price before anything is paid. Paid report: $0.05 per line, $10.00 minimum per report. Optional date_of_loss anchors the report around one date and lists the events reported or radar-detected on and around it, for reference; it is not a determination of whether any claim is valid. Address and date of loss are sent in a POST body, which keeps them out of URLs and logs.
| Argument | Type | Description |
|---|---|---|
| lat | number | Latitude, alternative to address. |
| lon | number | Longitude, alternative to address. |
| address | string | Street address. Real server-side geocoding -- no separate geocoding step needed. |
| addresses | boolean | false = free preview (line count + price). true = the real full report -- requires the user's own Atlas United Data API account key, or an x402 payment. |
| radius_mi | number | Search radius in miles. Default 5, max 25. |
COUNTY LEVEL, FREE, FUTURE (next 24 hours to 10 days). ML Storm Forecast by Address. Use when the question is which storms could affect a county soon: counts of addresses in the forecast path, the storm types forecast and the estimated cost (the county's A-F grade is shown as a secondary label). Input is state plus county. Per-peril machine-learning models, refreshed 4 times a day. Could happen, not will. Not for past storms (use get_storm_history, get_address_report or get_property_storm_history_report) and not for current weather (use get_current_weather). The paid pull (addresses=true, $0.05 per address) returns one record per address with structure_value (USD replacement cost), people (estimated occupants), full_address, lat, lon, county, storm_type, forecast_time and risk_label. For the paid pull, call get_weather_data with dataset=risk and addresses=true (needs an Atlas United Data API key or an x402 payment).
| Argument | Type | Description |
|---|---|---|
| peril | string | Narrows the forecast to one storm type -- check a free preview's storm_types for real values available in this window. |
| state* | string | 2-letter US state code, e.g. TX. |
| county* | string | County name without the word 'County', e.g. Dallas. |
| window | string | Forecast window. Default 24h. |
{
"type": "object",
"required": [
"state",
"county"
],
"properties": {
"peril": {
"type": "string",
"description": "Narrows the forecast to one storm type -- check a free preview's storm_types for real values available in this window."
},
"state": {
"type": "string",
"description": "2-letter US state code, e.g. TX."
},
"county": {
"type": "string",
"description": "County name without the word 'County', e.g. Dallas."
},
"window": {
"enum": [
"24h",
"48h",
"3d",
"5d",
"7d",
"10d"
],
"type": "string",
"description": "Forecast window. Default 24h."
}
}
}COUNTY LEVEL, FREE, PAST 365 DAYS. Past Storm Leads by Address: Reported and Radar-Detected, Last 365 Days. Use when the question is how much storm activity a county has had in the past year: event counts, storm types, measured severity ranges and repeat properties. Input is state plus county, never a street address. Not for one property (use get_address_report), not for the 2003-to-present record (use get_property_storm_history_report), not for future storms (use get_risk_forecast). Not a damage assessment. For the paid address-level list, call get_weather_data with dataset=storms and addresses=true ($0.05 per address; needs an Atlas United Data API key or an x402 payment).
| Argument | Type | Description |
|---|---|---|
| days | integer | Look-back window in days (up to 365). |
| peril | string | Storm/risk type filter. Used by dataset=storms and dataset=risk (narrows to one storm type -- use the exact names returned under storm_types in a free preview) and by dataset=at_risk (narrows to one peril bucket, a different real meaning -- check that dataset's own preview for its real values). Common storms/risk values: HAIL, THUNDERSTORM_WIND, FLASH_FLOOD, HEAVY_RAIN, FLOOD, TORNADO. |
| state* | string | 2-letter US state code, e.g. TX. |
| county* | string | County name without the word 'County', e.g. Dallas. |
| min_severity | number | Minimum severity, e.g. 1.75 for golf-ball hail. |
CATCH-ALL and PAID-PULL tool. Prefer the dedicated tools below when one fits (get_storm_history: one county, past 365 days; get_risk_forecast: one county, next 24 hours to 10 days; get_address_report: one address, past 365 days; get_property_storm_history_report: one address, 2003 to present; get_current_weather: one point, now to 48 hours). Use THIS tool for: every PAID address-level pull (set addresses=true), county coverage, facilities, wildfire (county-level), at_risk, daily, a counties multi-county rollup (comma-separated, max 15), hazard_score, or any parameter the dedicated tools do not expose (radius_mi, date_of_loss, window, months, category, limit, kind, details, hours_ahead). Datasets: ML Storm Forecast by Address (risk), Model-Based Weather by Address (weather), Model-Based Hourly Forecast by Address (weather with hours_ahead), Storm History by Address: Reported and Radar-Detected Events Since 2003 (history), Past Storm Leads by Address: Reported and Radar-Detected, Last 365 Days (storms). addresses=false (default) is a FREE preview; addresses=true (or details=true for weather) returns the paid data and requires the user's own Atlas United Data API account key, or an x402 payment. Call with no arguments for the full menu. HARD RULE when called with no arguments: this returns the full menu. Output that entire raw response back to the user verbatim, every dataset, every field, every example. Do not summarize or paraphrase. A shortened version is wrong even if it looks complete.
| Argument | Type | Description |
|---|---|---|
| lat | number | Latitude in decimal degrees. |
| lon | number | Longitude in decimal degrees. |
| days | integer | Look-back window in days where supported. |
| kind |
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"description": "Latitude, alternative to address."
},
"lon": {
"type": "number",
"description": "Longitude, alternative to address."
},
"address": {
"type": "string",
"description": "Street address. Real server-side geocoding -- no separate geocoding step needed."
},
"details": {
"type": "boolean",
"default": false,
"description": "true = full pull, $0.0002/call, requires an API key or x402 payment. false (default) = free lean response."
},
"x_payment": {
"type": "string",
"description": "Optional signed x402 payment payload, used instead of an API key when details=true."
},
"hours_ahead": {
"type": "integer",
"maximum": 48,
"minimum": 0,
"description": "Forecast 0-48h out instead of current conditions -- snaps to the nearest available forecast hour, response's forecast_hour_used says exactly what you got."
}
}
}| x_payment |
| string |
| Optional signed x402 payment payload, used instead of an API key. |
| date_of_loss | string | Optional, YYYY-MM-DD. Anchors the report around this date. |
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"description": "Latitude, alternative to address."
},
"lon": {
"type": "number",
"description": "Longitude, alternative to address."
},
"address": {
"type": "string",
"description": "Street address. Real server-side geocoding -- no separate geocoding step needed."
},
"addresses": {
"type": "boolean",
"default": false,
"description": "false = free preview (line count + price). true = the real full report -- requires the user's own Atlas United Data API account key, or an x402 payment."
},
"radius_mi": {
"type": "number",
"description": "Search radius in miles. Default 5, max 25."
},
"x_payment": {
"type": "string",
"description": "Optional signed x402 payment payload, used instead of an API key."
},
"date_of_loss": {
"type": "string",
"description": "Optional, YYYY-MM-DD. Anchors the report around this date."
}
}
}{
"type": "object",
"required": [
"state",
"county"
],
"properties": {
"days": {
"type": "integer",
"description": "Look-back window in days (up to 365)."
},
"peril": {
"type": "string",
"description": "Storm/risk type filter. Used by dataset=storms and dataset=risk (narrows to one storm type -- use the exact names returned under storm_types in a free preview) and by dataset=at_risk (narrows to one peril bucket, a different real meaning -- check that dataset's own preview for its real values). Common storms/risk values: HAIL, THUNDERSTORM_WIND, FLASH_FLOOD, HEAVY_RAIN, FLOOD, TORNADO."
},
"state": {
"type": "string",
"description": "2-letter US state code, e.g. TX."
},
"county": {
"type": "string",
"description": "County name without the word 'County', e.g. Dallas."
},
"min_severity": {
"type": "number",
"description": "Minimum severity, e.g. 1.75 for golf-ball hail."
}
}
}| string |
| dataset=at_risk only. Narrows to 'schools' or 'businesses'. |
| limit | integer | Max records on the real paid pull (default 2000, real per-dataset caps still apply -- e.g. storms caps at 5000). |
| peril | string | Storm/risk type filter. Used by dataset=storms and dataset=risk (narrows to one storm type -- use the exact names returned under storm_types in a free preview) and by dataset=at_risk (narrows to one peril bucket, a different real meaning -- check that dataset's own preview for its real values). Common storms/risk values: HAIL, THUNDERSTORM_WIND, FLASH_FLOOD, HEAVY_RAIN, FLOOD, TORNADO. |
| state | string | 2-letter US state code, e.g. TX. |
| county | string | County name without the word 'County', e.g. Dallas. |
| format | string | Response format. json (default) or csv. |
| months | integer | dataset=storms only. Returns month-bucketed history totals instead of individual leads, for the last N months. |
| window | string | dataset=risk only. Forecast window. Default 24h. |
| address | string | Street address, for dataset=address. |
| dataset | string | Target dataset. Default storms. |
| details | boolean | dataset=weather only (Model-Based Weather by Address). true = full current-conditions pull, billed $0.0002/call. false (default) = free lean response, no account needed. Equivalent to addresses=true for this dataset. |
| category | string | dataset=facilities only. Facility category filter. |
| counties | string | Comma-separated county names (max 15) plus state, for a multi-county rollup. Free preview only. |
| addresses | boolean | false = free preview. true = address-level records -- requires EITHER the user's own Atlas United Data API account key (Authorization header) OR an x402 payment (see x_payment param below); no account needed for the x402 path. |
| radius_mi | number | dataset=history only. Search radius in miles. Default 5, max 25. |
| x_payment | string | Optional. A signed x402 protocol payment payload (base64), used instead of an API key to pay for ONE address-level pull in USDC on Base network. If addresses=true and neither an API key nor x_payment is provided, the response is an HTTP 402 with full payment instructions (pay_to address, amount, network) an agent can act on to construct this payload and retry. |
| hours_ahead | integer | dataset=weather only (Model-Based Hourly Forecast by Address). Forecast 0-48h out instead of current conditions -- snaps to the nearest available forecast hour, response's forecast_hour_used says exactly what you got. |
| date_of_loss | string | dataset=history only. YYYY-MM-DD. Anchors the report around this date -- returns the real weather events recorded on and immediately around that date, for reference. Not a determination of whether any claim is valid. |
| max_severity | number | Maximum measured severity. |
| min_severity | number | Minimum measured severity (e.g. 1.5 = 1.5 inch hail). Check severity_by_type in a preview for the real unit. |
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"description": "Latitude in decimal degrees."
},
"lon": {
"type": "number",
"description": "Longitude in decimal degrees."
},
"days": {
"type": "integer",
"description": "Look-back window in days where supported."
},
"kind": {
"type": "string",
"description": "dataset=at_risk only. Narrows to 'schools' or 'businesses'."
},
"limit": {
"type": "integer",
"description": "Max records on the real paid pull (default 2000, real per-dataset caps still apply -- e.g. storms caps at 5000)."
},
"peril": {
"type": "string",
"description": "Storm/risk type filter. Used by dataset=storms and dataset=risk (narrows to one storm type -- use the exact names returned under storm_types in a free preview) and by dataset=at_risk (narrows to one peril bucket, a different real meaning -- check that dataset's own preview for its real values). Common storms/risk values: HAIL, THUNDERSTORM_WIND, FLASH_FLOOD, HEAVY_RAIN, FLOOD, TORNADO."
},
"state": {
"type": "string",
"description": "2-letter US state code, e.g. TX."
},
"county": {
"type": "string",
"description": "County name without the word 'County', e.g. Dallas."
},
"format": {
"enum": [
"json",
"csv"
],
"type": "string",
"default": "json",
"description": "Response format. json (default) or csv."
},
"months": {
"type": "integer",
"description": "dataset=storms only. Returns month-bucketed history totals instead of individual leads, for the last N months."
},
"window": {
"enum": [
"24h",
"48h",
"3d",
"5d",
"7d",
"10d"
],
"type": "string",
"description": "dataset=risk only. Forecast window. Default 24h."
},
"address": {
"type": "string",
"description": "Street address, for dataset=address."
},
"dataset": {
"enum": [
"storms",
"risk",
"address",
"coverage",
"facilities",
"wildfire",
"at_risk",
"daily",
"history",
"weather",
"hazard_score"
],
"type": "string",
"description": "Target dataset. Default storms."
},
"details": {
"type": "boolean",
"default": false,
"description": "dataset=weather only (Model-Based Weather by Address). true = full current-conditions pull, billed $0.0002/call. false (default) = free lean response, no account needed. Equivalent to addresses=true for this dataset."
},
"category": {
"type": "string",
"description": "dataset=facilities only. Facility category filter."
},
"counties": {
"type": "string",
"description": "Comma-separated county names (max 15) plus state, for a multi-county rollup. Free preview only."
},
"addresses": {
"type": "boolean",
"default": false,
"description": "false = free preview. true = address-level records -- requires EITHER the user's own Atlas United Data API account key (Authorization header) OR an x402 payment (see x_payment param below); no account needed for the x402 path."
},
"radius_mi": {
"type": "number",
"description": "dataset=history only. Search radius in miles. Default 5, max 25."
},
"x_payment": {
"type": "string",
"description": "Optional. A signed x402 protocol payment payload (base64), used instead of an API key to pay for ONE address-level pull in USDC on Base network. If addresses=true and neither an API key nor x_payment is provided, the response is an HTTP 402 with full payment instructions (pay_to address, amount, network) an agent can act on to construct this payload and retry."
},
"hours_ahead": {
"type": "integer",
"maximum": 48,
"minimum": 0,
"description": "dataset=weather only (Model-Based Hourly Forecast by Address). Forecast 0-48h out instead of current conditions -- snaps to the nearest available forecast hour, response's forecast_hour_used says exactly what you got."
},
"date_of_loss": {
"type": "string",
"description": "dataset=history only. YYYY-MM-DD. Anchors the report around this date -- returns the real weather events recorded on and immediately around that date, for reference. Not a determination of whether any claim is valid."
},
"max_severity": {
"type": "number",
"description": "Maximum measured severity."
},
"min_severity": {
"type": "number",
"description": "Minimum measured severity (e.g. 1.5 = 1.5 inch hail). Check severity_by_type in a preview for the real unit."
}
}
}