Skip to content
Eden Engine

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.

activeper callv1

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

Open Topo Data

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.

agent
// 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 do

Not 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.

ChargePrice
Per call
$0.0026
Updated
Oct 21, 2026

Input and output schemas

Input schema
input_schema.json
{
  "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
output_schema.json
{
  "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
}