Skip to content
All data sources

USACE National Inventory of Dams API and MCP server

No authusace-nid

Federal dam inventory context for a property: which listed dams sit near a site, the hazard potential class the regulator assigned each one, the condition assessment and last inspection date, storage and height, owner type, and which state dam safety office holds the file. Hazard potential describes what a failure would cost downstream, not how likely a failure is and not whether a given point is in the failure path. The inventory publishes no inundation mapping, so this connector is a prompt to request inspection reports and emergency action plan mapping from the named regulator, never a flood or inundation determination. Flood zone remains the floodzone connector. Coverage is the 50 states plus Puerto Rico and Guam.

USACE National Inventory of Dams is published by USACE National Inventory of Dams (NGDA), hosted feature layer and covers United States: the 50 states, Puerto Rico, and Guam publish National Inventory of Dams records and No records at all for the District of Columbia, the U.S. Virgin Islands, American Samoa, and the Northern Mariana Islands.

It refreshes on a schedule, every 7 days.

Last verified . That is when these facts were last rebuilt from the ParcelOps source registry, not when USACE National Inventory of Dams (NGDA), hosted feature layer last refreshed the data itself.

API access

Your AI client reaches USACE National Inventory of Dams 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 · every 7 days · The hosted mirror is checked weekly against the USACE enterprise source. Each record carries its own update date, and record dates lag the refresh because states report on their own schedules.
Places coveredUnited States: the 50 states, Puerto Rico, and Guam publish National Inventory of Dams records, No records at all for the District of Columbia, the U.S. Virgin Islands, American Samoa, and the Northern Mariana Islands
Time covered… → present · Structures span from nineteenth-century dams to current completions. Condition assessment, inspection, and emergency action plan dates are per record and are frequently older than the layer refresh.
CredentialsNo credentials required

What this source cannot tell you

  • Anything outside United States: the 50 states, Puerto Rico, and Guam publish National Inventory of Dams records and No records at all for the District of Columbia, the U.S. Virgin Islands, American Samoa, and the Northern Mariana Islands. A request past that edge comes back empty rather than approximated.
  • Structures span from nineteenth-century dams to current completions. Condition assessment, inspection, and emergency action plan dates are per record and are frequently older than the layer refresh.
  • Anything USACE National Inventory of Dams (NGDA), hosted feature layer does not publish. ParcelOps returns this source as it stands and never fills a blank field from a different one.
  • Proximity to a dam is not an inundation risk finding. Hazard potential classification describes the consequence of a failure for people and property downstream, not the probability of failure and not whether a given point is in the failure path.
  • Downstream inundation depends on terrain, breach behaviour, reservoir level, and warning time. The National Inventory of Dams does not model or publish inundation extents in this layer, so nothing this connector returns places a property inside or outside a dam failure inundation area.
  • Never present a dam list as a flood determination. Flood zone comes from the FEMA National Flood Hazard Layer through the floodzone connector, and most dam failure inundation areas are not mapped as special flood hazard areas.
  • This connector cannot tell upstream from downstream. It sorts by straight-line distance from the coordinates supplied, so a dam across a ridge and a dam on the same creek read identically.
  • Hazard potential and condition assessment are different facts. A high hazard dam rated Satisfactory is ordinary; a Poor or Unsatisfactory condition assessment on any hazard class is the signal worth escalating.
  • Emergency action plan status is blank on the overwhelming majority of records. The layer publishes only Yes and Not Required, never No, so a blank is an unreported field and is never evidence that no plan exists.
  • Condition assessment is unreported on roughly one dam in five, and operational status on most. A blank is an unreported field, not a clean bill of health.
  • The inventory lists dams that would risk life or critical facilities on failure, plus dams roughly at or above 25 feet high with more than 15 acre-feet of storage or above 50 acre-feet of storage and more than 6 feet high. Farm ponds and stock tanks below those thresholds are absent, and USACE states the inventory does not yet contain every dam meeting its own criteria.
  • Inspection reports, engineering drawings, breach studies, and emergency action plan mapping are held by the state dam safety office named in stateRegulatoryAgency or by the federal owner, and are not exposed here.
  • The USACE-hosted Dams_Public FeatureServer requires a token, so this connector reads the keyless Esri Federal hosted mirror of the same NGDA source instead.

