Skip to main content
Glama

Search FEMA Disaster Declarations

fema_search_disasters
Read-only

Search federal disaster declarations by state, incident type, declaration type, date range, and county. Returns deduplicated declaration-level summaries — each disaster number appears once with a designatedAreaCount showing how many counties/municipalities were designated. The disaster number is the chain key for fema_get_disaster, fema_get_public_assistance, and fema_get_housing_assistance. Use declaration_type to filter: DR (major disaster, most common), EM (emergency), FM (fire management). Date filters apply to the declaration date. Use fema_get_disaster to retrieve all designated-area rows for a specific declaration. A search reads the most recent 10,000 designated-area rows; when more match, it returns the declarations dated after the day that window ends, sets truncated, and its notice names the date_to that continues with older declarations.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of unique disaster declarations to return (1–1000, default 50).
stateNoTwo-letter US state/territory code (e.g., TX, CA, FL, PR). Filters by state.
countyNoFilter by designated area / county name substring (e.g., Harris, Los Angeles). Case-insensitive.
offsetNoPagination offset in declarations (default 0). Use with limit to page through results.
date_toNoEnd of the declaration date range as a calendar date in YYYY-MM-DD format (e.g., 2024-12-31). Inclusive.
date_fromNoStart of the declaration date range as a calendar date in YYYY-MM-DD format (e.g., 2024-01-01). Inclusive.
incident_typeNoIncident type filter (e.g., Flood, Hurricane, Tornado, Fire, Earthquake, Severe Storm). Case-insensitive substring match.
declaration_typeNoDeclaration type: DR (major disaster declaration), EM (emergency declaration), FM (fire management assistance declaration).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
errorNoPresent when the call failed. Absent on success.
noticeNoPaging guidance: when offset is at or past the end of the matching declarations, the total and the last valid offset; when truncated is true, that the totals are lower bounds and the date_to (YYYY-MM-DD) to search next for older declarations.
truncatedNoTrue when more than 10,000 designated-area rows match: the search covers only the declarations dated after the day its 10,000-row window ends. Each returned declaration is complete, the totals are lower bounds, and the notice names the date_to that continues with older declarations. Absent otherwise.
totalCountNoUnique disaster declarations matching the query — the unit declaration-level pagination pages over. Exceeds returned_count when the matches span more than one page. A lower bound when truncated is true.
declarationsNoDisaster declarations matching the search, one entry per unique disaster number.
returned_countNoNumber of unique deduplicated declarations in this response.
total_area_rowsNoTotal matching designated-area rows from the API (raw row count, not declaration count). DisasterDeclarationsSummaries returns one row per designated area per disaster, so this is always ≥ the number of unique declarations. When it exceeds 10,000, the search reads the most recent 10,000 rows and drops the declarations dated on the oldest day among them, so every returned declaration is complete; the notice names the date_to that continues with older declarations.
total_declarationsNoUnique disaster declarations matching the query, before offset/limit paging — the bound for declaration-level pagination (limit/offset apply to declarations, not area rows). A lower bound when truncated is true: it counts only the declarations dated after the day the 10,000-row window ends.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • changedOutput schema / properties / notice / description
      Previous value: -"Paging guidance when offset is at or past the end of the matching declarations — names the total and the last valid offset."New value: +"Paging guidance: when offset is at or past the end of the matching declarations, the total and the last valid offset; when truncated is true, that the totals are lower bounds and the date_to (YYYY-MM-DD) to search next for older declarations."
    • changedOutput schema / properties / totalCount / description
      Previous value: -"Total unique disaster declarations matching the query — the unit declaration-level pagination pages over. Exceeds returned_count when the matches span more than one page."New value: +"Unique disaster declarations matching the query — the unit declaration-level pagination pages over. Exceeds returned_count when the matches span more than one page. A lower bound when truncated is true."
    • changedOutput schema / properties / total_area_rows / description
      Previous value: -"Total matching designated-area rows from the API (raw row count, not declaration count). DisasterDeclarationsSummaries returns one row per designated area per disaster, so this is always ≥ the number of unique declarations. When total_area_rows exceeds 10 000, results are truncated to the most recent 10 000 rows — apply tighter filters to stay within this window."New value: +"Total matching designated-area rows from the API (raw row count, not declaration count). DisasterDeclarationsSummaries returns one row per designated area per disaster, so this is always ≥ the number of unique declarations. When it exceeds 10,000, the search reads the most recent 10,000 rows and drops the declarations dated on the oldest day among them, so every returned declaration is complete; the notice names the date_to that continues with older declarations."
    • changedOutput schema / properties / total_declarations / description
      Previous value: -"Total unique disaster declarations matching the query, before offset/limit paging — the bound for declaration-level pagination (limit/offset apply to declarations, not area rows). A floor rather than the exact total when total_area_rows hits the 10,000-row overfetch cap."New value: +"Unique disaster declarations matching the query, before offset/limit paging — the bound for declaration-level pagination (limit/offset apply to declarations, not area rows). A lower bound when truncated is true: it counts only the declarations dated after the day the 10,000-row window ends."
    • addedOutput schema / properties / truncated
      Added value: +{
      +  "description": "True when more than 10,000 designated-area rows match: the search covers only the declarations dated after the day its 10,000-row window ends. Each returned declaration is complete, the totals are lower bounds, and the notice names the date_to that continues with older declarations. Absent otherwise.",
      +  "type": "boolean"
      +}
  2. Changed7 schema fields changed
    • addedInput schema / properties / date_from / anyOf
      Added value: +[
      +  {
      +    "const": "",
      +    "type": "string"
      +  },
      +  {
      +    "description": "Calendar date, YYYY-MM-DD.",
      +    "format": "date",
      +    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +    "type": "string"
      +  }
      +]
    • changedInput schema / properties / date_from / description
      Previous value: -"Start of declaration date range in ISO 8601 format (e.g., 2024-01-01). Inclusive."New value: +"Start of the declaration date range as a calendar date in YYYY-MM-DD format (e.g., 2024-01-01). Inclusive."
    • removedInput schema / properties / date_from / type
      Removed value: -"string"
    • addedInput schema / properties / date_to / anyOf
      Added value: +[
      +  {
      +    "const": "",
      +    "type": "string"
      +  },
      +  {
      +    "description": "Calendar date, YYYY-MM-DD.",
      +    "format": "date",
      +    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +    "type": "string"
      +  }
      +]
    • changedInput schema / properties / date_to / description
      Previous value: -"End of declaration date range in ISO 8601 format (e.g., 2024-12-31). Inclusive."New value: +"End of the declaration date range as a calendar date in YYYY-MM-DD format (e.g., 2024-12-31). Inclusive."
    • removedInput schema / properties / date_to / type
      Removed value: -"string"
    • changedOutput schema / properties / notice / description
      Previous value: -"Guidance when no results were found."New value: +"Paging guidance when offset is at or past the end of the matching declarations — names the total and the last valid offset."
  3. 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": [
      +      "declarations",
      +      "total_declarations",
      +      "total_area_rows",
      +      "returned_count"
      +    ]
      +  },
      +  {
      +    "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: `invalid_state`: The state parameter is not a valid 2-letter US state/territory code. `no_results`: Query returned zero disaster declarations. Other values are possible when a failure originates below the handler.",
      +          "examples": [
      +            "invalid_state",
      +            "no_results"
      +          ],
      +          "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: -[
      -  "declarations",
      -  "total_declarations",
      -  "total_area_rows",
      -  "returned_count"
      -]
  4. Changed3 schema fields changed
    • changedOutput schema / properties / totalCount / description
      Previous value: -"Total matching designated-area rows from the API — exceeds the returned declaration count when results were capped at the overfetch limit."New value: +"Total unique disaster declarations matching the query — the unit declaration-level pagination pages over. Exceeds returned_count when the matches span more than one page."
    • addedOutput schema / properties / total_declarations
      Added value: +{
      +  "description": "Total unique disaster declarations matching the query, before offset/limit paging — the bound for declaration-level pagination (limit/offset apply to declarations, not area rows). A floor rather than the exact total when total_area_rows hits the 10,000-row overfetch cap.",
      +  "type": "number"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "declarations",
      -  "total_area_rows",
      -  "returned_count"
      -]New value: +[
      +  "declarations",
      +  "total_declarations",
      +  "total_area_rows",
      +  "returned_count"
      +]
  5. Changed1 schema field changed
    • addedOutput schema / properties / totalCount
      Added value: +{
      +  "description": "Total matching designated-area rows from the API — exceeds the returned declaration count when results were capped at the overfetch limit.",
      +  "type": "number"
      +}
  6. Changed4 schema fields changed
    • changedInput schema / properties / limit / description
      Previous value: -"Maximum number of declarations to return (1–1000, default 50)."New value: +"Maximum number of unique disaster declarations to return (1–1000, default 50)."
    • changedInput schema / properties / offset / description
      Previous value: -"Pagination offset (default 0). Use with limit for paging through results."New value: +"Pagination offset in declarations (default 0). Use with limit to page through results."
    • changedOutput schema / properties / declarations / items / properties / ia_declared / description
      Previous value: -"True when Individual Assistance (housing/personal grants) was declared."New value: +"True when the Individuals and Households Program (IHP) was declared — indicates IA housing/personal grants are available."
    • changedOutput schema / properties / total_area_rows / description
      Previous value: -"Total matching designated-area rows from the API before pagination. DisasterDeclarationsSummaries returns one row per designated area per disaster — this count is higher than the number of unique declarations in `declarations`."New value: +"Total matching designated-area rows from the API (raw row count, not declaration count). DisasterDeclarationsSummaries returns one row per designated area per disaster, so this is always ≥ the number of unique declarations. When total_area_rows exceeds 10 000, results are truncated to the most recent 10 000 rows — apply tighter filters to stay within this window."
  7. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the readOnlyHint and openWorldHint annotations, the description discloses crucial behaviors: results are deduplicated by disaster number, each includes designatedAreaCount, truncated is set when the underlying 10,000-row window is exceeded, and the notice names a date_to that continues with older declarations. This goes well beyond the annotations.

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?

The description is dense but every sentence earns its place, covering purpose, output shape, filtering semantics, sibling differentiation, and the truncation edge case. It is front-loaded with the core search capability before diving into behavioral details.

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?

For a search tool with 8 optional parametersestr, and given the output schema exists, the description provides all needed operational context: what is returned, how deduplication works, how pagination ties into the 10,000-row window, and how this tool chains with three sibling tools via the disaster number. No critical calling guidance is missing.

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?

The schema covers all parameter descriptions at 100%, so the baseline is 3. The description adds semantic value by expanding declaration_type into its meanings ('DR (major disaster, most common), EM (emergency), FM (fire management)') and by noting that date filters apply to the declaration date—context not present 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?

The description opens with a precise verb and resource: 'Search federal disaster declarations by state, incident type, declaration type, date range, and county.' It also distinguishes itself from the sibling fema_get_disaster by clarifying that this tool returns deduplicated declaration-level summaries while the sibling returns all designated-area rows.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool versus fema_get_disaster: 'Use fema_get_disaster to retrieve all designated-area rows for a specific declaration.' It also explains how declaration_type filters should be used with enum meanings (DR, EM, FM) and clarifies that date filters apply to the declaration date.

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.