> ## Documentation Index
> Fetch the complete documentation index at: https://docs.oneshotagent.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Storm Events

> List the severe weather events recorded in a US county since a date, newest first, with magnitude, deaths, injuries and damage.

Lists the severe weather events the US National Oceanic and Atmospheric Administration recorded in a US county, parish or independent city since 1950, newest first: type, begin and end time, location, magnitude, deaths, injuries and property and crop damage. Events appear about three months after they happen; for the last three days use Hail and Wind Reports.

## Authentication

Requires x402 payment in the `payment-signature` header.

## Request Body

**state** `string` *required*

USPS state code, for example OK; DC, PR, VI, GU and AS are accepted. One of `AL`, `AK`, `AZ`, `AR`, `CA`, `CO`, `CT`, `DE`, `DC`, `FL`, `GA`, `HI`, `ID`, `IL`, `IN`, `IA`, `KS`, `KY`, `LA`, `ME`, `MD`, `MA`, `MI`, `MN`, `MS`, `MO`, `MT`, `NE`, `NV`, `NH`, `NJ`, `NM`, `NY`, `NC`, `ND`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VT`, `VA`, `WA`, `WV`, `WI`, `WY`, `PR`, `VI`, `GU`, `AS`.

**county** `string` *required*

County, parish or independent city as the source names it, for example Cleveland, Calcasieu Parish or City of Richmond. 1 to 60 characters. Letters, digits, spaces, periods, apostrophes, parentheses and hyphens only.

**since** `string`

Earliest event date; default ten years before the call. Use YYYY-MM-DD.

**until** `string`

Latest event date; default the day of the call. Use YYYY-MM-DD.

**event\_types** `string[]`

Event types to return, as the source names them; omitted, every type.

**limit** `integer`

Most events to return. From 1 to 200. Defaults to `50`.

<Snippet file="audit-context-params.mdx" />

## Response (200 OK)

Top-level envelope: `success` (boolean) and `data` (object). All fields below are nested under `data`.

**data.request\_id** `string`

Durable job ID for audit and lookup

**data.status** `string`

Job status: `completed`

**data.tool** `string`

Always `place_storm_events`

**data.result** `object`

The answer, described under Result below

**data.evidence** `object`

Where the answer came from and when

**data.evidence.source** `string`

The public body the data comes from. Always `US National Oceanic and Atmospheric Administration`.

**data.evidence.source\_kind** `string`

`public` when the data comes from a public body, `commercial` otherwise

**data.evidence.retrieved\_at** `string`

When the lookup was made, as an ISO 8601 UTC time

**data.evidence.as\_of** `string | null`

When the source says the fact was last updated, or `null` when the source gives no date

## Result

Nested under `data.result`.

**data.result.county\_found** `boolean`

False when the source does not list the county for the state; then `events` is empty and `counties` lists the names it accepts.

**data.result.state** `string`

The source's state name used.

**data.result.county** `string | null`

The county as the source spells it; null when not found.

**data.result.counties** `string[]`

When the county was not found, the source's county names for the state, in its order; otherwise empty.

**data.result.total** `number`

Events the source returned for the range, before `limit`.

**data.result.truncated** `boolean`

True when the source returned its row cap: older events in the range were cut.

**data.result.events** `object[]`

Events.

**data.result.events\[].event\_id** `number`

The source's event id.

**data.result.events\[].episode\_id** `number | null`

The source's id for the episode the event belongs to. `null` when the source gives no value.

**data.result.events\[].event\_type** `string`

As the source words it, for example Tornado, Thunderstorm Wind or Hurricane (Typhoon).

**data.result.events\[].begin\_at** `string | null`

ISO 8601 with the offset the source states; null when it does not parse.

**data.result.events\[].end\_at** `string | null`

ISO 8601 with the offset the source states; null when it does not parse.

**data.result.events\[].time\_zone** `string | null`

The source's zone label, for example CST-6. `null` when the source gives no value.

**data.result.events\[].location** `string | null`

The place where the event began, as the source words it. `null` when the source gives no value.

**data.result.events\[].area** `string | null`

The county or forecast zone the event is recorded on, for example CLEVELAND CO. or CLEVELAND (ZONE). `null` when the source gives no value.

**data.result.events\[].area\_type** `string`

Area type.

**data.result.events\[].magnitude** `string | null`

As the source gives it: hail size in inches, wind in knots (EG estimated gust, MG measured gust), tornado EF scale. `null` when the source gives no value.

**data.result.events\[].deaths** `number | null`

Direct deaths. `null` when the source gives no value.

**data.result.events\[].injuries** `number | null`

Direct injuries. `null` when the source gives no value.

**data.result.events\[].damage\_property\_usd** `number | null`

Property damage in US dollars; null when not reported, never zero.

**data.result.events\[].damage\_crops\_usd** `number | null`

Crop damage in US dollars; null when not reported, never zero.

**data.result.events\[].url** `string`

The source's page for the event.

```bash cURL theme={null}
curl -X POST https://win.oneshotagent.com/v1/tools/lookup/place-storm-events \
  -H "Content-Type: application/json" \
  -H "payment-signature: <base64 x402 payment>" \
  -d '{
    "state": "OK",
    "county": "Cleveland",
    "since": "2013-05-20",
    "until": "2013-05-20",
    "event_types": [
      "Tornado"
    ]
  }'
