Skip to main content
Glama

Server Details

Query FEMA disaster declarations, public assistance grants, housing aid, and NFIP claims.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.6/5 across 8 of 8 tools scored.

Server CoherenceA
Disambiguation5/5

Each tool targets a distinct operation: searching vs. retrieving details, different assistance types, and generic querying. No two tools have overlapping purposes, making selection unambiguous.

Naming Consistency4/5

Most tools follow a consistent `fema_verb_entity` pattern (e.g., fema_search_disasters), but two tools (fema_dataframe_describe, fema_dataframe_query) invert to `fema_entity_verb`, causing minor inconsistency. Overall clear and predictable.

Tool Count5/5

With 8 tools, the server is well-scoped for its domain—covering search, retrieval, and analysis without bloat. The count is ideal for a specialized data API.

Completeness4/5

The tool set covers core disaster and NFIP data retrieval and analysis. A generic query tool fills gaps for uncovered datasets. Minor missing features (e.g., direct state listing) are compensated by flexibility.

Available Tools

8 tools
fema_dataframe_describeDescribe FEMA DataCanvas TablesA
Read-onlyIdempotent
Inspect

List tables and column schemas on a DataCanvas staged by fema_search_nfip. Call this before fema_dataframe_query to discover the exact table name, column names, and DuckDB data types needed to write valid SQL. Row count reflects what was actually staged — check truncated in the fema_search_nfip response to know whether the canvas holds the full matching set.

ParametersJSON Schema
NameRequiredDescriptionDefault
canvas_idYesCanvas ID from the fema_search_nfip response.

Output Schema

ParametersJSON Schema
NameRequiredDescription
tablesYesAll tables and views available on this canvas.
canvas_idYesCanvas ID that was described — pass to fema_dataframe_query.
Behavior4/5

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

Annotations already declare read-only and idempotent behaviors. Description adds context about row count reflecting actual staged data and cross-references truncated status, which goes 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.

Conciseness5/5

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

Two sentences, no wasted words. Front-loaded with purpose, followed by usage guidance. Ideal length for quick comprehension.

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?

Given the simple single-parameter schema and presence of output schema (implied), the description covers all essential aspects: purpose, when to call, how to interpret results, and relevant warnings.

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?

Only one parameter (canvas_id) with 100% schema coverage. Description adds value by specifying it comes from 'fema_search_nfip response', providing source context beyond the schema description.

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?

Description clearly states the verb 'list' and the resource 'tables and column schemas on a DataCanvas', referencing the specific staging tool. It distinguishes from sibling by indicating it should be called before fema_dataframe_query.

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?

Explicitly instructs to call this before fema_dataframe_query to discover table/column names and types, and advises checking the 'truncated' field in the prior response. Provides clear when and how to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fema_dataframe_queryQuery FEMA DataCanvas TableA
Read-onlyIdempotent
Inspect

Run a read-only SQL SELECT against a DataCanvas table staged by fema_search_nfip. Enables aggregation, GROUP BY, SUM/COUNT, time-series, and filtered analysis over the full NFIP claims result without re-fetching from the API. Call fema_dataframe_describe first to get the exact table name and column names needed for valid SQL. Only SELECT statements are allowed — DDL, DML, COPY, and file-reading functions are blocked.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSQL SELECT statement to run against the staged table. Use the table name from fema_dataframe_describe. Example: "SELECT year_of_loss, COUNT(*) AS claims, SUM(amount_paid_building) AS total_building_paid FROM df_nfip_abc123 GROUP BY year_of_loss ORDER BY year_of_loss"
canvas_idYesCanvas ID from the fema_search_nfip response (the canvas_id field).

Output Schema

ParametersJSON Schema
NameRequiredDescription
rowsYesAll rows returned by the query.
canvas_idYesCanvas ID that was queried — reuse for follow-up queries.
row_countYesNumber of rows in this response (may be capped at the canvas row limit).
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint. The description adds value by specifying that only SELECT statements are allowed and that DDL/DML/file-reading functions are blocked, providing concrete constraints 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 concise with three sentences, each adding value. It is front-loaded with purpose, followed by usage guidelines, and ends with constraints. No unnecessary words.

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?

