Single-call geospatial context for LLMs, MCP tools, and agentic applications. POI search, neighbourhood profiles, and timezone — all in one request.
Cut LLM tool-calling token overhead by 80%
Free tier, no credit card required · Built specifically for AI agents and MCP tools · Single async job-queue API
One request returns a full geospatial context bundle — no round-trips, no glue code, no multiple API subscriptions.
10 matched points of interest with distance, OSM tags, opening status, and agent-readable description. Understands natural language including accessibility attributes.
POI category composition (restaurants, transit, parks, healthcare…) and walkability score for the surrounding area — no second request needed.
IANA timezone identifier, UTC offset, and daylight saving status from in-process lookup — no external call, no latency.
Resolve the exact state, county, or city polygon by name via /boundaries, or reverse-lookup every boundary containing a coordinate via /boundaries/reverse — full GeoJSON geometry, ordered state → county → place, not just a name string.
Standard geocoding APIs were designed for human UIs — they return coordinates for map rendering, not machine-readable context for reasoning. When an AI agent asks "what's near Brandenburg Gate and is the restaurant wheelchair accessible?" — existing APIs require multiple round-trips, return minimal structured data, and have no awareness of OSM accessibility tags. This API answers it in one call.
Wrap /context as an MCP tool and give any LLM full environmental awareness before its first token — address, timezone, and POI density — loaded into the system prompt with a single tool call.
Dramatically lower tool-calling costs at scale. With traditional geospatial APIs, loading full location context into an LLM requires several separate tool calls — one each for address, timezone, and neighbourhood profile. Every tool call costs tokens: the tool definition, the call itself, and the result all count against your context window. /context collapses all of this into a single round-trip, cutting tool-calling token overhead by 80% and eliminating the latency of sequential calls. At thousands of requests per day, this compounds into significant cost savings.
# MCP tool — one call gives the LLM full context tool = { "name": "get_location_context", "description": "Get geospatial context for a coordinate: address, timezone, and POI neighbourhood profile.", "input_schema": { "type": "object", "properties": { "lat": {"type": "number"}, "lon": {"type": "number"} }, "required": ["lat", "lon"] } } async def handle_tool(lat, lon): # Submit job r = await client.post( "/context", json={"lat": lat, "lon": lon} ) job_id = r.json()["job_id"] # Poll for result return await poll_job(job_id)
From AI concierges to autonomous vehicles, any system that needs to reason about location benefits from rich, structured geospatial context.
Find wheelchair-accessible restaurants and check opening hours — all in one call. No competitor can answer it in one request.
POI density and neighbourhood composition for last-mile delivery and fleet routing agents — understand the area around every drop-off in a single call.
OSM encodes hundreds of accessibility tags that our search engine understands semantically. Queries like "step-free route to conference centre" resolve correctly — no competitor exposes this at retrieval time.
Pre-load LLM system prompts with full location context before the first user message — enabling spatial reasoning without any tool calls during inference.
For agents that must guarantee a result falls within an exact administrative region — "only within NYC", "must be in King County, WA" — /boundaries resolves the precise polygon by name, and /boundaries/reverse verifies point-in-polygon containment, instead of the agent guessing from a place-name string match.
Straightforward usage-based pricing with a generous free tier. Start prototyping immediately — no credit card required.
Requests return a job_id immediately. Poll /jobs/{id} for the result — no blocking, no timeouts, no lost requests.
POST your request. Receive job_id in 202 response instantly.
GET /jobs/{id} every second. Status moves from queued → processing.
Status becomes complete. Full result in the same response body.
Tell us about your use case and we'll send you API credentials within 24 hours.