Skip to main content

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.

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:
FlagDefaultWhat it controls
include_rendertrueThe render envelope — framework-agnostic GeoJSON layer descriptors. All geometry lives here.
include_hexestrueThe full hex grid (cells) on get_prediction. The top results stay regardless.
include_elevation_samplesfalsePer-sample elevation profile array on routing tools (~500 samples per route). Off even at rich defaults — niche even for renderers.
compactfalseWhen 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)

{
  "tool": "get_directions",
  "arguments": {
    "locations": [{ "lat": 51.5, "lon": -0.1 }, { "lat": 55.95, "lon": -3.19 }]
  }
}
Returns summary fields plus a render envelope with a GeoJSON linestring layer ready to drop into a map.

Compact response

{
  "tool": "get_directions",
  "arguments": {
    "locations": [{ "lat": 51.5, "lon": -0.1 }, { "lat": 55.95, "lon": -3.19 }],
    "compact": true
  }
}
Returns summary fields only — distance, duration, narrative, terrain summary, turn-by-turn steps. No render envelope. Smallest possible payload.

Elevation-chart client

{
  "tool": "get_directions",
  "arguments": {
    "locations": [...],
    "include_elevation_samples": true
  }
}
Adds the per-sample elevation profile to the structured response.

Per-tool flag availability

FlagRouting toolsGeocoding toolsget_predictionget_isochrone
include_render
include_hexes
include_elevation_samples
compact
Tools without any geometry component (get_matrix, parse_address, etc.) have no flags — their response is summary-only by definition.