What Knowhere Answers
Knowhere makes OpenStreetMap queryable relative to other things: not
"where is this address" but "what is near it, how long does it take to get
there, and can I walk it." It indexes *.osm.pbf extracts into a read-only
SQLite database and serves them over the Model Context Protocol, so the client
asking the questions is a model, not a map GUI. The data underneath is public
OpenStreetMap, and the index is one seekable-compressed file read in place —
a query touches the frames it needs and nothing else, rather than a copy of
the whole thing.
Point an MCP client at /mcp and ask in plain language. The model picks the
tool and writes the query; the rest of these pages are what it draws on.
What you can ask
Every example is a real query against indexed data. Substitute your own area —
list_areas resolves a place name to the snake_case name a query needs.
| Ask | How it resolves |
|---|---|
| "Hot springs I could drive to" | nwr[natural=hot_spring][name](area=colorado) |
| "Ski areas" | nwr[landuse=winter_sports][name](area=colorado) |
| "Trailheads near town" | n[highway=trailhead][name](area=colorado) |
| "Somewhere with a patio for dinner" | nw[amenity=restaurant][outdoor_seating=yes](area=colorado) |
| "Rainy day with the kids" | nwr[leisure=trampoline_park,bowling_alley,amusement_arcade,escape_game](area=colorado) |
| "Where should we watch the sunset?" | nwr[tourism=viewpoint][name](area=colorado), ranked by drive_times |
| "Somewhere dry with mild winters" | n[place=town][climate:precip_annual<16][climate:low_jan>30](area=arizona) |
| "Is this out of the floodplain?" | fema:sfha on any entry near the address |
Trailheads are the case for asking rather than guessing: they are a highway
value, not leisure or tourism. The category cheat-sheet maps the everyday
concepts to the key that actually holds them.
The last two rows are not OpenStreetMap. Every place-like entry in a US area also carries climate normals, FEMA flood zone, wildfire hazard and fire history, radon potential, county air quality, and modelled noise, stamped on at build time from government sources. Knowing OSM is what makes this easy to miss — none of it exists there. The cheat-sheet lists the keys, their units, and where they stop.
Some questions are joins rather than queries. "Dinner and a movie within
walking distance of each other" is the near tool; "a park I can walk to from
this address" is walk_reach, which follows real sidewalks and so correctly
excludes the park across an uncrossable freeway; "three breweries within
walking distance of each other" is a runtime recipe.
Where it lies to you
The data is volunteer-mapped, and the gaps are not random. These three failures account for most wrong answers, and each looks like a correct query returning an honest count.
A count is not an answer. nwr[leisure=swimming_pool](area=colorado)
matches thousands of pools. Fewer than one in twenty has a name and none carry
access=public — they are overwhelmingly backyards. "Public pool" is not a
tag. Filter to named results, or ask for leisure=water_park.
A missing tag means a missing mapper, not a missing thing.
nw[amenity=bar][live_music=yes](area=colorado) matches a single bar in the
whole state, and Colorado has rather more than one bar with live music. The
same trap sits under fee=no, wheelchair=yes, dog=yes, and every other
optional attribute. Filter on them to rank candidates, never to exclude.
Opening hours, prices, and closures are not in here. The database is a dated extract. It does not know the museum shut last spring. Treat it as a list of candidates to verify.