Knowhere
Docs Sign in

Knowhere documentation, one page per topic. The whole corpus as one markdown file: /docs.md.

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.