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.
The other doors