Given the tool's complexity (SQL query) and the availability of an output schema, the description provides complete guidance: workflow (describe first), query constraints, example, and parameter meaning. It covers all necessary context.

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 coverage is 100%, so the schema already describes parameters. The description adds meaningful context by including an example SQL query and mentioning the need to use the table name from fema_dataframe_describe, which aids correct invocation.

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 clearly states it runs read-only SQL SELECT against a staged DataCanvas table, specifying the verb (query), resource (DataCanvas table), and scope (full NFIP claims). It distinguishes from siblings like fema_search_nfip and fema_query_dataset.

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?

The description explicitly instructs to call fema_dataframe_describe first to get table/column names, and notes that only SELECT is allowed. However, it does not explicitly mention when not to use or provide alternative tools for non-SELECT operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fema_get_disasterGet FEMA Disaster DetailsA
Read-only
Inspect

Fetch all designated-area rows for a specific FEMA disaster by disaster number (e.g., 4781). Returns every county/municipality designated under the declaration along with programs activated, incident period, and state info. Use fema_search_disasters to find disaster numbers. The returned disaster_number chains to fema_get_public_assistance and fema_get_housing_assistance.

ParametersJSON Schema
NameRequiredDescriptionDefault
disaster_numberYesFEMA disaster number (e.g., 4781). Obtain from fema_search_disasters.

Output Schema

ParametersJSON Schema
NameRequiredDescription
stateYesTwo-letter state/territory code.
titleYesOfficial declaration title (e.g., "SEVERE STORMS AND FLOODING").
hm_declaredYesTrue when Hazard Mitigation grants were declared.
ia_declaredYesTrue when the Individuals and Households Program (IHP) was declared — indicates IA housing/personal grants are available.
pa_declaredYesTrue when Public Assistance (infrastructure recovery grants) was declared.
incident_typeYesType of incident (e.g., Flood, Hurricane, Severe Storm).
disaster_numberYesFEMA disaster number — use as the chain key for PA and housing assistance tools.
declaration_dateYesISO 8601 date the declaration was signed.
declaration_typeYesDeclaration type: DR (major disaster), EM (emergency), or FM (fire management).
designated_areasYesAll counties/municipalities designated for assistance under this declaration.
incident_end_dateNoISO 8601 end date of the incident. Absent for ongoing or unrecorded incidents.
incident_begin_dateNoISO 8601 start date of the incident. Absent when not recorded.
designated_area_countYesTotal number of designated areas in this declaration.
Behavior3/5

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

Annotations declare readOnlyHint=true and openWorldHint=false, so the description's claim of 'fetch' aligns. Description adds that it returns 'every county/municipality designated under the declaration along with programs activated, incident period, and state info', which is useful context beyond annotations. However, it does not disclose potential behaviors like pagination, error handling for invalid numbers, or performance characteristics for large disasters.

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?

Two sentences, zero wasted words. First sentence states the core purpose with a concrete example. Second sentence provides immediate usage guidance and chaining context. Every sentence earns its place.

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

Completeness4/5

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

Given the tool's simplicity (one optional parameter, read-only, output schema provided), the description covers the essential aspects: what it returns, how to get input, and how to use the output. It does not mention error cases, but the output schema and runtime may handle that. Overall, it is sufficiently complete for an agent to invoke correctly.

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 has 100% coverage for the single required parameter 'disaster_number'. Description adds an example (e.g., 4781) and states to obtain from fema_search_disasters, providing meaningful guidance beyond the schema's description. This elevates the score above the baseline of 3.

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?

Description clearly states verb 'fetch' and resource 'designated-area rows for a specific FEMA disaster', with a concrete example (disaster number 4781). It distinguishes from sibling tools like fema_search_disasters (which finds disaster numbers) and fema_get_public_assistance/fema_get_housing_assistance (which chain from the result).

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?

Explicitly directs users to first use fema_search_disasters to obtain the disaster number, and indicates that the returned disaster_number can chain to fema_get_public_assistance and fema_get_housing_assistance. It does not explicitly state when not to use this tool, but the context is clear: use when you have a specific disaster number.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fema_get_housing_assistanceGet FEMA Housing Assistance DataA
Read-only
Inspect

