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 has a clearly distinct purpose: searching disasters, getting disaster details, retrieving housing assistance, public assistance, NFIP claims, and a generic OData query. The descriptions explicitly delineate their roles, and the generic query is framed as an escape hatch for uncovered datasets, preventing ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern prefixed with 'fema', using snake_case. Examples: fema_search_disasters, fema_get_disaster, fema_get_housing_assistance, fema_dataframe_query. There are no deviations or mixed conventions.

Tool Count5/5

With 8 tools, the server is well-scoped for querying FEMA data. It covers key datasets (disasters, housing assistance, public assistance, NFIP claims) plus a generic query for other datasets, without being excessive or too sparse.

Completeness4/5

The tool set covers the main FEMA databases with convenience tools for disasters, housing, public assistance, and NFIP claims. The generic fema_query_dataset fills gaps for other datasets. Missing dedicated tools for some datasets (e.g., FIMA NFIP Policies) but the generic query mitigates this, resulting in only minor incompleteness.

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. The canvas holds the full NFIP claims result set — row count here is the total available for queries.

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 readOnlyHint, idempotentHint, and openWorldHint=false. Description adds value by stating the canvas holds the full NFIP claims result set and row count equals total available, which helps the agent understand the data scope. 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: first states purpose, second gives usage guidance and additional context. No filler, every sentence serves a clear role.

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 has an output schema (though not displayed), the description covers purpose, prerequisite relationship, and data scope. No critical missing info; the agent knows exactly when and why to call it.

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?

Single parameter canvas_id has schema description 'Canvas ID from the fema_search_nfip response.' The description adds context by linking the ID source, which is beyond the schema. With 100% coverage baseline 3, this extra context merits a 4.

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 uses specific verb 'list' and resources 'tables and column schemas' on a DataCanvas. It clearly differentiates from sibling tools like fema_dataframe_query by stating its prerequisite role.

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 states 'Call this before fema_dataframe_query' and explains what it discovers (table name, column names, DuckDB data types). Lacks explicit when-not-to-use, but context implies it's only needed for query preparation.

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.
Behavior5/5

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

The description confirms the read-only nature hinted by annotations and adds behavioral context about the return schema (counties, municipalities, programs, incident period, state info) and chaining, without contradiction.

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 with no redundancy: purpose, usage guidance, chaining. Each sentence is essential 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 an output schema exists, the description covers the key return aspects and the chaining relationship. For a single-parameter read-only tool, this is complete.

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 already describes disaster_number; the description adds context with an example (4781) and the source (fema_search_disasters). This adds value beyond the schema and compensates for any lack of enum or deeper semantics.

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 fetches designated-area rows for a specific disaster by number, including the return content (county, programs, incident period, state info). It distinguishes from sibling tools by naming them explicitly.

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?

Provides explicit guidance: use fema_search_disasters to find the number first, and explains that the returned disaster_number chains to fema_get_public_assistance and fema_get_housing_assistance. This tells both when to use and what not to use.

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.
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 indicate readOnlyHint=true and openWorldHint=true. The description adds context about data availability (only when ia_declared: true), which is 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?

Three sentences, each carrying essential information: what it does, what it returns, and prerequisites. No redundancy or fluff.

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?

Covers return data types, prerequisite condition, and cross-references to sibling tools. With an output schema present, description is sufficiently complete.

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% (baseline 3). The description adds value by explaining how to obtain disaster_number from another tool and the purpose of the 'type' parameter, going 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?

The description clearly states the tool retrieves IA housing data by disaster number, listing specific data fields (valid registrations, IHP amounts, etc.) and distinguishes it from siblings like 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 explicitly tells when to use (when ia_declared is true) and how to obtain parameters (disaster_number from fema_search_disasters, check via fema_get_disaster). It lacks explicit when-not alternatives but implies usage constraints.

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.
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 provide readOnlyHint and openWorldHint. Description adds PA-specific context (obligation amounts, status, program requirement) which aids understanding, but does not cover rate limits or data freshness.

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, no wasted words. Front-loaded with purpose, then constraints, then prerequisite. Each sentence adds value.

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 output schema present, description covers purpose, parameter usage, prerequisite, and scope alternatives. Complete for a retrieval tool with clear annotations.

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 100%, so baseline 3. Description adds meaning by stating mutual exclusivity of disaster_number and state, and hints for county filter and sourcing disaster_number from sister tool.

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?