Methods (4)

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

  • findDamsNearPoint

    read

    Listed dams near coordinates, nearest first, with a hazard class rollup.

    What you must providelatitudelongitude
    Records returneddam
    How to get more resultsoffset (offsetField: offset, limitField: limit)
    UnitsdistanceMiles: statute miles from the supplied coordinates · damHeightFeet: feet · nidStorageAcreFeet: acre-feet · maximumStorageAcreFeet: acre-feet · surfaceAreaAcres: acres · drainageAreaSquareMiles: square miles
    Coordinate systemEPSG:4326
    FreshnessScheduled · every 7 days (source-level)
    Input schema
    {
      "type": "object",
      "properties": {
        "latitude": {
          "type": "number",
          "minimum": -90,
          "maximum": 90
        },
        "longitude": {
          "type": "number",
          "minimum": -180,
          "maximum": 180
        },
        "radiusMiles": {
          "type": "number",
          "minimum": 0.1,
          "maximum": 25
        },
        "hazardPotential": {
          "type": "string",
          "enum": [
            "High",
            "Significant",
            "Low",
            "Undetermined"
          ],
          "description": "Consequence class if the dam failed. Not a probability and not a site finding."
        },
        "minStorageAcreFeet": {
          "type": "number",
          "minimum": 0,
          "description": "Minimum NID storage in acre-feet. Drops small impoundments."
        },
        "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 200
        },
        "offset": {
          "type": "integer",
          "minimum": 0,
          "maximum": 2000
        }
      },
      "required": [
        "latitude",
        "longitude"
      ],
      "additionalProperties": false
    }
    • hazardSummary counts every dam matching the query, not only the returned page.
    • A dam inside the radius may have no hydraulic connection to the site. Straight-line distance is not a flow path.
    • If the question is really flood exposure, this is the wrong answer to give: dam proximity is not inundation, and flood zone comes from the FEMA flood hazard layer through the floodzone connector.

    distanceMiles is from the point given, never from a parcel line.

  • getDamDetail

    read

    Full inventory record for one dam by its National Inventory of Dams identifier.

    What you must providenidId
    Records returneddam
    How to get more resultsnone
    Coordinate systemEPSG:4326
    FreshnessScheduled · every 7 days (source-level)
    Input schema
    {
      "type": "object",
      "properties": {
        "nidId": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{3,24}$",
          "description": "State-prefixed identifier such as TX09668."
        }
      },
      "required": [
        "nidId"
      ],
      "additionalProperties": false
    }
    • A null field is an unreported value, never a zero.
    • Condition and inspection dates are as reported by the regulator and are often years old.

    Adds engineering, spillway, lock, and authority fields.

  • searchDamsByCounty

    read

    Listed dams in one county or parish, with a hazard class rollup.

    What you must providestatecounty
    Records returneddam
    How to get more resultsoffset (offsetField: offset, limitField: limit)
    Coordinate systemEPSG:4326
    FreshnessScheduled · every 7 days (source-level)
    Input schema
    {
      "type": "object",
      "properties": {
        "state": {
          "type": "string",
          "minLength": 2,
          "maxLength": 40,
          "description": "Two-letter code such as TX, or the full name such as Texas."
        },
        "county": {
          "type": "string",
          "minLength": 2,
          "maxLength": 80,
          "description": "County, parish, borough, or census area name. A County or Parish suffix is stripped."
        },
        "hazardPotential": {
          "type": "string",
          "enum": [
            "High",
            "Significant",
            "Low",
            "Undetermined"
          ],
          "description": "Consequence class if the dam failed. Not a probability and not a site finding."
        },
        "minStorageAcreFeet": {
          "type": "number",
          "minimum": 0,
          "description": "Minimum NID storage in acre-feet. Drops small impoundments."
        },
        "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 200
        },
        "offset": {
          "type": "integer",
          "minimum": 0,
          "maximum": 2000
        }
      },
      "required": [
        "state",
        "county"
      ],
      "additionalProperties": false
    }
    • A county name the layer does not carry returns the same empty result as a county with no listed dams, so the result states the exact value that was matched.

    Ordered by identifier, not by distance from anything.

  • getServiceInfo

    read

    Layer URL, licence, coverage, vocabularies, units, and what this connector does not expose.

    Records returneddata_source
    How to get more resultsnone
    FreshnessScheduled · every 7 days (source-level)
    Input schema
    {
      "type": "object",
      "properties": {},
      "required": [],
      "additionalProperties": false
    }

    States the inundation and inspection gaps machine-readably.

Where this source is used