Retrieve Individual Assistance (IA) housing data for a disaster by disaster number. Returns owner and/or renter breakdowns by county and ZIP code — valid registrations, total approved IHP amounts, repair/rental amounts, and inspection data. Use type to select owners, renters, or both (default). Use disaster_number from fema_search_disasters.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoWhich housing assistance dataset to query: owners, renters, or both (default).both
limitNoMaximum records per dataset to return (default 100).
stateNoTwo-letter state code to narrow results when a disaster spans multiple states.
offsetNoPagination offset (default 0).
disaster_numberYesFEMA disaster number. Obtain from fema_search_disasters.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noticeNoGuidance when no results were found.
ownersYesHomeowner (HousingAssistanceOwners) records. Empty when type is "renters" or no owner data exists.
rentersYesRenter (HousingAssistanceRenters) records. Empty when type is "owners" or no renter data exists.
totalCountNoTotal owner + renter records available before the per-dataset limit — exceeds the returned count when either dataset was capped.
owners_countYesTotal owner records available before the per-dataset limit.
renters_countYesTotal renter records available before the per-dataset limit.
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the agent knows this is a safe read operation on external data. The description adds specific behavioral context about returned fields (valid registrations, IHP amounts, repair/rental amounts, inspection data), which is valuable beyond the annotations. No contradictions.

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?

Two sentences front-load the core purpose and output, then parameter hints. Every clause adds value, no filler.

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

Completeness4/5

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

Given the presence of an output schema and annotations covering readOnly/openWorld, the description is fairly complete. It covers key return fields and parameter usage. However, it does not explicitly mention pagination behavior (offset, limit) or potential limitations, though these are covered in the schema.

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

Parameters3/5

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

With 100% schema description coverage, the schema already documents all 5 parameters. The description adds marginal value by reinforcing that 'type' selects owners/renters and that disaster_number comes from fema_search_disasters. This is helpful but not transformative beyond the schema's own descriptions.

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 clearly states the action 'Retrieve', the resource 'Individual Assistance housing data for a disaster by disaster number', and details the returned data (breakdowns by county/ZIP, registrations, amounts, inspection data). It references the sibling tool fema_search_disasters for getting the disaster number, distinguishing it from related tools like fema_get_disaster or fema_get_public_assistance.

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?

The description provides context on how to get the disaster_number and select data type, but does not explicitly state when to use this tool versus alternatives like fema_get_disaster for raw disaster info or fema_get_public_assistance for public assistance data. The guidance is clear but lacks exclusionary or comparative statements.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fema_get_public_assistanceGet FEMA Public Assistance ProjectsA
Read-only
Inspect

Retrieve Public Assistance (PA) funded project records for a disaster or state — shows where federal recovery money was obligated. Returns applicant, damage category, project size and status, federal share obligated, and total obligated amounts. Either disaster_number or state must be provided. Use disaster_number (from fema_search_disasters) to scope to a single declaration, or state to browse all PA projects for a state. PA projects are created only when the PA program is declared (pa_declared: true on the disaster).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of projects to return (1–1000, default 100).
stateNoTwo-letter state code to browse all PA projects for a state.
countyNoFilter by county name substring.
offsetNoPagination offset (default 0).
disaster_numberNoFEMA disaster number to scope results to a single declaration.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noticeNoGuidance when no results were found.
projectsYesPublic assistance funded project records.
totalCountNoTotal matching projects before pagination — exceeds returned_count when results were capped at the limit.
total_countYesTotal matching projects before pagination.
returned_countYesNumber of projects in this response.
Behavior4/5

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

Annotations already indicate readOnlyHint and openWorldHint. Description adds behavioral context by stating the tool shows 'where federal recovery money was obligated' and listing return fields. Does not contradict 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?

Four well-structured sentences, front-loaded with the core purpose, no superfluous words. Every sentence serves a clear function.

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

Completeness4/5

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

Given 5 parameters (none required), output schema exists, and high schema coverage, the description provides sufficient context for usage, data returned, and relationships. Could mention pagination details (offset/limit) but those are in schema.

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

Parameters5/5

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

Schema coverage is 100%. Description adds crucial semantics: clarifies that disaster_number or state must be provided (mutual exclusivity), explains the origin of disaster_number, and notes county filter is a substring search. Adds significant value beyond schema descriptions.

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?

Clearly states it retrieves FEMA Public Assistance project records for a disaster or state, and specifies the exact data fields returned (applicant, damage category, project size/status, federal share, total obligated). Differentiates from sibling tools by referencing disaster_number from fema_search_disasters and the pa_declared: true condition.

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?

Provides guidance on when to use disaster_number vs state, and notes that PA projects exist only when pa_declared: true. Lacks explicit when-not-to-use or alternatives, but contextual cues are strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fema_query_datasetQuery Any OpenFEMA DatasetA
Read-only
Inspect

