Geospatial tools for AI agents.
Footstep's hosted Model Context Protocol server. Spatial probability, routing, geocoding, and natural-language address parsing, callable directly from any MCP-compatible AI agent.
MCP is the open standard for connecting LLMs to external tools. Point your client at one URL, and the model picks tools at runtime instead of you wiring them in.
mcp.footstep.ai
Built for the way agents work
The Model Context Protocol is the open standard for tool calling. Every major agent runtime supports it. Here's why an MCP server beats wiring tools per runtime in your application code.
Tools live in the agent's context
MCP turns Footstep into something the model can browse, choose, and call by itself. No per-tool plumbing in your application code. Your agent decides at runtime which tool to invoke and in what order.
Hosted at mcp.footstep.ai
A Streamable HTTP MCP server. The tool surface updates server-side, so connected clients see the current set of tools, validation, and rate limits without a redeploy on your end.
Works with every major agent runtime
Claude Desktop, Claude Code, Cursor, Windsurf, Cline, Continue, OpenAI Agents SDK, Vercel AI SDK, LangChain, Gemini. All of them speak Streamable HTTP MCP.
Token-lean by design
Geometry is opt-in (set include_geometry: true only when rendering). Shared admin fields are hoisted into a context block, so 'United Kingdom' isn't repeated five times. Place types and confidence scores let the agent reason instead of guess.
Point your client at one URL
Streamable HTTP MCP. Pass your API key in the x-api-key header. The tabs below show common runtimes. Switching between them is a reformat of the same connection.
{
"mcpServers": {
"footstep": {
"url": "https://mcp.footstep.ai",
"headers": {
"x-api-key": "sk_live_your_key_here"
}
}
}
}import { experimental_createMCPClient as createMCPClient } from "ai";
const client = await createMCPClient({
transport: {
type: "http",
url: "https://mcp.footstep.ai",
headers: { "x-api-key": "sk_live_your_key_here" },
},
});
const tools = await client.tools();
// Pass tools to any model: OpenAI, Anthropic, Google, etc.from agents import Agent
from agents.mcp import MCPServerStreamableHttp
footstep = MCPServerStreamableHttp(
url="https://mcp.footstep.ai",
headers={"x-api-key": "sk_live_your_key_here"},
)
agent = Agent(
name="travel-agent",
instructions="You help plan routes and find locations.",
mcp_servers=[footstep],
)from langchain_mcp_adapters.client import MultiServerMCPClient
from langchain_google_genai import ChatGoogleGenerativeAI
from langgraph.prebuilt import create_react_agent
client = MultiServerMCPClient({
"footstep": {
"url": "https://mcp.footstep.ai",
"headers": {"x-api-key": "sk_live_your_key_here"},
"transport": "streamable_http",
}
})
tools = await client.get_tools()
model = ChatGoogleGenerativeAI(model="gemini-2.0-flash")
agent = create_react_agent(model, tools)What your agent can call
Each tool is a stable endpoint with a documented response shape. Click any card for the full reference.
Predict1
A probabilistic spatial model. Returns a per-hex H3 surface scored by likelihood, conditioned on behavioural profile, terrain, and weather.
Predict access and use
Restricted access. Predict is not part of the standard plan. Access is granted by application only, to organisations with appropriate operational expertise. Apply for access.
Decision support only, never a replacement. Predict outputs are probability priors. They must never replace expert human judgment, established response protocols, or any duty-of-care obligation. Outputs may be incorrect, incomplete, or unsuitable for a given scenario. Final decisions sit with qualified human operators.
Routing9
Terrain-aware routing across five travel modes (car, walk, bike, bus, truck), with explicit units everywhere. Your model never has to guess whether the number is metres or feet.
Driving, walking, and cycling directions.
Point-to-point or multi-stop routes with terrain analytics. Answer 'is this walkable?' without a second call.
The fastest order to visit your stops.
Travelling salesman in milliseconds. Returns the optimised order, the savings, and per-leg breakdowns.
Walk, cycle, or drive. Which one fits?
Run multiple travel modes through the same A to B and get a side-by-side comparison plus a natural-language summary.
Directions from A to B, by name.
Geocode both ends and compute the route in one call. The agent says 'how do I get from Kings Cross to Tower Bridge'. The tool handles the rest.
Where can you reach in 30 minutes?
Reachability polygons by time or distance from any starting point. Walking, cycling, or driving.
Travel times between every pair.
An N-by-M travel-time matrix between sources and destinations. The basis for assignment, dispatch, and ETA quotes.
Altitude for any point or path.
Heights in metres above sea level, with summary statistics for total ascent and descent.
Clean up a GPS trace.
Map-match a noisy GPS recording to the road network. Returns the corrected path plus per-segment road attributes.
Find stops along the way.
Coffee, charging, fuel, food. Ranked by how little detour they add to the existing route.
Geocoding4
Forward, reverse, batch, and POI search backed by an open-data index refreshed weekly. Every result carries place type and confidence, so the agent can decide whether to ask the user or guess.
Where is this place?
Turn an address, landmark, or place name into coordinates. Returns ranked candidates with confidence scores.
What's at this location?
Given a coordinate, return the address or place label. Useful for labelling pins and incident reports.
Geocode a thousand addresses at once.
Run up to 1,000 addresses through geocoding in a single call. Returns coordinates and confidence for each.
What's near here?
Points of interest near a location, by category or by venue name. Sorted by distance.
Natural Language1
An LLM pre-step for the messy reality of customer-typed addresses. Cleans typos, expands abbreviations, reformats components. Downstream geocoding actually hits.
What your agent can do, in plain English
Real prompts users send to agents wired up with Footstep. The model picks the tool, sometimes more than one in sequence, and synthesises the response.
- “Get me walking directions from Kings Cross to Tower Bridge”
- “Should I walk or cycle? Compare both options”
- “Find coffee shops near my hotel”
- “Are there any petrol stations on my way to Cambridge?”
- “How far can I cycle in 15 minutes from Liverpool Street station?”
- “Find the best order to visit these 8 delivery stops”
- “Clean up this GPS trace from my bike ride and show me the terrain”
- “Geocode these 5 addresses and tell me which ones are in London”
- “Clean up this messy CSV of customer addresses before geocoding them”
Or just point any MCP client at the URL
If your client speaks Streamable HTTP MCP, the integration is two strings: the URL, and the API key header.
# Any MCP-compatible client
URL: https://mcp.footstep.ai
HEADER: x-api-key: sk_live_your_key_hereSignup to first call
in under a minute.
Get a key from console.footstep.ai
Sign up at console.footstep.ai and create an API key. £5 of free credit is applied to your account. Keys are scoped per environment, so dev and prod stay separate from day one.
Wire it into your agent or your app
Agents: point your MCP client at mcp.footstep.ai with the x-api-key header. Apps and backends: hit api.footstep.ai with the same key. Pick one or use both.
Call tools, get structured spatial data
Every response carries explicit units, place types, and confidence scores. Shared admin fields are hoisted into a context block. Geometry is opt-in.
Watch usage and cost from the console
Per-key request volume, success rate, and live cost. Drill into recent requests to inspect inputs, outputs, and latency. Bump rate limits as you scale.
Not building an agent? Use the REST API.
The same data is available as plain HTTP at api.footstep.ai. Same auth, same response shapes, same pricing.
Also listed on Smithery.