Gesta Carta
Open the Studio →

For developers

Cartography as structured output.

Generate and edit the DSL document deterministically, then render to PNG or SVG. Over HTTP, MCP, or CLI — to drop into your pipelines and your agents.

Open the Studio →

example · MCP

> validate_gesta_map(doc)
  { "valid": true, "errors": [] }

> render_gesta_map(doc, format="svg")
  { "image_base64": "PD94…",
    "mime": "image/svg+xml" }

Three surfaces, one engine.

HTTP API

REST endpoints

POST /api/generate      → DSL + PNG/SVG
POST /api/edit          → typed ops
POST /api/apply-ops     → deterministic patch
POST /api/rerender      → re-render
POST /api/render-svg    → SVG, id-tagged layers
POST /api/geocode       → names → coordinates
MCP

Tools for agents

render_gesta_map(doc, format, dpi)
validate_gesta_map(doc)  → {valid, errors}
extract_draft_from_prose(prose)
how_to(feature)          → self-explain
engine_version()
CLI

Command line

$ gesta validate  map.gesta.yaml
$ gesta render    map.gesta.yaml -o out.svg
$ gesta geocode   map.gesta.yaml --apply
$ gesta resolve   map.gesta.yaml
$ gesta-serve     # HTTP   ·   gesta-mcp

Deterministic editing

Ten typed operations on the document.

Edits are operations on the AST, not regenerations — no regressions, and manual edits survive.

create_layermodify_layerdelete_layeradd_memberremove_membermodify_arrowmodify_annotationchange_viewapply_classset_disambiguation
Deterministic
Same document → same map, to the pixel. Online geocoding is snapshotted.
Validated
Every document is checked against the V1 format’s JSON Schema.
Output
PNG, SVG (with a <g> per layer), PDF, JPG. SVG editable downstream.
One engine
API, MCP and CLI are thin wrappers over the same render pipeline.