Skip to main content
Glama

Nws Search Alerts

nws_search_alerts
Read-only

Search active weather alerts (watches, warnings, advisories) across the US. Filter by state, coordinates, zone, land/marine region, event type, severity, urgency, or certainty. area, point, zone, region_type, and region are mutually exclusive — provide at most one. Omit all filters for a national search.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
areaNoUS state/territory code (e.g., "WA", "OK", "PR") or marine area code (e.g., "GM"). Mutually exclusive with point and zone.
zoneNoNWS forecast zone (e.g., "WAZ558") or county zone (e.g., "WAC033"). Mutually exclusive with area and point.
eventNoFilter to specific event types (e.g., ["Tornado Warning"]). Matches are case-insensitive and partial, so "tornado" matches both "Tornado Warning" and "Tornado Watch". Use nws_list_alert_types to discover valid names.
limitNoMaximum number of alerts to include in this page (1-25, default 25). totalCount still reports the full number of distinct matches, so a small limit returns a digest of broad or national searches without dropping the total; pass the returned nextCursor as cursor to reach the rest.
pointNoCoordinates as "lat,lon" (e.g., "47.6,-122.3"). Returns alerts whose geometry contains this point. Mutually exclusive with area and zone.
cursorNoOpaque continuation token from a previous response's nextCursor. Omit for the first page. The token carries its own page size, so limit applies to the first page only. Every call re-fetches the active-alert feed, so alerts are contiguous within one response but not across calls — the active set changes continuously as alerts are issued and expire, so a continued page covers the collection as it stands at that moment.
regionNoRestrict to NWS marine region groups: "AL" (Alaska waters), "AT" (Atlantic Ocean), "GL" (Great Lakes), "GM" (Gulf of Mexico), "PA" (Eastern Pacific and US West Coast), "PI" (Central and Western Pacific). Marine alerts only — a land alert never matches. Mutually exclusive with area, point, zone, and region_type.
statusNoAlert status filter. Default "Actual". Use a different value only when you specifically need non-live alerts.Actual
urgencyNoFilter by urgency level.
severityNoFilter by severity level.
certaintyNoFilter by certainty level.
region_typeNoRestrict to land-based or marine alerts. Mutually exclusive with area, point, zone, and region.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
errorNoPresent when the call failed. Absent on success.
shownNoNumber of alerts included in this response
alertsNoMatching alerts for this page (at most the requested limit, max 25)
noticeNoGuidance when no alerts matched (echoes applied filters and suggests how to broaden), when matches remain beyond this page, or when the supplied cursor points past the end of the match set.
nextCursorNoOpaque token for the next page of matches — pass it back as `cursor`. Omitted when this is the last page.
totalCountNoTotal distinct alerts matching the filters in this fetch, before the page window is applied. NWS repeats some alerts verbatim within one response; the copies are collapsed on id, so this counts each alert once. Compare against shown to tell whether matches were withheld from this page.
appliedFiltersNoSummary of applied search filters

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `mutually_exclusive_filters`: More than one of area, point, zone, region_type, or region provided. `invalid_area_code`: Area code is not a recognized US state, territory, or marine area. `invalid_point`: Point coordinates are malformed or outside valid bounds. `invalid_zone`: Zone code does not match the NWS zone-code shape. `blank_location_filter`: An area, point, or zone filter was provided with a blank value. `empty_filter_array`: An event, severity, urgency, certainty, or region filter was provided with no usable entries. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `mutually_exclusive_filters`: More than one of area, point, zone, region_type, or region provided. `invalid_area_code`: Area code is not a recognized US state, territory, or marine area. `invalid_point`: Point coordinates are malformed or outside valid bounds. `invalid_zone`: Zone code does not match the NWS zone-code shape. Other values are possible when a failure originates below the handler."
    • changedOutput schema / properties / error / properties / data / properties / reason / examples
      Previous value: -[
      -  "mutually_exclusive_filters",
      -  "invalid_area_code",
      -  "invalid_point",
      -  "invalid_zone",
      -  "blank_location_filter",
      -  "empty_filter_array"
      -]New value: +[
      +  "mutually_exclusive_filters",
      +  "invalid_area_code",
      +  "invalid_point",
      +  "invalid_zone"
      +]
  2. Changed1 schema field changed
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `mutually_exclusive_filters`: More than one of area, point, zone, region_type, or region provided `invalid_area_code`: Area code is not a recognized US state, territory, or marine area `invalid_point`: Point coordinates are malformed or outside valid bounds `invalid_zone`: Zone code does not match the NWS zone-code shape `blank_location_filter`: An area, point, or zone filter was provided with a blank value `empty_filter_array`: An event, severity, urgency, certainty, or region filter was provided with no usable entries Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `mutually_exclusive_filters`: More than one of area, point, zone, region_type, or region provided. `invalid_area_code`: Area code is not a recognized US state, territory, or marine area. `invalid_point`: Point coordinates are malformed or outside valid bounds. `invalid_zone`: Zone code does not match the NWS zone-code shape. `blank_location_filter`: An area, point, or zone filter was provided with a blank value. `empty_filter_array`: An event, severity, urgency, certainty, or region filter was provided with no usable entries. Other values are possible when a failure originates below the handler."
  3. Changed1 schema field changed
    • changedInput schema / properties / cursor / description
      Previous value: -"Opaque continuation token from a previous response's nextCursor. Omit for the first page. The token carries its own page size, so limit applies to the first page only. Every call re-fetches /alerts/active, so alerts are contiguous within one response but not across calls — the active set changes continuously as alerts are issued and expire, so a continued page covers the collection as it stands at that moment."New value: +"Opaque continuation token from a previous response's nextCursor. Omit for the first page. The token carries its own page size, so limit applies to the first page only. Every call re-fetches the active-alert feed, so alerts are contiguous within one response but not across calls — the active set changes continuously as alerts are issued and expire, so a continued page covers the collection as it stands at that moment."
  4. Changed12 schema fields changed
    • removedOutput schema / properties / alerts / items / properties / description / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / alerts / items / properties / description / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / alerts / items / properties / ends / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / alerts / items / properties / ends / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / alerts / items / properties / expires / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / alerts / items / properties / expires / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / alerts / items / properties / headline / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / alerts / items / properties / headline / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / alerts / items / properties / instruction / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / alerts / items / properties / instruction / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / alerts / items / properties / onset / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / alerts / items / properties / onset / type
      Added value: +[
      +  "string",
      +  "null"
      +]
  5. Changed6 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedInput schema / additionalProperties
      Added value: +false
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "alerts",
      +      "totalCount",
      +      "shown",
      +      "appliedFilters"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / error
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "Present when the call failed. Absent on success.",
      +  "properties": {
      +    "code": {
      +      "description": "JSON-RPC error code for this failure.",
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "data": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "reason": {
      +          "description": "Machine-readable failure mode. Declared by this tool: `mutually_exclusive_filters`: More than one of area, point, zone, region_type, or region provided `invalid_area_code`: Area code is not a recognized US state, territory, or marine area `invalid_point`: Point coordinates are malformed or outside valid bounds `invalid_zone`: Zone code does not match the NWS zone-code shape `blank_location_filter`: An area, point, or zone filter was provided with a blank value `empty_filter_array`: An event, severity, urgency, certainty, or region filter was provided with no usable entries Other values are possible when a failure originates below the handler.",
      +          "examples": [
      +            "mutually_exclusive_filters",
      +            "invalid_area_code",
      +            "invalid_point",
      +            "invalid_zone",
      +            "blank_location_filter",
      +            "empty_filter_array"
      +          ],
      +          "type": "string"
      +        },
      +        "recovery": {
      +          "additionalProperties": {},
      +          "description": "Actionable next step for the caller.",
      +          "properties": {
      +            "hint": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "hint"
      +          ],
      +          "type": "object"
      +        },
      +        "retryable": {
      +          "description": "Whether retrying may succeed.",
      +          "type": "boolean"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "message": {
      +      "description": "Human-readable description of what went wrong.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "code",
      +    "message"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / required
      Removed value: -[
      -  "alerts",
      -  "totalCount",
      -  "shown",
      -  "appliedFilters"
      -]
  6. Changed5 schema fields changed
    • changedInput schema / properties / limit / description
      Previous value: -"Maximum number of alerts to include in this page (1-25, default 25). totalCount still reports the full number of matches, so a small limit returns a digest of broad or national searches without dropping the total; pass the returned nextCursor as cursor to reach the rest."New value: +"Maximum number of alerts to include in this page (1-25, default 25). totalCount still reports the full number of distinct matches, so a small limit returns a digest of broad or national searches without dropping the total; pass the returned nextCursor as cursor to reach the rest."
    • addedOutput schema / properties / shown
      Added value: +{
      +  "description": "Number of alerts included in this response",
      +  "type": "number"
      +}
    • removedOutput schema / properties / shownCount
      Removed value: -{
      -  "description": "Number of alerts included in this response",
      -  "type": "number"
      -}
    • changedOutput schema / properties / totalCount / description
      Previous value: -"Total number of matching alerts in this fetch, before the page window is applied"New value: +"Total distinct alerts matching the filters in this fetch, before the page window is applied. NWS repeats some alerts verbatim within one response; the copies are collapsed on id, so this counts each alert once. Compare against shown to tell whether matches were withheld from this page."
    • changedOutput schema / required
      Previous value: -[
      -  "alerts",
      -  "totalCount",
      -  "shownCount",
      -  "appliedFilters"
      -]New value: +[
      +  "alerts",
      +  "totalCount",
      +  "shown",
      +  "appliedFilters"
      +]
  7. Changed17 schema fields changed
    • addedInput schema / properties / region
      Added value: +{
      +  "description": "Restrict to NWS marine region groups: \"AL\" (Alaska waters), \"AT\" (Atlantic Ocean), \"GL\" (Great Lakes), \"GM\" (Gulf of Mexico), \"PA\" (Eastern Pacific and US West Coast), \"PI\" (Central and Western Pacific). Marine alerts only — a land alert never matches. Mutually exclusive with area, point, zone, and region_type.",
      +  "items": {
      +    "enum": [
      +      "AL",
      +      "AT",
      +      "GL",
      +      "GM",
      +      "PA",
      +      "PI"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / region_type
      Added value: +{
      +  "description": "Restrict to land-based or marine alerts. Mutually exclusive with area, point, zone, and region.",
      +  "enum": [
      +    "Land",
      +    "Marine"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / properties / alerts / items / properties / affectedZones / description
      Previous value: -"Affected zone codes"New value: +"Affected zones, each with the zone type that decides where it can chain"
    • addedOutput schema / properties / alerts / items / properties / affectedZones / items / additionalProperties
      Added value: +false
    • addedOutput schema / properties / alerts / items / properties / affectedZones / items / description
      Added value: +"Affected zone with its NWS zone type"
    • addedOutput schema / properties / alerts / items / properties / affectedZones / items / properties
      Added value: +{
      +  "code": {
      +    "description": "Zone code, e.g. \"WAZ558\" (forecast) or \"WAC033\" (county)",
      +    "type": "string"
      +  },
      +  "type": {
      +    "description": "NWS zone type: \"forecast\", \"county\", or \"fire\" (\"unknown\" when upstream reports a shape this server cannot type). Only \"forecast\" codes have a zone text forecast — pass those to nws_get_zone_forecast. All types are valid values for this tool's own zone filter.",
      +    "type": "string"
      +  }
      +}
    • addedOutput schema / properties / alerts / items / properties / affectedZones / items / required
      Added value: +[
      +  "code",
      +  "type"
      +]
    • changedOutput schema / properties / alerts / items / properties / affectedZones / items / type
      Previous value: -"string"New value: +"object"
    • addedOutput schema / properties / alerts / items / properties / description / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / alerts / items / properties / description / description
      Previous value: -"Full alert description"New value: +"Full alert description; null when NWS publishes the alert without one"
    • removedOutput schema / properties / alerts / items / properties / description / type
      Removed value: -"string"
    • addedOutput schema / properties / alerts / items / properties / effective
      Added value: +{
      +  "description": "Message effective time (ISO 8601) — when this version of the CAP message takes effect. A property of the message, not of the hazard: distinct from onset (when the hazard begins) and from expires (when a superseding message is due). Usually equals sent.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / alerts / items / properties / messageType
      Added value: +{
      +  "description": "CAP message type: \"Alert\" for an original issuance, \"Update\" for a revision of an earlier message, \"Cancel\" for a cancellation.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / alerts / items / properties / references
      Added value: +{
      +  "description": "Prior alert messages this one supersedes, newest first. Empty for an original issuance — never inferred when NWS reports none.",
      +  "items": {
      +    "additionalProperties": false,
      +    "description": "One prior message this alert supersedes",
      +    "properties": {
      +      "identifier": {
      +        "description": "CAP identifier of the superseded message",
      +        "type": "string"
      +      },
      +      "sent": {
      +        "description": "When the superseded message was issued (ISO 8601)",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "identifier",
      +      "sent"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / alerts / items / properties / sent
      Added value: +{
      +  "description": "Message issuance time (ISO 8601) — when the office transmitted this CAP message. Describes the message, not the hazard: use it to judge how stale the report is.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / alerts / items / properties / status
      Added value: +{
      +  "description": "This alert's own CAP status as reported by NWS (\"Actual\", \"Exercise\", \"System\", \"Test\", \"Draft\"). Distinct from the status input filter, which selects which alerts are searched — with the default filter every returned alert reads \"Actual\".",
      +  "type": "string"
      +}
    • changedOutput schema / properties / alerts / items / required
      Previous value: -[
      -  "id",
      -  "event",
      -  "headline",
      -  "description",
      -  "instruction",
      -  "severity",
      -  "urgency",
      -  "certainty",
      -  "areaDesc",
      -  "onset",
      -  "ends",
      -  "expires",
      -  "senderName",
      -  "affectedZones"
      -]New value: +[
      +  "id",
      +  "event",
      +  "headline",
      +  "description",
      +  "instruction",
      +  "severity",
      +  "urgency",
      +  "certainty",
      +  "areaDesc",
      +  "sent",
      +  "effective",
      +  "onset",
      +  "ends",
      +  "expires",
      +  "status",
      +  "messageType",
      +  "references",
      +  "senderName",
      +  "affectedZones"
      +]
  8. Changed6 schema fields changed
    • addedInput schema / properties / cursor
      Added value: +{
      +  "description": "Opaque continuation token from a previous response's nextCursor. Omit for the first page. The token carries its own page size, so limit applies to the first page only. Every call re-fetches /alerts/active, so alerts are contiguous within one response but not across calls — the active set changes continuously as alerts are issued and expire, so a continued page covers the collection as it stands at that moment.",
      +  "type": "string"
      +}
    • changedInput schema / properties / limit / description
      Previous value: -"Maximum number of alerts to include in the response (1-25, default 25). totalCount still reports the full number of matches, so a small limit returns a digest of broad or national searches without dropping the total."New value: +"Maximum number of alerts to include in this page (1-25, default 25). totalCount still reports the full number of matches, so a small limit returns a digest of broad or national searches without dropping the total; pass the returned nextCursor as cursor to reach the rest."
    • changedOutput schema / properties / alerts / description
      Previous value: -"Matching alerts (capped at the requested limit, max 25)"New value: +"Matching alerts for this page (at most the requested limit, max 25)"
    • addedOutput schema / properties / nextCursor
      Added value: +{
      +  "description": "Opaque token for the next page of matches — pass it back as `cursor`. Omitted when this is the last page.",
      +  "type": "string"
      +}
    • changedOutput schema / properties / notice / description
      Previous value: -"Guidance when no alerts matched — echoes applied filters and suggests how to broaden the search."New value: +"Guidance when no alerts matched (echoes applied filters and suggests how to broaden), when matches remain beyond this page, or when the supplied cursor points past the end of the match set."
    • changedOutput schema / properties / totalCount / description
      Previous value: -"Total number of matching alerts before the limit/cap is applied"New value: +"Total number of matching alerts in this fetch, before the page window is applied"
  9. Changed3 schema fields changed
    • addedInput schema / properties / limit
      Added value: +{
      +  "default": 25,
      +  "description": "Maximum number of alerts to include in the response (1-25, default 25). totalCount still reports the full number of matches, so a small limit returns a digest of broad or national searches without dropping the total.",
      +  "maximum": 25,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • changedOutput schema / properties / alerts / description
      Previous value: -"Matching alerts (capped at 25)"New value: +"Matching alerts (capped at the requested limit, max 25)"
    • changedOutput schema / properties / totalCount / description
      Previous value: -"Total number of matching alerts before the 25-alert cap"New value: +"Total number of matching alerts before the limit/cap is applied"
  10. Changed2 schema fields changed
    • addedOutput schema / properties / alerts / items / properties / ends
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Hazard end (ISO 8601) — when the hazard is expected to end; null when open-ended (\"until further notice\"). Distinct from expires, which is the message-refresh time."
      +}
    • changedOutput schema / properties / alerts / items / required
      Previous value: -[
      -  "id",
      -  "event",
      -  "headline",
      -  "description",
      -  "instruction",
      -  "severity",
      -  "urgency",
      -  "certainty",
      -  "areaDesc",
      -  "onset",
      -  "expires",
      -  "senderName",
      -  "affectedZones"
      -]New value: +[
      +  "id",
      +  "event",
      +  "headline",
      +  "description",
      +  "instruction",
      +  "severity",
      +  "urgency",
      +  "certainty",
      +  "areaDesc",
      +  "onset",
      +  "ends",
      +  "expires",
      +  "senderName",
      +  "affectedZones"
      +]
  11. Changed8 schema fields changed
    • addedOutput schema / properties / appliedFilters
      Added value: +{
      +  "description": "Summary of applied search filters",
      +  "type": "string"
      +}
    • removedOutput schema / properties / count
      Removed value: -{
      -  "description": "Total number of matching alerts",
      -  "type": "number"
      -}
    • removedOutput schema / properties / filters
      Removed value: -{
      -  "description": "Summary of applied search filters",
      -  "type": "string"
      -}
    • addedOutput schema / properties / notice
      Added value: +{
      +  "description": "Guidance when no alerts matched — echoes applied filters and suggests how to broaden the search.",
      +  "type": "string"
      +}
    • removedOutput schema / properties / shown
      Removed value: -{
      -  "description": "Number of alerts included in this response",
      -  "type": "number"
      -}
    • addedOutput schema / properties / shownCount
      Added value: +{
      +  "description": "Number of alerts included in this response",
      +  "type": "number"
      +}
    • addedOutput schema / properties / totalCount
      Added value: +{
      +  "description": "Total number of matching alerts before the 25-alert cap",
      +  "type": "number"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "count",
      -  "shown",
      -  "filters",
      -  "alerts"
      -]New value: +[
      +  "alerts",
      +  "totalCount",
      +  "shownCount",
      +  "appliedFilters"
      +]
  12. Changed1 schema field changed
    • addedOutput schema / properties / alerts / items / description
      Added value: +"Single active alert with event, severity, area, and timing"
  13. Changed2 schema fields changed
    • changedOutput schema / properties / alerts / items / properties / expires / description
      Previous value: -"Expiration time (ISO 8601)"New value: +"Message expiration (ISO 8601) — when NWS will issue a superseding statement. NOT when the hazard ends; the hazard window is described in the headline."
    • changedOutput schema / properties / alerts / items / properties / onset / description
      Previous value: -"Expected onset (ISO 8601)"New value: +"Expected hazard onset (ISO 8601). When the hazard is expected to begin."
  14. Changed3 schema fields changed
    • changedInput schema / properties / area / description
      Previous value: -"US state/territory code (e.g., \"WA\", \"OK\", \"PR\") or marine area code (e.g., \"GM\")."New value: +"US state/territory code (e.g., \"WA\", \"OK\", \"PR\") or marine area code (e.g., \"GM\"). Mutually exclusive with point and zone."
    • changedInput schema / properties / point / description
      Previous value: -"Coordinates as \"lat,lon\" (e.g., \"47.6,-122.3\"). Returns alerts whose geometry contains this point."New value: +"Coordinates as \"lat,lon\" (e.g., \"47.6,-122.3\"). Returns alerts whose geometry contains this point. Mutually exclusive with area and zone."
    • changedInput schema / properties / zone / description
      Previous value: -"NWS forecast zone (e.g., \"WAZ558\") or county zone (e.g., \"WAC033\")."New value: +"NWS forecast zone (e.g., \"WAZ558\") or county zone (e.g., \"WAC033\"). Mutually exclusive with area and point."
  15. Changed2 schema fields changed
    • changedInput schema / properties / event / description
      Previous value: -"Filter to specific event types (e.g., [\"Tornado Warning\"]). Exact match (case-insensitive). Use nws_list_alert_types to discover valid names."New value: +"Filter to specific event types (e.g., [\"Tornado Warning\"]). Matches are case-insensitive and partial, so \"tornado\" matches both \"Tornado Warning\" and \"Tornado Watch\". Use nws_list_alert_types to discover valid names."
    • addedInput schema / properties / status
      Added value: +{
      +  "default": "Actual",
      +  "description": "Alert status filter. Default \"Actual\". Use a different value only when you specifically need non-live alerts.",
      +  "enum": [
      +    "Actual",
      +    "Exercise",
      +    "System",
      +    "Test",
      +    "Draft"
      +  ],
      +  "type": "string"
      +}
  16. First observed

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so safety is covered. The description restates the mutual-exclusivity constraint, which is genuinely useful, but it is also duplicated in the schema's parameter descriptions, and it adds nothing about result volatility, sorting, or completeness beyond that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Three sentences, front-loaded with the core action, then the filter surface, then the exclusivity constraint and the no-filter default. No filler or restatement of the tool name.

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

Completeness5/5

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

An output schema exists, so return-value documentation is unnecessary. For a 12-parameter optional-filter search tool, the description covers purpose, filter dimensions, parameter interaction constraints, and the default behavior adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

Schema description coverage is 100%, so the schema already carries the detail (e.g., partial/case-insensitive event matching, cursor semantics). The description still adds value by synthesizing the cross-parameter rule that area, point, zone, region_type, and region are mutually exclusive, which is not stated in one place in the schema.

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

Purpose5/5

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

States a specific verb and resource with scope: 'Search active weather alerts (watches, warnings, advisories) across the US.' The parenthetical clarifies what counts as an alert, and the filter list makes it clearly distinct from siblings like nws_get_alert_counts or nws_list_alert_types.

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

Usage Guidelines4/5

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

Gives concrete usage guidance: 'Omit all filters for a national search' and 'provide at most one' for the mutually exclusive locators. However, it never contrasts itself against the sibling tools (nws_get_alert_counts for counts, nws_list_alert_types for discovery), 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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.