Elevation Above Sea Level for Coordinates (Open Topo Data)
opentopodata/elevation-lookup
Elevation in metres above sea level for up to 100 latitude/longitude points in one call, from a chosen public elevation dataset: srtm90m (default), srtm30m, aster30m, ned10m (United States only), eudem25m (Europe), etopo1 or gebco2020 (global, ocean depths are negative). Optional interpolation: nearest (default), bilinear or cubic. Points are given as `lat,lng` pairs separated by `|`. A point outside a dataset's coverage returns elevation null, not an error. Results come back in input order, each with the dataset name. Data from the Open Topo Data public API as served by Eden Engine, not an official Open Topo Data product.
Price
$0.0026 per call
You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $0.50.
Data source
Elevation values from the Open Topo Data public API (opentopodata.org), read from public datasets named in each result: SRTM (NASA/USGS), ASTER GDEM (NASA/METI), NED (USGS), EU-DEM (Copernicus), ETOPO1 (NOAA) and the GEBCO 2020 grid. Credit the dataset named in the result. Passed through unmodified. Served by Eden Engine; not an official Open Topo Data product.
Use it
Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.
Connect once and your AI can find and run this tool, and any other it needs.
// 1. search: find the tool
omnial_search({ query: "what you need" })
// 2. inspect: price and input schema
omnial_inspect({ tool: "opentopodata/elevation-lookup" })
// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "opentopodata/elevation-lookup" })
// 4. run: price the exact call first, then run it
omnial_execute({ tool: "opentopodata/elevation-lookup", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "opentopodata/elevation-lookup", input: { /* ... */ } })
// 5. settle: the call is charged when it finishes, nothing to doNot connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.
Pricing
Every charge this tool can incur.
| Charge | Price |
|---|---|
Per call | $0.0026 |
- Updated
- Oct 21, 2026
Input and output schemas
Input schema
{
"type": "object",
"required": [
"locations"
],
"properties": {
"dataset": {
"enum": [
"srtm90m",
"srtm30m",
"aster30m",
"ned10m",
"eudem25m",
"etopo1",
"gebco2020"
],
"type": "string",
"default": "srtm90m",
"description": "Which elevation dataset to read. srtm90m and srtm30m cover 60N to 56S, aster30m 83N to 83S, ned10m the United States, eudem25m Europe, etopo1 and gebco2020 the whole globe including ocean depths (negative). Defaults to srtm90m."
},
"locations": {
"type": "string",
"pattern": "^-?\\d{1,3}(\\.\\d+)?,-?\\d{1,3}(\\.\\d+)?(\\|-?\\d{1,3}(\\.\\d+)?,-?\\d{1,3}(\\.\\d+)?){0,99}$",
"maxLength": 2500,
"description": "Points as `lat,lng` pairs separated by `|`, at most 100, decimal degrees. Example: 39.7391,-104.9847|27.9881,86.925. Latitude must be between -90 and 90 and longitude between -180 and 180."
},
"interpolation": {
"enum": [
"nearest",
"bilinear",
"cubic"
],
"type": "string",
"description": "How to read a value between raster cells: nearest, bilinear or cubic. Leave out for the service default, nearest."
}
},
"additionalProperties": false
}Output schema
{
"type": "object",
"required": [
"results",
"status"
],
"properties": {
"status": {
"type": "string",
"description": "OK when the points were read."
},
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"dataset",
"elevation",
"location"
],
"properties": {
"dataset": {
"type": "string",
"description": "The dataset the value was read from."
},
"location": {
"type": "object",
"required": [
"lat",
"lng"
],
"properties": {
"lat": {
"type": "number",
"description": "Latitude, decimal degrees."
},
"lng": {
"type": "number",
"description": "Longitude, decimal degrees."
}
},
"description": "The point as the service parsed it.",
"additionalProperties": true
},
"elevation": {
"type": [
"number",
"null"
],
"description": "Elevation in metres above sea level (negative below it), or null where the dataset has no data for the point."
}
},
"additionalProperties": true
},
"description": "One entry per requested point."
}
},
"description": "The service's answer: one result per requested point, in input order.",
"additionalProperties": true
}