Footstep’s MCP tools default to rich responses — render-ready GeoJSON layers, full hex grids, and elevation summaries are all included unless you opt out. This page describes the philosophy and the flags that tune it.Documentation Index
Fetch the complete documentation index at: https://docs.footstep.ai/llms.txt
Use this file to discover all available pages before exploring further.
Rich-by-default
Every renderer-aware tool returns:- Summary fields — distances, durations, narratives, terrain summaries, turn-by-turn steps (always present)
renderenvelope — framework-agnostic GeoJSON layer descriptors a map client can drop directly into deck.gl, MapLibre, Leaflet, Mapbox, Cesium, etc. (controlled byinclude_render)- Full hex grid for predictions (controlled by
include_hexes)
render envelope as GeoJSON. There is no separate polyline encoding to decode — clients consume render[].data directly.
The default is rich because:
- Renderer-aware agents (Claude Artifacts, ChatGPT Canvas, custom mapping apps, Footstep-built clients) get a complete answer they can drop into a map without per-tool extraction logic.
- Token-conscious LLM agents that only want summaries pass
compact: trueonce and pay nothing for geometry. - The historical “lean defaults” caused renderer-aware agents to silently truncate work — the model would build a 4-point straight line from
boundscorners because no flag was set. We’ve inverted that failure mode: by default the answer looks complete; opting out is explicit.
Flag matrix
Every renderer-aware tool accepts these flags:| Flag | Default | What it controls |
|---|---|---|
include_render | true | The render envelope — framework-agnostic GeoJSON layer descriptors. All geometry lives here. |
include_hexes | true | The full hex grid (cells) on get_prediction. The top results stay regardless. |
include_elevation_samples | false | Per-sample elevation profile array on routing tools (~500 samples per route). Off even at rich defaults — niche even for renderers. |
compact | false | When true, sets all three above to false — no render envelope, no hex grid, no elevation samples. Equivalent to opting out of every rich-mode field at once. |
Notes on individual flags
include_elevation_samples defaults false even at rich defaults. Summary fields (total ascent, max elevation, average grade) are the answer for elevation; the per-sample array is an opt-in for clients building dedicated elevation charts.
compact: true is sugar for setting all three false. Token-conscious LLM agents that don’t render maps should pass compact: true once on every call.
There is no include_geometry flag. All geometry in MCP responses lives in the render envelope as GeoJSON. There is no separate raw-polyline form. (The REST API still has its own format: footstep | geojson switch — that’s an independent contract.)
Examples
Rich response (default)
render envelope with a GeoJSON linestring layer ready to drop into a map.
Compact response
Elevation-chart client
Per-tool flag availability
| Flag | Routing tools | Geocoding tools | get_prediction | get_isochrone |
|---|---|---|---|---|
include_render | ✓ | ✓ | ✓ | ✓ |
include_hexes | — | — | ✓ | — |
include_elevation_samples | ✓ | — | — | — |
compact | ✓ | ✓ | ✓ | ✓ |
get_matrix, parse_address, etc.) have no flags — their response is summary-only by definition.