Traditional GIS tools
- Tied to desktop interfaces
- Difficult for agents to discover
- State hidden inside applications
- Awkward to automate
- Outputs often coupled to the UI
Callable spatial runtime
Discover spatial operations, run them through a simple API, pass GeoJSON between steps, and inspect exactly what happened.
No GIS desktop. No hidden state. No proprietary data format.
RandomPointsToolBufferToolExportToolWhy this exists
Live proof
This is the product claim in one workflow: discover tools, generate five points, buffer them, and export a real GeoJSON artifact.
RandomPointsToolCreates five sample features inside a request-scoped bbox.
BufferToolBuffers the returned layer id from step one.
ExportToolExports the buffered layer as portable GeoJSON.
Run the workflow to populate a real receipt.
Waiting for export...
How it works
Agents and clients retrieve tool definitions, parameters, descriptions, and supported state modes.
Each tool receives explicit parameters plus serialized spatial state.
The returned state and receipts become the input to the next operation.
const result = await runTool({
tool: "BufferTool",
params: {
"Input Layer": "result-1",
Distance: 0.5,
Units: "kilometers"
},
state
});
Why it feels different
Tools expose clear schemas and machine-readable results.
Inputs, intermediate state, and outputs remain portable.
Every execution returns status, timing, feature counts, and layer receipts.
One tool’s returned state can feed directly into the next tool.
The same operations can be visualized and inspected in the browser.
Use cases
An assistant discovers available spatial tools and executes the right operation instead of guessing.
Scripts chain spatial transformations and export reusable data.
Developers assemble narrow-purpose mapping tools without building a full GIS platform.
Humans inspect the geometry, parameters, provenance, and outputs produced by automation.
Trust and transparency
Every operation has explicit parameters. Every input is serializable. Every result includes an execution receipt. Every geometry output can be inspected as GeoJSON.
{
"tool": "BufferTool",
"status": {
"code": 0,
"message": "Buffered layer added."
},
"execution": {
"durationMs": 14,
"inputLayerIds": ["result-1"],
"outputLayerIds": ["result-2"],
"featureCounts": {
"input": 5,
"output": 5
}
}
}