```

```javascript JavaScript theme={null}
const response = await fetch("https://win.oneshotagent.com/v1/tools/lookup/place-storm-events", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "payment-signature": paymentProof,
  },
  body: JSON.stringify({
    "state": "OK",
    "county": "Cleveland",
    "since": "2013-05-20",
    "until": "2013-05-20",
    "event_types": [
      "Tornado"
    ]
  }),
});
```

```typescript SDK theme={null}
const result = await agent.tool('lookup/place-storm-events', {
  state: 'OK',
  county: 'Cleveland',
  since: '2013-05-20',
  until: '2013-05-20',
  event_types: [
    'Tornado'
  ]
});
console.log(result.result);
console.log(result.evidence);
```

```json Response (200) theme={null}
{
  "success": true,
  "data": {
    "request_id": "uuid",
    "receipt_id": "rcpt_...",
    "status": "completed",
    "tool": "place_storm_events",
    "result": {
      "county_found": true,
      "state": "Oklahoma",
      "county": "Cleveland",
      "counties": [],
      "total": 1,
      "truncated": false,
      "events": [
        {
          "event_id": 451572,
          "episode_id": 74673,
          "event_type": "Tornado",
          "begin_at": "2013-05-20T14:04:00-06:00",
          "end_at": "2013-05-20T14:35:00-06:00",
          "time_zone": "CST-6",
          "location": "MOORE",
          "area": "CLEVELAND CO.",
          "area_type": "county",
          "magnitude": "EF5",
          "deaths": 24,
          "injuries": 207,
          "damage_property_usd": 2000000000,
          "damage_crops_usd": 0,
          "url": "https://www.ncei.noaa.gov/access/storm-events-database/event-details/451572"
        }
      ]
    },
    "evidence": {
      "source": "US National Oceanic and Atmospheric Administration",
      "source_kind": "public",
      "retrieved_at": "2026-10-27T23:18:35.000Z",
      "calls": [
        {
          "retrieved_at": "2026-10-27T23:18:35.000Z"
        },
        {
          "retrieved_at": "2026-10-27T23:18:35.000Z"
        }
      ],
      "as_of": null
    }
  }
}
```

> [!NOTE]
>
> See [Pricing](https://docs.oneshotagent.com/pricing.md) for this tool's price. A wallet (x402) call receives it in the 402 quote before anything is charged; a call paid from prepaid credits is charged when the API accepts the request and answers `200`.

## Notes

* Use it to check what hail, wind, tornado, flood or winter weather a property, a claim or a site has been through.
* `county` must be spelled as the source lists it (`Cleveland`, `Calcasieu Parish`, `City of Richmond`); case does not matter and a trailing ` County` may be left off. A county the source does not list returns `county_found` false and `counties`, the names it accepts for that state.
* `since` and `until` (YYYY-MM-DD) set the dates, both inclusive; default the last ten years. Events before 1996 cover only tornado, thunderstorm wind and hail, and before 1955 only tornadoes.
* `event_types` narrows to the source's types (`Hail`, `Thunderstorm Wind`, `Tornado`, `Flash Flood`, ...); omitted, every type.
* A county search includes events recorded on the forecast zone of the same name (`area_type` zone).
* Null damage means none was reported, never zero. `truncated` true means the source cut the answer at its row cap and older events in the range are missing: narrow the dates.
* Times carry the offset the source states; it labels times in standard time all year.
* Results return inline. The finished job stays available at `/v1/requests/{request_id}`


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.