geoprimitives
Give it a latitude and longitude and it answers with the ground elevation there in metres above NAVD88, read from the USGS 3D Elevation Program seamless DEM. Parameters go in the query string: this is a GET, there is no body. COVERAGE, stated up front because it is the first thing to check: the state of Alaska, whole, and nothing else yet. The coverage gate reads the coordinate, so it runs in the handler and after payment, not in front of the 402: a coordinate outside Alaska is quoted like any other and then refused with outside_coverage. A refusal does not settle, so nothing is charged, but it costs a signature and a second round trip to find out. Check the coverage against this description or the free catalog first. The conterminous United States and Hawaii are the next extension and arrive through the same pipeline with no change to this interface; every response repeats the coverage under `coverage` so an agent never infers it from an error. Canada is not served even where USGS publishes pixels over it: those come from Natural Resources Canada under a licence with an attribution clause, and this catalog carries public-domain data only, so they were not stored. SOURCE AND VINTAGE: USGS 3DEP seamless 2 arc-second product, the resolution USGS publishes for Alaska, a work of the United States government in the public domain (17 U.S.C. 105). A 2 arc-second pixel is about 62 m north to south and 20 to 30 m east to west at Alaskan latitudes; the response states the pixel size at your latitude. USGS republishes blocks as new lidar and IFSAR arrive, and the response carries the publication date of the block that answered you. Heights are orthometric, NAVD88, metres; horizontal positions are NAD83, which this endpoint reads as WGS 84 since the two differ by under two metres, a fraction of a pixel. INTERPOLATION: bilinear over the four pixel centres around the point by default, which is what GDAL and PROJ do for a continuous surface. Pass interpolation=nearest for the raster's own value at the pixel the point falls in, which is bit-identical to gdallocationinfo on the USGS file and the right choice when you want the source unblended. Checked against GDAL rather than against itself: of 200 coordinates drawn over the built blocks, the 150 inside the coverage agreed with `gdallocationinfo -r bilinear` on the USGS GeoTIFFs to 6.2e-4 m at worst, and interpolation=nearest agreed with plain `gdallocationinfo` to the millimetre this endpoint rounds to. The response always names the method used. VOIDS AND WATER: gaps in the USGS footprint and the Canadian side of the border are void, and so is open water beyond the three-mile county limit. A void pixel inside a bilinear window is dropped and the remaining weights renormalised, as gdalwarp treats nodata, and the response says how many of the four were used. A window that is entirely void is refused with no_data and not charged, never answered with zero. Inshore water is a different case and you should know it: USGS writes 0 over the sea in some blocks and nodata in others, so a coordinate in a harbour or a bay inside the county limit may answer 0 m, which is the source's value and not a measurement of anything. ACCURACY of the data itself is USGS's, not this endpoint's: the Alaska seamless layer is built from IFSAR at 5 m resampled to 2 arc-seconds, and USGS states its vertical accuracy per source project rather than for the seamless layer as a whole. Expect metre-level agreement with a survey on open terrain and worse under forest and on steep slopes. This endpoint adds nothing to that error beyond interpolation. Longitude and latitude are checked against EPSG:4326 bounds first. Reproject with POST /v1/transform if you are not already in WGS 84 or NAD83. For a line rather than a point use POST /v1/elevation/profile, which samples along a polyline in one call.
The wallet the 402 directs payment to. Its whole payment record — every payer, every chain — is on the merchant page.
Asset 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
The payTo wallet does not resolve to a registered ERC-8004 agent. That is not a verdict on the service — most of the catalog is unregistered.
Accepts
The payment requirements as published to the catalog. Read the live 402 before paying — a price here is a claim, not a quote.
Pay 0.005 USDC on Base to 0x76A5…68FCe. The signed payment is good for 5 minutes.
- Paid to
- 0x76A5…68FCe
- USD Coin contract
- 0x8335…02913
- Payment window
- 5 minutes
- As published
- 5000 smallest units
The catalog’s raw entry
[
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x76A51b5Dd3729950B3b60c17f19252d221968FCe",
"amount": "5000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
}
]Extensions
{
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"queryParams": {
"lat": 61.2181,
"lon": -149.8997
}
},
"output": {
"type": "json",
"example": {
"notes": [],
"query": {
"lat": 61.2181,
"lon": -149.8997
},
"units": "metres",
"sample": {
"block": "n62w150",
"pixelMetres": {
"eastWest": 29.9,
"northSouth": 61.9
},
"neighboursUsed": 4,
"neighboursVoid": 0
},
"source": {
"url": "https://prd-tnm.s3.amazonaws.com/StagedProducts/Elevation/2/TIFF/current/",
"units": "metres",
"rights": "Public domain (US government work, 17 U.S.C. 105)",
"dataset": "3D Elevation Program (3DEP) seamless DEM",
"product": "2 arc-second",
"publisher": "US Geological Survey",
"usgsPublished": "20170501",
"verticalDatum": "NAVD88",
"horizontalDatum": "NAD83",
"pixelArcSeconds": 2,
"usgsPublishedRange": [
"2013",
"20260611"
]
},
"coverage": {
"blocks": 439,
"reason": "Coverage is the state of Alaska, whole, from the USGS 3DEP seamless 2 arc-second DEM: every 1-degree block that holds Alaskan ground as the Census TIGER county boundaries draw it, 439 blocks. The conterminous United States and Hawaii are not answered yet. USGS publishes them at 1 arc-second through the same pipeline; they are a 47 GB upload rather than a design change and will arrive as a coverage extension with no change to this interface. Canada is not answered, and the pixels USGS ships over Yukon and British Columbia were not stored: they come from Natural Resources Canada under a licence with an attribution clause, and this catalog carries public-domain data only. A coordinate outside the coverage is quoted like any other and then refused with outside_coverage; a refusal does not settle, so nothing is charged for it.",
"region": "Alaska",
"answered": [
"Alaska"
],
"notAnswered": [
"conterminous United States",
"Hawaii",
"territories",
"Canada",
"the rest of the world"
]
},
"elevation": 31.763,
"interpolation": "bilinear",
"verticalDatum": "NAVD88"
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method"
],
"properties": {
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"GET"
],
"type": "string"
},
"queryParams": {
"type": "object",
"required": [
"lat",
"lon"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in decimal degrees, EPSG:4326. Refused outside -90..90."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in decimal degrees, EPSG:4326. Refused outside -180..180."
},
"interpolation": {
"enum": [
"bilinear",
"nearest"
],
"type": "string",
"default": "bilinear",
"description": "bilinear (default): weighted mean of the four pixel centres around the point. nearest: the value of the pixel the point falls in, bit-identical to gdallocationinfo."
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object"
}
}
}
}
}
}
}Provenance
- Seen in the source catalog
- 2026-08-21 18:10Z
- Last indexed by Roundhouse
- 2026-09-20 17:50Z
- Last enriched (probe, favicon, geo)
- 2026-09-23 22:15Z
- x402 version
- 2
- Max timeout
- 300s
- Liveness probe
- HTTP 402
Hand this page to an agent
Copy the prompt and paste it into Claude, an MCP client or your own agent — it will vet this service and call it over the free read API. No key, no account.
GET api.roundhouseai.io/v0/endpoints
This endpoint's own trailing-30-day call count, as published by the upstream catalog and snapshotted daily. 28 snapshots so far. Verified volume counts only settlements with an on-chain EIP-3009 marker.
Show the promptHide the prompt
Using Roundhouse, look up the x402 service geoprimitives and tell me whether it is worth paying: what a call costs, whether the endpoint answered when last probed, and what its payment record actually shows. curl -s 'https://api.roundhouseai.io/v0/endpoints?q=geoprimitives' curl -s 'https://api.roundhouseai.io/v0/merchants/<the payTo wallet returned above>' Then call it: read the price from the live 402 at https://api.geoprimitives.dev/v1/elevation, never from a cached figure, and pay with an x402 client. The /v0 API needs an API key (`authorization: Bearer rh_live_…`) on everything except /v0/unified* and /v0/endpoints. Mint a personal key for $0.01 at GET https://api.roundhouseai.io/v0/test/x402, or use an organization key from https://roundhouseai.io/dashboard/team. If you do not have Roundhouse tools or skills installed, read https://roundhouseai.io/skill.md first — it is the whole procedure.