Land Deal Screener
Screen a land deal in one call: the parcel record and price history against flood, wetland, protected-area, habitat, slope, soil, access and utility red flags.
One parcel, or a list of deals · Tools: parcel_enrich, start_run, get_run
· 6 lookups per parcel (5 for the parcel, 1 for the 16 point fields).
Connect Isopleth in that app first (one click above), so the assistant can call it.
mkdir -p ~/.claude/skills/isopleth-land-deal-screener && curl -fsSL https://isopleth.dev/templates/land-deal-screener/SKILL.md -o ~/.claude/skills/isopleth-land-deal-screener/SKILL.md
Other agents: or
download it. In MCP clients that show prompts, pick
land_deal_screener.
Example prompt
“I'm being offered 40 acres at 35.79, -78.64 for $380,000. Screen it: price per acre against the assessed land value, and any flood, wetland or access problems.”
Or pick the land_deal_screener prompt from the Isopleth MCP server in your client.
How it works
- Call parcel_enrich with the parcel and the fields listed below.
- Price check: compute asking price per acre (gisacre, or deeded_acres where published) and compare it with assessed land value per acre and the last sale price and date. Assessed values often lag the market; say so rather than calling it a bargain or overpriced on that alone.
- Red flags: flood zone A or V or inside the floodplain polygon; wetlands on the parcel (and their acreage); protected area or critical habitat; average slope over about 15 degrees; hydrologic group D soils or a restrictive layer shallower than 100 cm; no road within 100 m; outside water or sewer service.
- Give each check pass, watch or fail with the value and source, then an overall verdict: clean, needs diligence, or walk away.
- For several deals, call start_run with kind "enrich" and rank the results by the number of fails.
Fields used
Point fields, measured at each parcel:
nfhl_flood_zone: FEMA flood zone code at this point from the National Flood Hazard Layer, such as AE, A, AO, VE or X. Where several zones overlap, the one that sets the flood-insurance requirement is used.within_floodplain_polygon: True when this point lies inside a FEMA Special Flood Hazard Area (the 1%-annual-chance floodplain) in the National Flood Hazard Layer.intersects_wetland: True when this point lies inside a wetland mapped by the U.S. Fish and Wildlife Service National Wetlands Inventory.wetland_acres: Size in acres of the whole NWI wetland polygon at or nearest to this point. This is the wetland's full area, not the part on any one property.intersects_protected_area: True when this point is inside a protected area in the USGS PAD-US database, such as a park, refuge, wilderness, military land or private preserve.intersects_critical_habitat: True when this point is inside critical habitat for an endangered or threatened species, final or proposed, as designated by the U.S. Fish and Wildlife Service.slope_degrees: Steepness of the ground at this point in degrees, calculated from the USGS 3DEP elevation model. 0 is level ground and 90 is a vertical face.elevation: Height of the ground at this point in meters, relative to the NAVD88 datum. Read from the USGS 3D Elevation Program 10 m elevation model; the USGS point-query service fills gaps.soil_hydrologic_group: USDA hydrologic soil group of the dominant soil, from A (water soaks in fast, little runoff) to D (slow infiltration, high runoff). Dual groups such as B/D give the drained rating first, then the undrained rating.soil_restrictive_layer_depth_cm: Typical depth in centimeters to the first layer that blocks roots or water, such as bedrock or hardpan, in the dominant SSURGO soil. 200 or null means none was recorded in the top 2 m.nearest_major_road_distance_m: Distance in meters to the closest major road in Overture Maps transportation data.nearest_road_distance_m: Distance in meters to the closest road open to vehicles, of any class, searching up to 500 m. Footpaths and cycleways are left out.within_water_service_area: True when this point is inside the mapped service area of a public community water system, from EPA's community water system service area boundaries.within_sewer_service_area: True when this point is inside a sewershed in EPA's Sewersheds dataset: an area whose wastewater flows to a specific public treatment plant.nearest_transmission_line_distance_m: Distance in meters to the closest electric transmission line in the EIA energy atlas.lcms_class: Main land cover at this point (trees, shrubs, grass, barren and similar) from the USFS Land Change Monitoring System, sampled on an approximately 120 m grid. Lower 48 states.
Parcel record columns (published columns vary by state; see coverage): parcelnumb, owner, usedesc, zoning, gisacre, deeded_acres, parval, landval, saleprice, saledate, taxamt.
Tool call
What the agent sends to parcel_enrich:
{
"apn": "0123456789",
"state": "NC",
"fields": [
"nfhl_flood_zone",
"within_floodplain_polygon",
"intersects_wetland",
"wetland_acres",
"intersects_protected_area",
"intersects_critical_habitat",
"slope_degrees",
"elevation",
"soil_hydrologic_group",
"soil_restrictive_layer_depth_cm",
"nearest_major_road_distance_m",
"nearest_road_distance_m",
"within_water_service_area",
"within_sewer_service_area",
"nearest_transmission_line_distance_m",
"lcms_class"
]
}
Output
A screening table (check, value, pass/watch/fail, source), the price-per-acre comparison, and a one-paragraph verdict. This is a desktop screen, not a survey, title search or wetland delineation.
SKILL.md
Save this as isopleth-land-deal-screener/SKILL.md in your agent's skills folder
(for Claude Code, ~/.claude/skills/), or download it.
---
name: isopleth-land-deal-screener
description: Screen a land deal in one call: the parcel record and price history against flood, wetland, protected-area, habitat, slope, soil, access and utility red flags. Uses the Isopleth MCP server (https://api.isopleth.dev/mcp).
---
# Land Deal Screener
Screen a land deal in one call: the parcel record and price history against flood, wetland, protected-area, habitat, slope, soil, access and utility red flags.
## Requirements
- The Isopleth MCP server connected at `https://api.isopleth.dev/mcp` with an API key in the `Authorization: Bearer` header (see https://isopleth.dev/docs/mcp).
- Tools used: `parcel_enrich`, `start_run`, `get_run`.
- Cost: 6 lookups per parcel (5 for the parcel, 1 for the 16 point fields).
## Steps
1. Call parcel_enrich with the parcel and the fields listed below.
2. Price check: compute asking price per acre (gisacre, or deeded_acres where published) and compare it with assessed land value per acre and the last sale price and date. Assessed values often lag the market; say so rather than calling it a bargain or overpriced on that alone.
3. Red flags: flood zone A or V or inside the floodplain polygon; wetlands on the parcel (and their acreage); protected area or critical habitat; average slope over about 15 degrees; hydrologic group D soils or a restrictive layer shallower than 100 cm; no road within 100 m; outside water or sewer service.
4. Give each check pass, watch or fail with the value and source, then an overall verdict: clean, needs diligence, or walk away.
5. For several deals, call start_run with kind "enrich" and rank the results by the number of fails.
## Arguments (example `parcel_enrich` call)
```json
{
"apn": "0123456789",
"state": "NC",
"fields": [
"nfhl_flood_zone",
"within_floodplain_polygon",
"intersects_wetland",
"wetland_acres",
"intersects_protected_area",
"intersects_critical_habitat",
"slope_degrees",
"elevation",
"soil_hydrologic_group",
"soil_restrictive_layer_depth_cm",
"nearest_major_road_distance_m",
"nearest_road_distance_m",
"within_water_service_area",
"within_sewer_service_area",
"nearest_transmission_line_distance_m",
"lcms_class"
]
}
```
## Output
A screening table (check, value, pass/watch/fail, source), the price-per-acre comparison, and a one-paragraph verdict. This is a desktop screen, not a survey, title search or wetland delineation.
Every value carries its source, license and attribution. Keep the source next to each value, and show the attributions if you share the results.
Connect your agent
Claude.ai, Claude Desktop and the Claude mobile apps. Sign in with Isopleth; no key to paste.
- Click Add to Claude. The Add custom connector dialog opens with the name and URL filled in; select Add. (Team and Enterprise: an owner adds it once, then everyone connects their own account.)
- Select Connect, sign in to Isopleth with your email, then Allow access.
- Desktop and mobile pick it up automatically. Pro, Max, Team and Enterprise plans.
https://api.isopleth.dev/mcp
ChatGPT on the web (Pro, Business, Enterprise and Edu). Sign in with Isopleth; no key to paste.
- Open Plugins, select +, then Add custom MCP server (older layouts: Settings → Apps → Create, with developer mode on).
- Paste the URL, name it Isopleth, choose OAuth and leave the client ID and secret blank.
- Sign in to Isopleth when asked, choose Allow access, then type
@Isoplethin a chat.
https://api.isopleth.dev/mcp
One command, then /mcp inside Claude Code to sign in in your browser.
claude mcp add --transport http isopleth https://api.isopleth.dev/mcp
claude mcp add --transport http isopleth https://api.isopleth.dev/mcp --header "Authorization: Bearer $ISOPLETH_KEY"
One click opens Cursor's install prompt. Cursor signs you in to Isopleth the first time a tool runs.
Nothing opened? The app may not be installed or may block links from the browser; use the copy option below.
{
"mcpServers": {
"isopleth": {
"url": "https://api.isopleth.dev/mcp"
}
}
}One click opens VS Code's MCP install page (Copilot agent mode). VS Code offers to sign in to Isopleth.
Nothing opened? The app may not be installed or may block links from the browser; use the copy option below.
code --add-mcp '{"name":"isopleth","type":"http","url":"https://api.isopleth.dev/mcp"}'{
"servers": {
"isopleth": {
"type": "http",
"url": "https://api.isopleth.dev/mcp"
}
}
}One command. Codex sees that Isopleth supports sign-in and opens your browser.
codex mcp add isopleth --url https://api.isopleth.dev/mcp
codex mcp add isopleth --url https://api.isopleth.dev/mcp --bearer-token-env-var ISOPLETH_KEY
Use Add to Claude on the Claude tab: connectors added on claude.ai appear in Claude Desktop. To use an API key instead, add this to claude_desktop_config.json (Settings → Developer → Edit Config; needs Node.js 18+).
{
"mcpServers": {
"isopleth": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://api.isopleth.dev/mcp",
"--header",
"Authorization:${ISOPLETH_AUTH}"
],
"env": {
"ISOPLETH_AUTH": "Bearer YOUR_ISOPLETH_KEY"
}
}
}
}Paste into ~/.codeium/windsurf/mcp_config.json (Cascade → MCP → open config). Windsurf uses serverUrl, not url.
{
"mcpServers": {
"isopleth": {
"serverUrl": "https://api.isopleth.dev/mcp"
}
}
}Any client that speaks Streamable HTTP: the URL, then the client's OAuth sign-in or the header Authorization: Bearer <your key>. Stdio-only clients can use the mcp-remote bridge shown under Claude Desktop.
https://api.isopleth.dev/mcp
Authorization: Bearer $ISOPLETH_KEY