Scripting

Use Python recipes, live MCP tools, saved-source scripts, or the Rust font engine.

StatusExperimental
StabilityVerify live tool schemas with MCP tools/list

Choose an Automation Surface

SurfaceUse it for
Python recipesExplicit single-source edits and proofs from the native Scripts workflow.
Live MCPInspecting unsaved editor state, proposals, receipt-backed edits, and proof jobs.
Saved-source scriptsRepeatable batch work on UFO and Designspace files.
Rust font enginePurpose-built tools that use the editor’s canonical operations without a window.

The editor has an optional external Python interpreter for recipes. The editor itself does not require Python, and the subprocess boundary is not an operating-system sandbox. For a guarded live edit, use the receipt and revision rules in MCP.

Saved Sources

A script can write UFO files while the native editor is open. The editor watches files and reloads changes when they do not conflict with unsaved work. Coordinate writes and keep sources in version control. A disk script cannot read an unsaved outline on the canvas; use the live connection for that state.

Current Limits

Python recipes currently mutate one explicit source at a time with bounded guarded operations. Cross-source and whole-font atomic recipes are not implemented. Live MCP capabilities differ from saved-source commands, and exact tool availability comes from tools/list in the connected session.