Generic OData query against any OpenFEMA v2 dataset — the escape hatch for datasets the convenience tools do not cover (e.g., FimaNfipPolicies, IndividualAssistanceHousingRegistrantsLargeDisasters, FemaWebDeclarationAreas, PublicAssistanceApplicants). Accepts raw OData filter, select, orderby, and pagination parameters. For NFIP Policies, use propertyState (not state) as the state field — always include a county or ZIP filter to avoid timeout. The dataset name must match the exact OpenFEMA v2 entity name (case-sensitive, e.g., FimaNfipClaims). Unknown dataset names return an unknown_dataset error.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum records to return (1–10000, default 100).
filterNoOData $filter expression (e.g., "state eq 'TX' and declarationDate ge '2024-01-01T00:00:00.000Z'"). String values in single quotes.
offsetNoPagination offset (default 0).
selectNoComma-separated field names to return (e.g., "disasterNumber,state,declarationDate").
datasetYesOpenFEMA v2 dataset entity name (case-sensitive, e.g., FimaNfipPolicies, FemaWebDeclarationAreas, PublicAssistanceApplicants).
orderbyNoOData $orderby expression (e.g., "declarationDate desc").

Output Schema

ParametersJSON Schema
NameRequiredDescription
rowsYesRecords returned from the dataset. Field names depend on the queried dataset.
noticeNoGuidance when no results were found.
datasetYesThe dataset that was queried.
totalCountNoTotal matching records before pagination — exceeds returned_count when results were capped at the limit.
total_countYesTotal matching records before pagination.
returned_countYesNumber of records in this response.
Behavior5/5

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

Beyond the readOnlyHint and openWorldHint annotations, the description discloses critical behavioral traits: raw OData parameter acceptance, timeout risk without filtering, case-sensitive dataset names, and the exact error for unknown datasets. This adds significant context for safe invocation.

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

Conciseness4/5

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

The description is a single, dense paragraph that efficiently conveys the core purpose, usage guidance, and important warnings. Every sentence is meaningful, though it could benefit from slightly more structured formatting (e.g., bullet points) for readability. Nevertheless, it is concise and front-loaded.

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?

Given the tool's generic nature and the existence of an output schema, the description covers all essential aspects: what it does, when to use it, how to avoid common pitfalls (timeout, case sensitivity, error handling), and parameter usage. It is comprehensive for an escape hatch tool.

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?

With 100% input schema coverage, the schema already documents parameters well. The description adds value by explaining the OData nature of filter, select, and orderby, providing usage examples, and warning about propertyState for NFIP datasets. This enriches understanding beyond 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 clearly states it performs a generic OData query against any OpenFEMA v2 dataset, explicitly positioning it as an escape hatch for datasets not covered by convenience tools like fema_search_nfip or fema_get_disaster. It provides specific dataset examples and distinguishes its role from sibling tools.

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 tells when to use this tool (for datasets not covered by convenience tools) and when not to (e.g., for NFIP Policies it advises using propertyState and including county or ZIP filters to avoid timeout). It provides clear context and alternative tools, making it easy for an AI agent to decide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fema_search_disastersSearch FEMA Disaster DeclarationsA
Read-only
Inspect

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.

ParametersJSON 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 declaration date range in ISO 8601 format (e.g., 2024-12-31). Inclusive.
date_fromNoStart of declaration date range in ISO 8601 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

ParametersJSON Schema
NameRequiredDescription
noticeNoGuidance when no results were found.
totalCountNoTotal matching designated-area rows from the API — exceeds the returned declaration count when results were capped at the overfetch limit.
declarationsYesDisaster declarations matching the search, one entry per unique disaster number.
returned_countYesNumber of unique deduplicated declarations in this response.
total_area_rowsYesTotal 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.
Behavior5/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, and the description complements this by detailing that results are deduplicated and that date filters apply to the declaration date. No contradiction.

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

Conciseness4/5

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

The description is a single dense paragraph, but every sentence adds value. It could be slightly more structured (e.g., bullet points), but it remains concise and front-loaded with core purpose.

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?

