Skip to main content
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.

Rich-by-default

Every renderer-aware tool returns:
  • Summary fields — distances, durations, narratives, terrain summaries, turn-by-turn steps (always present)
  • render envelope — framework-agnostic GeoJSON layer descriptors a map client can drop directly into deck.gl, MapLibre, Leaflet, Mapbox, Cesium, etc. (controlled by include_render)
  • Full hex grid for predictions (controlled by include_hexes)
All geometry in MCP responses lives in the 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: true once 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 bounds corners 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:

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)

Returns summary fields plus a render envelope with a GeoJSON linestring layer ready to drop into a map.

Compact response

Returns summary fields only — distance, duration, narrative, terrain summary, turn-by-turn steps. No render envelope. Smallest possible payload.

Elevation-chart client

Adds the per-sample elevation profile to the structured response.

Per-tool flag availability

Tools without any geometry component (get_matrix, parse_address, etc.) have no flags — their response is summary-only by definition.