Skip to content
All data sources

FEMA Flood Zones API and MCP server

No authfloodzone

US FEMA National Flood Hazard Layer context for property risk screening by point or bounding box.

FEMA Flood Zones is published by FEMA National Flood Hazard Layer and covers United States where NFHL data is published.

It refreshes on a schedule the publisher sets.

Last verified . That is when these facts were last rebuilt from the ParcelOps source registry, not when FEMA National Flood Hazard Layer last refreshed the data itself.

API access

Your AI client reaches FEMA Flood Zones through one ParcelOps MCP endpoint, so there is no separate key to hold for it and no per-source client to write. Reaching it takes no credentials of your own.

Where it came from

Freshness and coverage

FreshnessScheduled · Follows FEMA National Flood Hazard Layer publication updates; no universal cadence is declared.
Places coveredUnited States where NFHL data is published
Time coveredNot declared
CredentialsNo credentials required

What this source cannot tell you

  • Anything outside United States where NFHL data is published. A request past that edge comes back empty rather than approximated.
  • Which years it spans, because the covered period is not declared.
  • Anything FEMA National Flood Hazard Layer does not publish. ParcelOps returns this source as it stands and never fills a blank field from a different one.
  • Flood-zone context is a screening result, not an insurance, engineering, surveying, or regulatory determination.

Methods (3)

A method is one call your agent can make against this source.

  • queryAtPoint

    read

    Return FEMA flood zones at a property point.

    What you must providelatitudelongitude
    Records returnedflood-zone
    How to get more resultsnone
    Coordinate systemEPSG:4326
    FreshnessScheduled (source-level)
    Input schema
    {
      "type": "object",
      "properties": {
        "latitude": {
          "type": "number",
          "minimum": -90,
          "maximum": 90
        },
        "longitude": {
          "type": "number",
          "minimum": -180,
          "maximum": 180
        },
        "bufferMeters": {
          "type": "number"
        },
        "includeGeometry": {
          "type": "boolean"
        }
      },
      "required": [
        "latitude",
        "longitude"
      ],
      "additionalProperties": false
    }
    Output schema
    {
      "type": "object",
      "properties": {
        "kind": {
          "const": "parcelops.public-data"
        },
        "schemaVersion": {
          "type": "string"
        },
        "dataset": {
          "type": "object",
          "additionalProperties": true
        },
        "query": {
          "type": "object",
          "properties": {
            "latitude": {
              "type": "number",
              "minimum": -90,
              "maximum": 90
            },
            "longitude": {
              "type": "number",
              "minimum": -180,
              "maximum": 180
            },
            "bufferMeters": {
              "type": "number"
            }
          },
          "required": [
            "latitude",
            "longitude",
            "bufferMeters"
          ],
          "additionalProperties": true
        },
        "summary": {
          "type": "object",
          "properties": {
            "matchedRecords": {
              "type": [
                "integer",
                "null"
              ]
            },
            "returnedRecords": {
              "type": "integer"
            },
            "truncated": {
              "type": "boolean"
            }
          },
          "required": [
            "matchedRecords",
            "returnedRecords",
            "truncated"
          ],
          "additionalProperties": true
        },
        "records": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": true
          }
        },
        "source": {
          "type": "object",
          "additionalProperties": true
        },
        "caveats": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "kind",
        "schemaVersion",
        "dataset",
        "query",
        "summary",
        "records",
        "source",
        "caveats"
      ],
      "additionalProperties": true
    }
    • A zero-match answer is not proof the point is outside a Special Flood Hazard Area: NFHL mapping is not published for every community.
    • A polygon intersecting the search buffer is not a statement about the parcel; each record carries its own sfhaIndicator.
  • queryInBbox

    read

    Return FEMA flood zones within a bounding box.

    What you must providexminyminxmaxymax
    Records returnedflood-zone
    How to get more resultsnone
    Coordinate systemEPSG:4326
    FreshnessScheduled (source-level)
    Input schema
    {
      "type": "object",
      "properties": {
        "xmin": {
          "type": "number",
          "minimum": -180,
          "maximum": 180
        },
        "ymin": {
          "type": "number",
          "minimum": -90,
          "maximum": 90
        },
        "xmax": {
          "type": "number",
          "minimum": -180,
          "maximum": 180
        },
        "ymax": {
          "type": "number",
          "minimum": -90,
          "maximum": 90
        },
        "maxResults": {
          "type": "integer",
          "minimum": 1,
          "maximum": 1000
        },
        "includeGeometry": {
          "type": "boolean"
        }
      },
      "required": [
        "xmin",
        "ymin",
        "xmax",
        "ymax"
      ],
      "additionalProperties": false
    }
    Output schema
    {
      "type": "object",
      "properties": {
        "kind": {
          "const": "parcelops.public-data"
        },
        "schemaVersion": {
          "type": "string"
        },
        "dataset": {
          "type": "object",
          "additionalProperties": true
        },
        "query": {
          "type": "object",
          "properties": {
            "xmin": {
              "type": "number",
              "minimum": -180,
              "maximum": 180
            },
            "ymin": {
              "type": "number",
              "minimum": -90,
              "maximum": 90
            },
            "xmax": {
              "type": "number",
              "minimum": -180,
              "maximum": 180
            },
            "ymax": {
              "type": "number",
              "minimum": -90,
              "maximum": 90
            },
            "maxResults": {
              "type": "integer"
            }
          },
          "required": [
            "xmin",
            "ymin",
            "xmax",
            "ymax",
            "maxResults"
          ],
          "additionalProperties": true
        },
        "summary": {
          "type": "object",
          "properties": {
            "matchedRecords": {
              "type": [
                "integer",
                "null"
              ]
            },
            "returnedRecords": {
              "type": "integer"
            },
            "truncated": {
              "type": "boolean"
            }
          },
          "required": [
            "matchedRecords",
            "returnedRecords",
            "truncated"
          ],
          "additionalProperties": true
        },
        "records": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": true
          }
        },
        "source": {
          "type": "object",
          "additionalProperties": true
        },
        "caveats": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "kind",
        "schemaVersion",
        "dataset",
        "query",
        "summary",
        "records",
        "source",
        "caveats"
      ],
      "additionalProperties": true
    }
    • A zero-match envelope is not proof the area is outside a Special Flood Hazard Area: NFHL mapping is not published for every community.
    • The result is capped at maxResults; `truncated` says when more polygons may intersect.
  • getServiceInfo

    read

    Return FEMA layer metadata and caveats.

    FreshnessScheduled (source-level)
    Input schema
    {
      "type": "object",
      "properties": {},
      "required": [],
      "additionalProperties": false
    }

Where this source is used