Land Read
Terrain, soil and land-cover facts for one site, every value tied to its public source.
One location or a short list · Tools: fetch_location, fetch_batch
· 1 lookup per location (12 fields).
Example prompt
“Give me a land read for 2100 Barton Springs Rd, Austin. What is the ground like and is anything there a red flag for building?”
Or pick the land_read prompt from the Isopleth MCP server in your client.
How it works
- Call fetch_location with the address (or lat/lng), preset "terrain" and the extra land-cover fields listed below. One request covers all of them.
- Report elevation, slope and aspect, soil drainage and hydrologic group, depth to bedrock, distance to the coast, land cover and land use, tree canopy and the cropland class, with the source of each value.
- If the location was an address, read resolved_location and the geocode block: addresses are placed along the street from the house-number range, so treat the point as approximate on large rural lots and say so.
- Fields with status "absent" mean the source has nothing there (for example no cropland in a city). Fields with status "failed" are temporary; say which ones and offer to retry.
- For a list of sites, use fetch_batch with the same preset and fields (up to your plan's batch size) and present one row per site.
Fields used
- Preset
terrain:elevation,slope_degrees,aspect_cardinal,coast_distance_m,soil_drainage_class,bedrock_depth_cm 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.land_use_class: Main land use at this point from the USFS Land Change Monitoring System: Agriculture, Developed, Forest, Rangeland or Pasture, or Other. Sampled on an approximately 120 m grid.tree_canopy_pct: Percent of the ground covered by tree canopy (0 to 100) from the USFS/NLCD Tree Canopy Cover product, sampled on an approximately 120 m grid. Lower 48 states.cdl_class: What the USDA Cropland Data Layer shows at this point for the latest year: a crop such as Corn or Soybeans, or a land-cover class such as Developed or Open Water.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.political_county: County this point is in.
Tool call
What the agent sends to fetch_location:
{
"lat": 30.2672,
"lng": -97.7431,
"preset": "terrain",
"fields": [
"lcms_class",
"land_use_class",
"tree_canopy_pct",
"cdl_class",
"soil_hydrologic_group",
"political_county"
]
}
Output
A short narrative plus a table: field, value with unit, source. Flag steep slope (over about 15 degrees), poorly drained or hydrologic group D soils, and shallow bedrock (under 100 cm).
SKILL.md
Save this as isopleth-land-read/SKILL.md in your agent's skills folder
(for Claude Code, ~/.claude/skills/), or download it.
---
name: isopleth-land-read
description: Terrain, soil and land-cover facts for one site, every value tied to its public source. Uses the Isopleth MCP server (https://api.isopleth.dev/mcp).
---
# Land Read
Terrain, soil and land-cover facts for one site, every value tied to its public source.
## 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: `fetch_location`, `fetch_batch`.
- Cost: 1 lookup per location (12 fields).
## Steps
1. Call fetch_location with the address (or lat/lng), preset "terrain" and the extra land-cover fields listed below. One request covers all of them.
2. Report elevation, slope and aspect, soil drainage and hydrologic group, depth to bedrock, distance to the coast, land cover and land use, tree canopy and the cropland class, with the source of each value.
3. If the location was an address, read resolved_location and the geocode block: addresses are placed along the street from the house-number range, so treat the point as approximate on large rural lots and say so.
4. Fields with status "absent" mean the source has nothing there (for example no cropland in a city). Fields with status "failed" are temporary; say which ones and offer to retry.
5. For a list of sites, use fetch_batch with the same preset and fields (up to your plan's batch size) and present one row per site.
## Arguments
```json
{
"preset": "terrain",
"fields": [
"lcms_class",
"land_use_class",
"tree_canopy_pct",
"cdl_class",
"soil_hydrologic_group",
"political_county"
]
}
```
## Output
A short narrative plus a table: field, value with unit, source. Flag steep slope (over about 15 degrees), poorly drained or hydrologic group D soils, and shallow bedrock (under 100 cm).
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
ChatGPT
ChatGPT connects with your Isopleth sign-in, no key needed. Custom MCP servers are available on ChatGPT web for Pro, Business, Enterprise and Edu accounts (workspace admins may need to allow them).
- Open Plugins in ChatGPT, select +, then Add custom MCP server. (Older layouts: Settings → Apps → Create, with developer mode on.)
- Name it Isopleth and enter the server URL
https://api.isopleth.dev/mcp. - Choose OAuth for authentication and leave the client ID and secret blank. ChatGPT registers itself.
- Accept the risk notice and create it. ChatGPT opens the Isopleth sign-in: enter your email, open the sign-in link we send you in the same browser, and choose Allow access.
- Start a chat, type
@and pick Isopleth.
Claude.ai (web, desktop and mobile)
Claude connects with your Isopleth sign-in too. Custom connectors are on Pro, Max, Team and Enterprise plans; on Team and Enterprise an owner adds the connector first, then each person connects their own Isopleth account.
- Go to Customize → Connectors (formerly Settings → Connectors), select Add, then Add custom connector.
- Name it Isopleth and enter
https://api.isopleth.dev/mcp. Keep the detected sign-in settings and leave the OAuth client fields blank. - Select Connect, sign in to Isopleth with your email and choose Allow access.
- Turn Isopleth on from the connectors menu in a chat. A connector added on claude.ai also shows up in Claude Desktop and the mobile apps.
How app sign-in works
- Approving an app gives it access to Isopleth's MCP tools only. It can't see your API keys or billing, and its token is refused by the REST API.
- Lookups made through an app count against your plan, with the same rate limit and daily cap as your API keys. All your connected apps share one rate limit.
- Access tokens expire after an hour and the app renews them quietly. Renewal stops after 30 days without use.
- See and disconnect apps any time under Connected apps on your dashboard. A disconnected app loses access immediately.
- Technical details: OAuth 2.1 with PKCE (S256), dynamic client registration and client ID metadata documents, and
discovery at
https://api.isopleth.dev/.well-known/oauth-protected-resource/mcp.
Claude Code
claude mcp add --transport http isopleth https://api.isopleth.dev/mcp --header "Authorization: Bearer $ISOPLETH_KEY"
Or skip the key: add it without the header, then run /mcp in Claude Code and choose to authenticate.
Claude Desktop
The simplest route is the connector set up on claude.ai, which Claude Desktop picks up. To
use an API key instead, go through the mcp-remote bridge (needs Node.js 18 or later): open Settings →
Developer → Edit Config, add this to claude_desktop_config.json, then restart Claude Desktop.
{
"mcpServers": {
"isopleth": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://api.isopleth.dev/mcp",
"--header",
"Authorization:${ISOPLETH_AUTH}"
],
"env": {
"ISOPLETH_AUTH": "Bearer YOUR_ISOPLETH_KEY"
}
}
}
}
Cursor
Add to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project). Leave out
headers to sign in with your Isopleth account instead of a key.
{
"mcpServers": {
"isopleth": {
"url": "https://api.isopleth.dev/mcp",
"headers": {
"Authorization": "Bearer YOUR_ISOPLETH_KEY"
}
}
}
}
VS Code (Copilot agent mode)
Add to .vscode/mcp.json. VS Code asks for the key once and stores it securely. Without the
headers block VS Code offers to sign in with your Isopleth account.
{
"servers": {
"isopleth": {
"type": "http",
"url": "https://api.isopleth.dev/mcp",
"headers": {
"Authorization": "Bearer ${input:isopleth-key}"
}
}
},
"inputs": [
{
"type": "promptString",
"id": "isopleth-key",
"description": "Isopleth API key",
"password": true
}
]
}
OpenAI Codex CLI
Add to ~/.codex/config.toml and export ISOPLETH_KEY in your shell.
[mcp_servers.isopleth] url = "https://api.isopleth.dev/mcp" bearer_token_env_var = "ISOPLETH_KEY"
Other MCP clients
Any client that supports Streamable HTTP works: server URL https://api.isopleth.dev/mcp, then either the header
Authorization: Bearer <your key> or the client's OAuth sign-in. Clients that only speak stdio can use
the mcp-remote bridge shown for Claude Desktop.