geotap-mcp-server 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,757 @@
1
+ # GeoTap Developer
2
+
3
+ **One API for 28+ US federal environmental and infrastructure data sources.**
4
+
5
+ GeoTap aggregates data from FEMA, USGS, EPA, NOAA, USDA, USFWS, DOT, Census, and more into a single REST API. This repository contains:
6
+
7
+ - **REST API documentation** — query federal data programmatically
8
+ - **MCP Server** — connect GeoTap to Claude, Cursor, Windsurf, and other AI tools
9
+
10
+ > **Web App**: [geotapdata.com](https://geotapdata.com) — no code required, draw on a map and explore data visually.
11
+
12
+ ---
13
+
14
+ ## Data Sources
15
+
16
+ | Agency | Data Available |
17
+ |--------|---------------|
18
+ | **FEMA** | Flood zones, FIRM panels, flood insurance rate maps, floodway boundaries |
19
+ | **USGS** | Elevation (3DEP at 1m/10m/30m), geology, streamgages, groundwater, land use (NLCD), StreamStats, National Streamflow Statistics (NSS) |
20
+ | **EPA** | Water quality (ATTAINS), Superfund sites, brownfields, TRI toxic releases, USTs, NPDES outfalls |
21
+ | **NOAA** | Rainfall (Atlas 14), IDF curves, tide stations, climate projections (CMIP6), weather stations, radar |
22
+ | **USDA/NRCS** | Soils (SSURGO), curve numbers, hydrologic soil groups, TR-55 parameters |
23
+ | **USFWS** | Wetlands (NWI), endangered species, critical habitat |
24
+ | **DOT** | Bridges, tunnels, National Bridge Inventory |
25
+ | **Census** | Demographics, boundaries, TIGER geographic data |
26
+ | **USACE** | Dams, levees, navigation channels |
27
+ | **NHD** | Stream flowlines, hydrography, watershed boundaries (HUC-8/10/12) |
28
+ | **Other** | Power plants, mines, tribal lands, building footprints, and more |
29
+
30
+ Every API response includes **source attribution** — the federal agency, dataset name, and reference URL — so you always know where the data came from.
31
+
32
+ ---
33
+
34
+ ## Quick Start
35
+
36
+ ### Option 1: REST API
37
+
38
+ ```bash
39
+ # Get flood zones, wetlands, soils, and 16 more layers for a location
40
+ curl "https://geotapdata.com/api/v1/spatial/near?lat=30.267&lng=-97.743&radius=0.5"
41
+
42
+ # Get NOAA Atlas 14 rainfall data
43
+ curl "https://geotapdata.com/api/v1/rainfall/atlas14?lat=30.267&lon=-97.743"
44
+
45
+ # Geocode an address
46
+ curl "https://geotapdata.com/api/v1/geocode?address=123+Main+St+Austin+TX"
47
+ ```
48
+
49
+ ### Option 2: MCP Server (for AI tools)
50
+
51
+ Add to Claude Desktop or Cursor config:
52
+ ```json
53
+ {
54
+ "mcpServers": {
55
+ "geotap": {
56
+ "command": "npx",
57
+ "args": ["-y", "geotap-mcp-server"]
58
+ }
59
+ }
60
+ }
61
+ ```
62
+
63
+ Then ask: *"What are the flood zones at 123 Main St, Austin TX?"*
64
+
65
+ ---
66
+
67
+ ## REST API Reference
68
+
69
+ **Base URL**: `https://geotapdata.com/api/v1`
70
+
71
+ ### Authentication
72
+
73
+ API keys are **optional** during the open beta. All endpoints work without authentication.
74
+
75
+ | Method | Details |
76
+ |--------|---------|
77
+ | **Header** | `X-API-Key: your-key-here` |
78
+ | **Query param** | `?api_key=your-key-here` |
79
+ | **Register** | `POST https://geotapdata.com/api/keys/register` with `{"email": "you@example.com"}` |
80
+
81
+ Authenticated requests get higher rate limits and usage tracking.
82
+
83
+ ### Rate Limits
84
+
85
+ | Tier | Monthly Requests | Burst (per min) | Cost |
86
+ |------|-----------------|------------------|------|
87
+ | **Unauthenticated** | No limit | 100/min (IP-based) | Free |
88
+ | **Free** (with key) | 50 | 5/min | Free |
89
+ | **Starter** | 1,000 | 20/min | Coming soon |
90
+ | **Pro** | 10,000 | 60/min | Coming soon |
91
+ | **Enterprise** | 100,000 | 200/min | Coming soon |
92
+
93
+ Rate limit headers are included in every response: `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset`.
94
+
95
+ ### Response Format
96
+
97
+ Every response includes:
98
+
99
+ ```json
100
+ {
101
+ "success": true,
102
+ "data": { ... },
103
+ "_meta": {
104
+ "sources": [
105
+ {
106
+ "agency": "FEMA",
107
+ "dataset": "National Flood Hazard Layer (NFHL)",
108
+ "url": "https://www.fema.gov/flood-maps/national-flood-hazard-layer"
109
+ }
110
+ ],
111
+ "retrievedAt": "2026-03-19T12:00:00.000Z",
112
+ "disclaimer": "Data sourced from US federal agencies via GeoTap..."
113
+ }
114
+ }
115
+ ```
116
+
117
+ ---
118
+
119
+ ### Endpoints
120
+
121
+ #### Geocoding
122
+
123
+ | Method | Endpoint | Description |
124
+ |--------|----------|-------------|
125
+ | GET | `/geocode?address={address}` | Convert a US address to coordinates |
126
+
127
+ ```bash
128
+ curl "https://geotapdata.com/api/v1/geocode?address=456+Oak+Ave+Houston+TX"
129
+ ```
130
+
131
+ #### Spatial Queries
132
+
133
+ | Method | Endpoint | Description |
134
+ |--------|----------|-------------|
135
+ | GET | `/spatial/near?lat={lat}&lng={lng}&radius={km}` | Query all layers near a point |
136
+ | POST | `/spatial/in-polygon` | Query all layers within a polygon |
137
+ | POST | `/spatial/summary` | Feature counts per layer (fast) |
138
+ | GET | `/spatial/bbox?bbox={w,s,e,n}` | Query layers in a bounding box |
139
+
140
+ ```bash
141
+ # All environmental data within 0.5 km of a point
142
+ curl "https://geotapdata.com/api/v1/spatial/near?lat=34.05&lng=-118.25&radius=0.5"
143
+
144
+ # Specific layers only
145
+ curl "https://geotapdata.com/api/v1/spatial/near?lat=34.05&lng=-118.25&radius=0.5&layers=flood_zones,wetlands,soil_map_units"
146
+
147
+ # Query within a polygon
148
+ curl -X POST "https://geotapdata.com/api/v1/spatial/in-polygon" \
149
+ -H "Content-Type: application/json" \
150
+ -d '{
151
+ "polygon": {
152
+ "type": "Polygon",
153
+ "coordinates": [[[-97.75,30.26],[-97.74,30.26],[-97.74,30.27],[-97.75,30.27],[-97.75,30.26]]]
154
+ }
155
+ }'
156
+ ```
157
+
158
+ #### Data Layers
159
+
160
+ | Method | Endpoint | Description |
161
+ |--------|----------|-------------|
162
+ | GET | `/layers` | List all available data layers |
163
+ | GET | `/layers/{name}` | Get metadata for a layer |
164
+ | GET | `/layers/{name}/features?bbox={w,s,e,n}` | Get features from a layer |
165
+
166
+ **Available layer names**: `flood_zones`, `wetlands`, `soil_map_units`, `dem_elevation`, `nlcd_land_cover`, `contours`, `building_footprints`, `stream_gauges`, `streams_rivers`, `weather_alerts`, `critical_habitat`, `protected_lands`, `brownfields`, `superfund`, `ust`, `npdes_outfalls`, `dams`, `levees`, `impaired_waters`, `satellite_imagery`, `sole_source_aquifers`
167
+
168
+ #### Rainfall & Precipitation
169
+
170
+ | Method | Endpoint | Description |
171
+ |--------|----------|-------------|
172
+ | GET | `/rainfall/atlas14?lat={lat}&lon={lon}` | NOAA Atlas 14 precipitation frequency |
173
+ | GET | `/rainfall/atlas14/idf?lat={lat}&lon={lon}` | IDF curve data |
174
+ | POST | `/rainfall/hyetograph` | Generate design storm hyetograph |
175
+ | POST | `/rainfall/export` | Export hyetograph as CSV/JSON |
176
+ | GET | `/rainfall/distributions` | List rainfall distribution types |
177
+ | GET | `/rainfall/recommend?lat={lat}&lon={lon}` | Recommended SCS distribution |
178
+ | GET | `/rainfall/climate/scenarios` | Available climate scenarios |
179
+ | GET | `/rainfall/climate/factors?lat={lat}&lon={lon}&horizon={h}&scenario={s}` | Climate change multipliers |
180
+ | POST | `/rainfall/climate/project` | Future rainfall projections |
181
+ | GET | `/rainfall/uncertainty/bounds?lat={lat}&lon={lon}&returnPeriod={rp}&duration={d}` | Confidence intervals |
182
+ | POST | `/rainfall/uncertainty/envelope` | Monte Carlo uncertainty bands |
183
+ | POST | `/rainfall/uncertainty/sensitivity` | Parameter sensitivity analysis |
184
+
185
+ ```bash
186
+ # Atlas 14 rainfall for all durations and return periods
187
+ curl "https://geotapdata.com/api/v1/rainfall/atlas14?lat=32.78&lon=-96.80"
188
+
189
+ # Generate a 25-year, 24-hour design storm hyetograph
190
+ curl -X POST "https://geotapdata.com/api/v1/rainfall/hyetograph" \
191
+ -H "Content-Type: application/json" \
192
+ -d '{
193
+ "latitude": 32.78,
194
+ "longitude": -96.80,
195
+ "returnPeriod": "25yr",
196
+ "duration": 24,
197
+ "timeInterval": 15,
198
+ "distribution": "SCS Type III"
199
+ }'
200
+
201
+ # Climate-adjusted rainfall projection
202
+ curl -X POST "https://geotapdata.com/api/v1/rainfall/climate/project" \
203
+ -H "Content-Type: application/json" \
204
+ -d '{
205
+ "latitude": 32.78,
206
+ "longitude": -96.80,
207
+ "returnPeriod": "100yr",
208
+ "duration": 24,
209
+ "horizon": "mid-century",
210
+ "scenario": "SSP5-8.5"
211
+ }'
212
+ ```
213
+
214
+ #### Watershed & Hydrology
215
+
216
+ | Method | Endpoint | Description |
217
+ |--------|----------|-------------|
218
+ | POST | `/watershed/delineate` | Delineate watershed (USGS StreamStats) |
219
+ | GET | `/watershed/characteristics?lat={lat}&lng={lng}` | Basin parameters |
220
+ | GET | `/watershed/flow-statistics?lat={lat}&lng={lng}` | Peak/low flow estimates |
221
+ | GET | `/watershed/flowlines?bbox={w,s,e,n}` | Stream network (NHD) |
222
+ | GET | `/watershed/water-quality?bbox={w,s,e,n}` | Watershed water quality |
223
+
224
+ ```bash
225
+ # Delineate watershed from a pour point
226
+ curl -X POST "https://geotapdata.com/api/v1/watershed/delineate" \
227
+ -H "Content-Type: application/json" \
228
+ -d '{"lat": 36.12, "lng": -97.06}'
229
+ ```
230
+
231
+ #### Hydrology Toolkit
232
+
233
+ | Method | Endpoint | Description |
234
+ |--------|----------|-------------|
235
+ | POST | `/hydrology/analyze` | Complete hydrologic analysis (CN, Tc, peak flow) |
236
+ | GET | `/hydrology/distributions` | Available rainfall distributions |
237
+ | GET | `/hydrology/distribution?lat={lat}&lon={lon}` | Recommended distribution |
238
+
239
+ #### Curve Number
240
+
241
+ | Method | Endpoint | Description |
242
+ |--------|----------|-------------|
243
+ | GET | `/cn/lookup?nlcd={code}&hsg={group}` | Lookup CN for land use + soil |
244
+ | GET | `/cn/tables` | Complete CN lookup tables |
245
+ | POST | `/cn/analyze` | Weighted CN for catchment polygons |
246
+
247
+ ```bash
248
+ # Lookup curve number for developed land on B soils
249
+ curl "https://geotapdata.com/api/v1/cn/lookup?nlcd=22&hsg=B"
250
+
251
+ # Calculate weighted CN for a catchment
252
+ curl -X POST "https://geotapdata.com/api/v1/cn/analyze" \
253
+ -H "Content-Type: application/json" \
254
+ -d '{"catchments": {"type": "FeatureCollection", "features": [...]}}'
255
+ ```
256
+
257
+ #### Water Quality
258
+
259
+ | Method | Endpoint | Description |
260
+ |--------|----------|-------------|
261
+ | POST | `/water-quality/receiving-water` | EPA ATTAINS data with downstream trace |
262
+ | GET | `/water-quality/impairments?huc12={code}` | Impairments by HUC-12 |
263
+ | GET | `/water-quality/watershed?lat={lat}&lon={lon}` | Identify HUC-12 for a point |
264
+
265
+ #### Waterway Permits
266
+
267
+ | Method | Endpoint | Description |
268
+ |--------|----------|-------------|
269
+ | POST | `/waterway-permits/features` | Find streams, wetlands, waterbodies |
270
+ | POST | `/waterway-permits/analyze` | Determine required permits |
271
+
272
+ #### Monitoring Stations
273
+
274
+ | Method | Endpoint | Description |
275
+ |--------|----------|-------------|
276
+ | GET | `/stations?bbox={w,s,e,n}` | Find USGS/NOAA stations |
277
+ | GET | `/stations/search?q={query}` | Search by name or ID |
278
+ | GET | `/stations/types` | Available station types |
279
+ | GET | `/stations/watersheds?bbox={w,s,e,n}` | HUC watershed boundaries |
280
+ | GET | `/stations/watersheds/{hucCode}` | Specific watershed by HUC code |
281
+
282
+ #### Gage Intelligence
283
+
284
+ **Gauged sites** (requires USGS station ID):
285
+
286
+ | Method | Endpoint | Description |
287
+ |--------|----------|-------------|
288
+ | GET | `/gage-intelligence/{siteId}/flood-frequency` | Bulletin 17C flood frequency |
289
+ | GET | `/gage-intelligence/{siteId}/flow-duration` | Flow duration curve |
290
+ | GET | `/gage-intelligence/{siteId}/low-flow` | 7Q10, 7Q2, harmonic mean |
291
+ | GET | `/gage-intelligence/{siteId}/storm-events` | Historical storm events |
292
+ | GET | `/gage-intelligence/{siteId}/storm-events/{eventId}` | Storm event detail |
293
+ | GET | `/gage-intelligence/{siteId}/storm-events/{eventId}/export` | Export for HEC-HMS |
294
+ | GET | `/gage-intelligence/{siteId}/summary` | Gage overview |
295
+ | GET | `/gage-intelligence/{siteId}/published-stats` | Official USGS GageStats |
296
+ | GET | `/gage-intelligence/{siteId}/compare` | Computed vs. published QA |
297
+
298
+ **Ungaged sites** (regional regression):
299
+
300
+ | Method | Endpoint | Description |
301
+ |--------|----------|-------------|
302
+ | POST | `/gage-intelligence/ungaged/estimate` | NSS flood frequency estimate |
303
+ | POST | `/gage-intelligence/ungaged/estimate-all` | All available statistics |
304
+ | GET | `/gage-intelligence/ungaged/regions?state={ST}` | NSS regions by state |
305
+ | GET | `/gage-intelligence/ungaged/parameters?state={ST}` | Required basin characteristics |
306
+
307
+ **Watershed similarity**:
308
+
309
+ | Method | Endpoint | Description |
310
+ |--------|----------|-------------|
311
+ | POST | `/gage-intelligence/similarity/find` | Find analog watersheds |
312
+ | POST | `/gage-intelligence/similarity/find-with-stats` | Similar watersheds + stats |
313
+ | POST | `/gage-intelligence/similarity/recommend-index` | Best reference gage |
314
+ | POST | `/gage-intelligence/similarity/transfer` | Transfer statistics (DA ratio) |
315
+
316
+ ```bash
317
+ # Flood frequency at USGS gage 08158000 (Colorado River at Austin)
318
+ curl "https://geotapdata.com/api/v1/gage-intelligence/08158000/flood-frequency"
319
+
320
+ # 7Q10 low flow for NPDES permits
321
+ curl "https://geotapdata.com/api/v1/gage-intelligence/08158000/low-flow"
322
+
323
+ # Estimate flood frequency at an ungaged site
324
+ curl -X POST "https://geotapdata.com/api/v1/gage-intelligence/ungaged/estimate" \
325
+ -H "Content-Type: application/json" \
326
+ -d '{"state": "TX", "region": "4", "parameters": {"drainageArea": 10.5}}'
327
+ ```
328
+
329
+ #### Elevation & Terrain
330
+
331
+ | Method | Endpoint | Description |
332
+ |--------|----------|-------------|
333
+ | GET | `/spatial/dem-stats?bbox={w,s,e,n}` | Min/max/mean elevation |
334
+ | GET | `/spatial/contours?bbox={w,s,e,n}` | Contour lines |
335
+ | GET | `/spatial/contour-intervals` | Available intervals |
336
+ | POST | `/spatial/dem-export` | Export DEM as GeoTIFF |
337
+ | POST | `/spatial/contours-export` | Export contours |
338
+ | GET | `/spatial/dem-availability?bbox={w,s,e,n}` | Check resolution availability |
339
+ | GET | `/spatial/dem-resolutions` | Available DEM resolutions |
340
+
341
+ #### Land Use
342
+
343
+ | Method | Endpoint | Description |
344
+ |--------|----------|-------------|
345
+ | POST | `/spatial/nlcd-export` | Export NLCD land cover (GeoTIFF or vector) |
346
+
347
+ #### Site Analysis & Reports
348
+
349
+ | Method | Endpoint | Description |
350
+ |--------|----------|-------------|
351
+ | POST | `/site-analysis/report` | Comprehensive environmental report |
352
+ | GET | `/site-analysis/report/{jobId}` | Check report status |
353
+ | POST | `/constraints/report` | Environmental constraints assessment |
354
+ | GET | `/constraints/report/{jobId}` | Check constraints status |
355
+ | GET | `/constraints/config` | Constraint configuration options |
356
+ | POST | `/site-developability/report` | Developability score (0-100) |
357
+ | GET | `/site-developability/config` | Scoring methodology |
358
+
359
+ ```bash
360
+ # Generate a full site analysis
361
+ curl -X POST "https://geotapdata.com/api/v1/site-analysis/report" \
362
+ -H "Content-Type: application/json" \
363
+ -d '{
364
+ "geometry": {"type": "Point", "coordinates": [-97.74, 30.27]},
365
+ "projectName": "Oak Hill Development"
366
+ }'
367
+
368
+ # Check status (reports take 30-60 seconds)
369
+ curl "https://geotapdata.com/api/v1/site-analysis/report/{jobId}"
370
+ ```
371
+
372
+ #### Export
373
+
374
+ | Method | Endpoint | Description |
375
+ |--------|----------|-------------|
376
+ | GET | `/export/config/options` | Available formats and CRS |
377
+ | POST | `/export` | Export data (GeoJSON, Shapefile, KML, CSV) |
378
+ | GET | `/export/{jobId}` | Check export status + download URL |
379
+ | GET | `/export/{jobId}/download` | Download exported file |
380
+
381
+ ```bash
382
+ # Export flood zones and wetlands as a shapefile
383
+ curl -X POST "https://geotapdata.com/api/v1/export" \
384
+ -H "Content-Type: application/json" \
385
+ -d '{
386
+ "layers": ["flood_zones", "wetlands"],
387
+ "format": "shapefile",
388
+ "geometry": {"type": "Polygon", "coordinates": [[...]]}
389
+ }'
390
+ ```
391
+
392
+ #### Satellite Imagery
393
+
394
+ | Method | Endpoint | Description |
395
+ |--------|----------|-------------|
396
+ | POST | `/spatial/satellite-export` | Export aerial imagery as GeoTIFF |
397
+ | GET | `/spatial/satellite-resolutions` | Available resolutions |
398
+
399
+ #### Health & Status
400
+
401
+ | Method | Endpoint | Description |
402
+ |--------|----------|-------------|
403
+ | GET | `/health` | API health check |
404
+ | GET | `/status` | All data source connectivity |
405
+ | GET | `/status/{apiName}` | Specific API status |
406
+ | GET | `/docs` | API documentation (JSON) |
407
+
408
+ ---
409
+
410
+ ## MCP Server
411
+
412
+ The MCP (Model Context Protocol) server wraps the REST API into **83 AI-native tools** that Claude, Cursor, Windsurf, and other AI assistants can call directly.
413
+
414
+ ### Installation
415
+
416
+ #### Claude Desktop
417
+
418
+ Add to your `claude_desktop_config.json`:
419
+
420
+ ```json
421
+ {
422
+ "mcpServers": {
423
+ "geotap": {
424
+ "command": "npx",
425
+ "args": ["-y", "geotap-mcp-server"]
426
+ }
427
+ }
428
+ }
429
+ ```
430
+
431
+ #### Cursor
432
+
433
+ Add to your Cursor MCP settings:
434
+
435
+ ```json
436
+ {
437
+ "mcpServers": {
438
+ "geotap": {
439
+ "command": "npx",
440
+ "args": ["-y", "geotap-mcp-server"]
441
+ }
442
+ }
443
+ }
444
+ ```
445
+
446
+ #### Windsurf / Other MCP Clients
447
+
448
+ ```bash
449
+ npm install -g geotap-mcp-server
450
+ geotap-mcp
451
+ ```
452
+
453
+ ### Configuration
454
+
455
+ | Variable | Description | Default |
456
+ |----------|-------------|---------|
457
+ | `GEOTAP_API_URL` | API base URL | `https://geotapdata.com/api/v1` |
458
+ | `GEOTAP_API_KEY` | Optional API key | (none — free tier) |
459
+
460
+ With API key:
461
+ ```json
462
+ {
463
+ "mcpServers": {
464
+ "geotap": {
465
+ "command": "npx",
466
+ "args": ["-y", "geotap-mcp-server"],
467
+ "env": {
468
+ "GEOTAP_API_KEY": "your-api-key-here"
469
+ }
470
+ }
471
+ }
472
+ }
473
+ ```
474
+
475
+ ### What You Can Ask
476
+
477
+ - *"What are the flood zones at 123 Main St, Austin TX?"*
478
+ - *"Is this property in a wetland?"*
479
+ - *"What soil types are on this site?"*
480
+ - *"What's the 100-year rainfall for Dallas?"*
481
+ - *"Delineate the watershed at this point"*
482
+ - *"Are there any EPA Superfund sites near here?"*
483
+ - *"What's the curve number for this drainage area?"*
484
+ - *"What are the peak flood flows for this stream?"*
485
+ - *"What's the 7Q10 low flow at this gauge?"*
486
+ - *"Generate a design storm hyetograph for a 25-year, 24-hour event"*
487
+ - *"How will climate change affect rainfall at this location?"*
488
+ - *"Run a full environmental site analysis for this parcel"*
489
+ - *"What permits do I need to build near this stream?"*
490
+ - *"Export this data as a shapefile"*
491
+
492
+ ### Available Tools (83)
493
+
494
+ <details>
495
+ <summary>Spatial Queries (4)</summary>
496
+
497
+ - **get_environmental_data_for_area** — Query all 28+ data sources within a polygon
498
+ - **get_environmental_data_near_point** — Query all data sources near a lat/lng point
499
+ - **get_environmental_summary** — Quick feature counts per layer for an area
500
+ - **get_environmental_data_in_bbox** — Query data within a bounding box
501
+ </details>
502
+
503
+ <details>
504
+ <summary>Data Layers (3)</summary>
505
+
506
+ - **list_data_layers** — List all 28+ available data sources
507
+ - **get_layer_details** — Get metadata about a specific layer
508
+ - **get_layer_features** — Get features from a specific data layer
509
+ </details>
510
+
511
+ <details>
512
+ <summary>Rainfall & Precipitation (14)</summary>
513
+
514
+ - **get_rainfall_data** — NOAA Atlas 14 precipitation frequency estimates
515
+ - **get_idf_curves** — Intensity-Duration-Frequency curve data
516
+ - **generate_hyetograph** — Design storm rainfall distribution over time
517
+ - **export_hyetograph** — Export hyetograph as CSV/JSON for modeling software
518
+ - **list_rainfall_distributions** — All available temporal distribution types
519
+ - **get_rainfall_distribution** — Recommended SCS distribution for a location
520
+ - **get_climate_scenarios** — Available climate change scenarios and horizons
521
+ - **get_climate_change_factors** — Climate adjustment multipliers for a location
522
+ - **get_climate_change_rainfall_projection** — Future rainfall under climate scenarios
523
+ - **get_rainfall_uncertainty_bounds** — Atlas 14 confidence intervals
524
+ - **generate_uncertainty_envelope** — Monte Carlo uncertainty bands for design storms
525
+ - **run_rainfall_sensitivity_analysis** — Parameter sensitivity analysis
526
+ - **get_design_approaches** — Risk-based design confidence levels
527
+ - **check_rainfall_service_status** — NOAA Atlas 14 availability check
528
+ </details>
529
+
530
+ <details>
531
+ <summary>Watershed & Hydrology (5)</summary>
532
+
533
+ - **delineate_watershed** — Trace watershed boundary from a pour point (USGS StreamStats)
534
+ - **get_watershed_characteristics** — Basin physical/hydrologic parameters
535
+ - **get_flow_statistics** — Peak and low flow estimates (regional regression)
536
+ - **get_flowlines** — Stream network from NHD
537
+ - **get_watershed_water_quality** — Water quality in the containing watershed
538
+ </details>
539
+
540
+ <details>
541
+ <summary>Hydrology Toolkit (3)</summary>
542
+
543
+ - **analyze_hydrology** — Complete hydrologic analysis (CN, Tc, SCS runoff, peak flow)
544
+ - **get_hydrology_distributions** — Available rainfall distributions for analysis
545
+ - **get_hydrology_distribution_for_location** — Recommended distribution for a point
546
+ </details>
547
+
548
+ <details>
549
+ <summary>Curve Number / Runoff (3)</summary>
550
+
551
+ - **lookup_curve_number** — SCS CN for a land use + soil type combination
552
+ - **get_curve_number_tables** — Complete CN lookup tables
553
+ - **analyze_curve_numbers** — Weighted CN calculation for catchment areas
554
+ </details>
555
+
556
+ <details>
557
+ <summary>Water Quality (3)</summary>
558
+
559
+ - **get_water_quality** — EPA ATTAINS impairment data with downstream trace
560
+ - **get_water_impairments** — Quick impairment check by HUC-12
561
+ - **get_watershed_for_point** — Identify HUC-12 watershed for a location
562
+ </details>
563
+
564
+ <details>
565
+ <summary>Waterway Permits (2)</summary>
566
+
567
+ - **find_water_features** — Find streams, wetlands, waterbodies in an area
568
+ - **analyze_permit_requirements** — Determine required permits (Section 404, NPDES, etc.)
569
+ </details>
570
+
571
+ <details>
572
+ <summary>Elevation & Terrain (7)</summary>
573
+
574
+ - **get_elevation_stats** — Min/max/mean elevation (USGS 3DEP)
575
+ - **get_contour_lines** — Generate topographic contour lines
576
+ - **get_contour_interval_options** — Available contour intervals
577
+ - **export_dem** — Export DEM as GeoTIFF (1m/10m/30m)
578
+ - **export_contours** — Export contour lines as GeoJSON
579
+ - **check_dem_availability** — Check which resolutions are available
580
+ - **get_dem_resolution_options** — Available DEM resolutions
581
+ </details>
582
+
583
+ <details>
584
+ <summary>Land Use / Land Cover (1)</summary>
585
+
586
+ - **export_land_use** — NLCD land cover data (GeoTIFF or vector)
587
+ </details>
588
+
589
+ <details>
590
+ <summary>Monitoring Stations (3)</summary>
591
+
592
+ - **find_monitoring_stations** — Search for USGS/NOAA/EPA stations
593
+ - **search_stations** — Search stations by name or ID
594
+ - **get_station_types** — Available station type configurations
595
+ </details>
596
+
597
+ <details>
598
+ <summary>Gage Intelligence — Gauged Sites (9)</summary>
599
+
600
+ - **get_flood_frequency_analysis** — Bulletin 17C flood frequency at a USGS gauge
601
+ - **get_flow_duration_curve** — Flow duration curve and percentiles
602
+ - **get_low_flow_statistics** — 7Q10, 7Q2, harmonic mean (NPDES critical flows)
603
+ - **get_storm_events** — Detect and analyze historical storm events
604
+ - **get_storm_event_detail** — Detailed data for a specific storm event
605
+ - **export_storm_event_for_modeling** — Export storm event for HEC-HMS
606
+ - **get_gage_summary** — Quick overview of available data at a gauge
607
+ - **get_published_gage_statistics** — Official USGS GageStats values
608
+ - **compare_computed_vs_published_stats** — QA comparison of computed vs. published
609
+ </details>
610
+
611
+ <details>
612
+ <summary>Gage Intelligence — Ungaged Sites (4)</summary>
613
+
614
+ - **estimate_ungaged_flood_frequency** — NSS regional regression estimates
615
+ - **estimate_all_ungaged_statistics** — All available statistics for ungaged site
616
+ - **get_ungaged_nss_regions** — Available NSS regions by state
617
+ - **get_ungaged_required_parameters** — Required basin characteristics for estimation
618
+ </details>
619
+
620
+ <details>
621
+ <summary>Gage Intelligence — Watershed Similarity (4)</summary>
622
+
623
+ - **find_similar_watersheds** — Find analog gauged watersheds
624
+ - **find_similar_watersheds_with_stats** — Similar watersheds with published stats
625
+ - **recommend_index_gage** — Best reference gage for flow transfer
626
+ - **transfer_flood_statistics** — Transfer statistics via drainage area ratio
627
+ </details>
628
+
629
+ <details>
630
+ <summary>Site Analysis & Reports (7)</summary>
631
+
632
+ - **generate_site_analysis** — Comprehensive environmental site analysis
633
+ - **get_site_analysis_status** — Check analysis job status
634
+ - **generate_constraints_report** — Environmental constraints assessment
635
+ - **get_constraints_report_status** — Check constraints report status
636
+ - **get_constraints_config** — Available constraint configuration options
637
+ - **generate_developability_report** — Site development feasibility score (0-100)
638
+ - **get_developability_config** — Scoring methodology and options
639
+ </details>
640
+
641
+ <details>
642
+ <summary>Export (3)</summary>
643
+
644
+ - **get_export_options** — Available formats and CRS options
645
+ - **export_data** — Export to GeoJSON, Shapefile, KML, CSV, GeoPackage
646
+ - **get_export_status** — Check export job status
647
+ </details>
648
+
649
+ <details>
650
+ <summary>Utilities (8)</summary>
651
+
652
+ - **geocode_address** — Convert address to coordinates
653
+ - **check_api_status** — Check all data source connectivity
654
+ - **check_specific_api_status** — Check a specific API's status
655
+ - **get_firm_panels** — FEMA FIRM map panel numbers
656
+ - **get_huc_watersheds** — HUC watershed boundaries
657
+ - **get_huc_watershed_by_code** — Specific watershed by HUC code
658
+ - **export_satellite_imagery** — Aerial/satellite imagery as GeoTIFF
659
+ - **get_satellite_resolution_options** — Available imagery resolutions
660
+ </details>
661
+
662
+ ---
663
+
664
+ ## Use Cases
665
+
666
+ ### Civil & Environmental Engineering
667
+ - Stormwater design: rainfall (Atlas 14, IDF curves, hyetographs), curve numbers, time of concentration, peak discharge
668
+ - Flood analysis: Bulletin 17C flood frequency, flow duration curves, regional regression estimates
669
+ - Watershed delineation and hydrologic modeling inputs (HEC-HMS, SWMM)
670
+ - Low-flow analysis for NPDES permits (7Q10, 7Q2, harmonic mean flow)
671
+ - Ungaged site estimation using NSS regression equations and watershed similarity
672
+ - Climate-adjusted design storms for infrastructure resilience
673
+
674
+ ### Real Estate & Development
675
+ - Environmental due diligence for property transactions
676
+ - Site feasibility and developability scoring (0-100 scale)
677
+ - Flood zone, wetland, and contamination screening
678
+ - Permit pathway analysis (Section 404, NPDES, floodplain development)
679
+
680
+ ### Environmental Consulting
681
+ - Phase I ESA desktop data gathering (EPA sites, water quality)
682
+ - Wetland delineation support (NWI + soils + hydrology)
683
+ - Endangered species habitat screening (USFWS critical habitat)
684
+ - Water quality impairment assessment (EPA ATTAINS 303(d) list)
685
+
686
+ ### AI-Powered Research
687
+ - Natural language queries across 28+ federal databases
688
+ - Automated environmental screening reports
689
+ - Cross-agency data correlation and analysis
690
+
691
+ ---
692
+
693
+ ## Example Workflows
694
+
695
+ ### Quick Site Screening
696
+ ```
697
+ User: "What environmental concerns are there at 456 Oak Ave, Houston TX?"
698
+
699
+ 1. geocode_address → get coordinates
700
+ 2. get_environmental_data_near_point → flood zones, wetlands, soils, EPA sites
701
+ 3. Summarize findings in plain language
702
+ ```
703
+
704
+ ### Stormwater Design Package
705
+ ```
706
+ User: "I need a complete stormwater design package for this 50-acre site in Dallas"
707
+
708
+ 1. geocode_address → coordinates
709
+ 2. get_rainfall_data → Atlas 14 depths for all return periods
710
+ 3. get_rainfall_distribution → SCS Type III for Dallas
711
+ 4. generate_hyetograph → 25-year, 24-hour design storm
712
+ 5. delineate_watershed → drainage area boundary
713
+ 6. analyze_curve_numbers → weighted CN from land use + soils
714
+ 7. analyze_hydrology → time of concentration + peak discharge
715
+ 8. get_water_quality → receiving water impairments
716
+ 9. analyze_permit_requirements → required permits
717
+ ```
718
+
719
+ ### Ungaged Flood Estimation
720
+ ```
721
+ User: "What's the 100-year flood at 30.5, -97.8? There's no gauge there."
722
+
723
+ 1. get_ungaged_nss_regions → find the NSS region for Texas
724
+ 2. get_watershed_characteristics → get basin parameters
725
+ 3. estimate_ungaged_flood_frequency → regional regression estimate
726
+ 4. find_similar_watersheds_with_stats → validate with nearby gauged data
727
+ 5. recommend_index_gage → find best reference gage
728
+ 6. transfer_flood_statistics → drainage area ratio transfer for comparison
729
+ ```
730
+
731
+ ### Environmental Due Diligence
732
+ ```
733
+ User: "Run full environmental due diligence on this 20-acre parcel"
734
+
735
+ 1. generate_site_analysis → comprehensive environmental report
736
+ 2. generate_developability_report → 0-100 feasibility score
737
+ 3. find_water_features → jurisdictional waters on site
738
+ 4. analyze_permit_requirements → permit pathway and costs
739
+ 5. get_water_quality → downstream receiving water assessment
740
+ ```
741
+
742
+ ---
743
+
744
+ ## Contributing
745
+
746
+ Contributions welcome! Please open an issue or pull request.
747
+
748
+ ## License
749
+
750
+ MIT
751
+
752
+ ## Links
753
+
754
+ - **Web App**: [geotapdata.com](https://geotapdata.com)
755
+ - **API Docs (JSON)**: [geotapdata.com/api/v1/docs](https://geotapdata.com/api/v1/docs)
756
+ - **Issues**: [GitHub Issues](https://github.com/jcholly/geotap-developer/issues)
757
+ - **npm**: [geotap-mcp-server](https://www.npmjs.com/package/geotap-mcp-server)