Callable spatial runtime

Spatial tools built for agents, scripts, and humans

Discover spatial operations, run them through a simple API, pass GeoJSON between steps, and inspect exactly what happened.

Explore the API View the source

No GIS desktop. No hidden state. No proprietary data format.

Tool discovery Request-scoped state GeoJSON outputs Execution receipts
Discover tools
RandomPointsTool
BufferTool
ExportTool
GET /api/run -> 6 tools discovered
result-1 · 5 features · 2 ms
result-2 · input result-1 · 14 ms
GeoJSON ready · 5 features · 1 ms
artifact: headless-demo.geojson

Why this exists

Spatial analysis should be callable, composable, and inspectable

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

Spatial Workbench

  • Structured tool definitions
  • Serializable GeoJSON state
  • API and script execution
  • Inspectable receipts
  • Browser visualization when useful

Live proof

See a spatial workflow execute live

This is the product claim in one workflow: discover tools, generate five points, buffer them, and export a real GeoJSON artifact.

Open full demo
Ready
1

RandomPointsTool

Creates five sample features inside a request-scoped bbox.

Output
pending
Features
5 planned
2

BufferTool

Buffers the returned layer id from step one.

Input
pending
Output
pending
3

ExportTool

Exports the buffered layer as portable GeoJSON.

Artifact
pending
Features
pending

Workflow map

live states

Execution receipt

audit trail
Run the workflow to populate a real receipt.

How it works

Discover, execute, chain

Discover

Agents and clients retrieve tool definitions, parameters, descriptions, and supported state modes.

Execute

Each tool receives explicit parameters plus serialized spatial state.

Chain

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

Built for callable spatial workflows

Agent-first

Tools expose clear schemas and machine-readable results.

GeoJSON-native

Inputs, intermediate state, and outputs remain portable.

Inspectable

Every execution returns status, timing, feature counts, and layer receipts.

Composable

One tool’s returned state can feed directly into the next tool.

Human-visible

The same operations can be visualized and inspected in the browser.

Use cases

Useful before it becomes huge

Agent-driven analysis

An assistant discovers available spatial tools and executes the right operation instead of guessing.

Automated spatial pipelines

Scripts chain spatial transformations and export reusable data.

Lightweight GIS applications

Developers assemble narrow-purpose mapping tools without building a full GIS platform.

Interactive validation

Humans inspect the geometry, parameters, provenance, and outputs produced by automation.

Trust and transparency

No invisible GIS magic

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
    }
  }
}