With 8 all-optional parameters and an output schema, the description provides sufficient context: deduplication behavior, designatedAreaCount field, and chaining to other tools. The annotations provide readOnly/openWorld hints, making the tool well-described.

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 input schema has 100% coverage with descriptions for all 8 parameters. The description adds value by explaining the meaning of declaration_type values and clarifying that date filters apply to declaration date, improving semantic understanding beyond 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 clearly states the tool searches federal disaster declarations with specific filters (state, incident type, declaration type, date range, county) and returns deduplicated summaries. It distinguishes itself from sibling tools like fema_get_disaster by noting the disaster number is a chain key for other tools.

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 provides when-to-use guidance, explaining declaration type values (DR, EM, FM) and directs users to fema_get_disaster for full detail. This clearly differentiates usage from sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fema_search_nfipSearch NFIP Flood Insurance ClaimsA
Read-only
Inspect

Search National Flood Insurance Program (NFIP) claims data by state, county, ZIP code, and year range. Returns claim counts, amounts paid on building and contents, flood zones, and loss years. state is required — the full NFIP dataset is 2.7 million rows; unfiltered access is prohibited. When DataCanvas is enabled (CANVAS_PROVIDER_TYPE=duckdb) and results exceed the inline preview, the full result set is staged on a canvas for SQL aggregation via fema_dataframe_query. Use fema_dataframe_describe to inspect the staged table schema before writing SQL. Without canvas, results are returned inline up to the limit.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum claim rows to return in the inline preview (1–10000, default 1000). When DataCanvas is enabled, the canvas stages the full matching result set regardless of this value.
stateYesTwo-letter US state code (required). NFIP dataset is 2.7M rows — state filter is mandatory.
year_toNoEnd year of loss, inclusive (e.g., 2023).
zip_codeNoZIP code to narrow results to a specific area.
canvas_idNoOptional canvas ID from a prior call. Omit to create a fresh canvas. The response returns the canvas_id to pass to fema_dataframe_query.
year_fromNoStart year of loss, inclusive (e.g., 2020).
county_codeNoCounty code to narrow results within the state. Accepts the full 5-digit state+county FIPS (e.g., 48201 for Harris County TX) or the 3-digit county portion (e.g., 201) when state is provided — the server prepends the state FIPS automatically.

Output Schema

ParametersJSON Schema
NameRequiredDescription
claimsYesInline preview of claim records (first N rows). Full dataset available via canvas_id when spilled=true.
noticeNoGuidance on canvas usage or result scope.
spilledYesTrue when the full result set was staged on DataCanvas; use canvas_id + fema_dataframe_query for SQL analysis. False when all results fit inline.
canvas_idNoCanvas ID for the staged full result set. Pass to fema_dataframe_query and fema_dataframe_describe. Present only when spilled=true.
truncatedNoTrue when the canvas row cap (50,000) was reached before the full matching set was staged — the canvas holds a partial result. Apply tighter filters (county_code, zip_code, year range) to stage the complete set.
total_countYesTotal matching claims in the filtered dataset before the limit.
canvas_tableNoDuckDB table name on the canvas holding all fetched rows. Reference in SQL FROM clauses. Present when spilled=true.
returned_countYesNumber of claim records in the inline preview.
Behavior5/5

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

Beyond annotations (readOnlyHint, openWorldHint), the description details behavioral traits: results staging on canvas when enabled, inline return limit, mandatory state filter. No contradictions with annotations. It fully discloses how results are handled and constraints.

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

Conciseness4/5

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

Description is around 150 words and well-structured: purpose, constraints, canvas behavior, sibling references. Every sentence serves a distinct purpose. Slightly verbose in explaining canvas but overall efficient.

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?

Given the tool's complexity (7 parameters, canvas integration, large dataset), the description covers purpose, required constraints, parameter details, return values, and integration with siblings. Output schema is separate but mentioned. Complete for an agent to select and invoke.

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

Parameters5/5

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

Despite 100% schema coverage, the description adds significant meaning: explains that state is required, limit affects inline preview (overridden by canvas), canvas_id ties to prior call, county_code accepts both formats. This goes beyond baseline 3 by clarifying usage nuances.

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 clearly states the tool searches NFIP claims data by specific fields (state, county, ZIP, year range) and returns specific attributes (claim counts, amounts, flood zones, loss years). It distinguishes from siblings like fema_dataframe_query (for SQL aggregation) and fema_dataframe_describe (schema inspection), making the purpose unambiguous.

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?

Explicitly states that state is required and unfiltered access is prohibited due to dataset size. Provides clear context on when to use canvas (when DataCanvas enabled and results exceed preview) and when to use siblings (fema_dataframe_describe before writing SQL, fema_dataframe_query for aggregation). No ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Discussions

No comments yet. Be the first to start the discussion!

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources