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.
get_directionsDriving, walking, or cycling directions between locations with terrain analytics.
optimize_stopsFind the fastest order to visit multiple stops. Returns distance and time savings.
compare_routesCompare walk vs bike vs drive between the same locations side by side.
find_and_routeFind a place by name and route to it in one step. Geocode plus route combined.
get_isochroneEverywhere reachable within a time or distance budget. Returns a polygon boundary.
get_matrixTravel times and distances between every origin and destination pair.
get_elevationElevation values for coordinates or paths, with summary statistics.
snap_traceMap-match a GPS trace to the road network with surface, class, speed, and grade.
search_along_routeFind places along a route ranked by how little detour they add.
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.
geocodeConvert an address or place name to coordinates with a confidence score.
reverse_geocodeConvert coordinates to an address. Find what's at a lat/lng.
batch_geocodeGeocode up to 1,000 addresses in a single call.
search_placesFind points of interest near a location by category or name.
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_hereNot 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.