Clear verb+resource: 'Retrieve Public Assistance (PA) funded project records'. Mentions specific returned fields and distinguishes from siblings by referencing disaster_number from fema_search_disasters and PA program declaration.

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 states when to use disaster_number vs state, and mentions prerequisite (PA program declared). Does not explicitly state when not to use, but context is clear.

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.
total_countYesTotal matching records before pagination.
returned_countYesNumber of records in this response.
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true. Description adds behavioral context: potential timeout on large datasets without proper filters, unknown dataset error behavior, and that parameters are raw OData expressions. No contradiction with annotations.

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 front-loaded with main purpose, then examples, then specific usage tips. Each sentence adds value, though some length could be trimmed. Overall well-structured for quick comprehension.

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 generic nature and the presence of an output schema, the description covers error conditions, performance considerations, and dataset-specific quirks. It doesn't detail return format, but that's standard OData and known from the schema. Adequate for complex generic query 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?

Schema coverage is 100%, so baseline is 3. Description adds value beyond schema: specifies single quotes for string values in filter, mentions case-sensitivity for dataset, clarifies select is comma-separated, and explains orderby expression format. This enriches semantic understanding without repetition.

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 it's a generic OData query for any OpenFEMA v2 dataset, explicitly positioning it as an escape hatch for datasets not covered by convenience tools. Provides concrete dataset examples (FimaNfipPolicies, etc.), distinguishing it from specialized 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?

Explicitly says 'the escape hatch for datasets the convenience tools do not cover' and gives specific when-to-use guidance. Includes critical tips: for NFIP Policies use propertyState, always include a county or ZIP filter to avoid timeout, and notes that unknown dataset names return an error.

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.
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?

Discloses deduplication behavior (each disaster number appears once), return of designatedAreaCount, and date filter application. Annotations (readOnlyHint, openWorldHint) are consistent and complemented by behavioral details. 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.

Conciseness5/5

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

Concise: two sentences plus additional usage notes. Every sentence adds value—no fluff. Front-loaded with main purpose and key 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?

Given 8 parameters, output schema exists, and no required params, the description is complete. It explains result format, deduplication, and cross-tool references. Covers all necessary context for correct usage.

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%, yet description adds value: explains declaration_type filter options, that date filters apply to declaration date, and that disaster number is the chain key for related tools. Enriches parameter understanding 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?

The description clearly states the tool searches federal disaster declarations with specific filters (state, incident type, declaration type, date range, county). It specifies the output is deduplicated declaration-level summaries with designatedAreaCount, and distinguishes from sibling tools like fema_get_disaster for detailed 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?

Explicit guidance: declares when to use fema_get_disaster for detailed area rows, explains declaration_type enum values (DR, EM, FM), clarifies date filter behavior, and provides chain key usage. Clearly differentiates from siblings.

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 rows to fetch (1–10000, default 1000).
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 (e.g., 201 for Harris County TX). Use with state.

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 when canvas is enabled.
truncatedNoTrue when the canvas row cap (50,000) was reached before all matching rows were staged. Apply tighter filters (county_code, zip_code, year range) for a 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.
Behavior4/5

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

Annotations already indicate readOnlyHint=true and openWorldHint=true, making the safe read operation clear. The description adds valuable behavioral context about canvas integration: results are staged for SQL aggregation if canvas is enabled and results exceed inline preview. However, it does not detail rate limits or what happens when the canvas is not enabled (it says results returned inline up to the limit).

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 (six sentences) and front-loaded with the primary purpose. Every sentence adds essential context: state requirement, dataset size, canvas behavior, and tool alternatives. No unnecessary words or redundancies.

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 presence of an output schema (not shown but mentioned) and comprehensive input schema coverage, the description adequately explains the tool's purpose, required parameters, return fields, and special behavior (canvas staging). It covers all necessary context for an agent to select and invoke the tool correctly.

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?

The input schema covers all 7 parameters with descriptions, achieving 100% coverage. The description reinforces the state requirement and mentions year range and canvas_id, but does not add substantial meaning beyond what the schema already provides. Baseline 3 is appropriate when schema documentation is complete.

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 state, county, ZIP code, and year range, and specifies the return fields (claim counts, amounts, flood zones, loss years). This distinguishes it from sibling tools like fema_search_disasters and fema_query_dataset, as it is specific to NFIP claims.

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 that state is required and unfiltered access is prohibited due to dataset size (2.7M rows). It provides guidance on when to use fema_dataframe_query (when results exceed inline preview with canvas enabled) and recommends using fema_dataframe_describe to inspect the staged table schema. This clearly outlines when to use this tool versus alternatives.

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