MCP

Connect an agent to the open native editor and its unsaved font.

StatusExperimental; native macOS and Linux
StabilityUse tools/list for exact live schemas

Set Up a Local Client

Install the current runebender binary and open a UFO or Designspace in the native editor. Then register it once:

runebender mcp --install

This writes the server, by the binary’s absolute path, into Claude Code, Codex, Claude Desktop and Cursor settings, keeping every other entry. Name clients to limit it, as in --install codex,cursor, and add --dry-run to see the files first. Clients that read a project .mcp.json can use this entry instead:

{
  "mcpServers": {
    "runebender": {
      "command": "runebender",
      "args": ["mcp", "--live"]
    }
  }
}

The Runebender source repository includes that command in .mcp.json and a matching .codex/config.toml adapter. Clients that do not read those files can register the same command in their own settings. The client owns model authentication, provider selection, and tool approval preferences. A hosted model may receive font data returned to the client.

Connect Read Only First

Ask the agent to list editor_sessions, connect with editor_connect, confirm the project and source, then inspect a named glyph without changing it. If more than one editor is open, identify the intended font before calling edit tools. A successful connection reports a document epoch, stable source identities, and the current document revision. A source’s display index can change after reorder; use the returned source identity for guarded work. Opening another document replaces its endpoint, so list and connect again. A failed live connection never falls back to disk editing.

editor_context reports the active source, glyph, mode, selection identities, text settings, and busy-gesture state. These opaque identities are scoped to the document epoch and are not persistent IDs across save and reopen.

Choose an Edit Contract

ContractBehavior
propose_edits and proposal_installPrepare a revision-checked proposal, review it, then explicitly install it.
agent_apply, agent_receipt, and agent_historyApply a bounded, authorized edit atomically, reconcile a lost response, and share ordinary Undo/Redo history.
Experiment toolsFork session-only versions, compare them, and explicitly apply selected results.

agent_apply requires an expected document epoch, exact glyph and layer identities, revisions from prior reads, an actor, and an operation key. Its current batch limit is one source, 64 target and dependency entries, and 256 operations. A request carrying authorization: "user-approved" is only valid when the user actually authorized that mutation. The actor string and operation key do not grant authority. After an uncertain apply response, inspect agent_receipt or retry the exact request; never invent a new key and assume the first call failed. Legacy proposal and experiment mutations do not have that idempotent receipt contract.

Measure Before Judging

analyze_glyph returns one glyph’s narrowest stem and bar, its ink spans, node continuity with kinks and G1 curve joins listed, how many points sit on the 8, 4 and 2 unit grids, its mark label, and for every other source whether the glyph interpolates and the first reason it does not. Use it before any claim about weight, smoothness or compatibility, and read_glyph when a finding needs the exact points. analyze_font runs the same review over a whole source and returns counts by mark label, the glyphs with the most points off the 8 unit grid, glyphs with kinks, stem medians per case with the farthest glyphs, and the glyphs missing or incompatible in every other source. Start a triage there, then follow the names it returns with analyze_glyph.

Workflows

The live host serves named workflows as MCP prompts: review-glyph, compatibility-check, spacing-pass, kerning-pass and draft-weight. A client that supports prompts lists them with prompts/list; in Claude Code they appear as /runebender:<name>. The same text lives in the repository under skills/runebender-<name>/SKILL.md, so a client without prompt support can link a directory into its skills folder. Every workflow reads first, proofs the result, and leaves installing to the designer.

Proof What the Agent Changed

The ordinary proof tool produces a source-geometry image. For an asynchronous proof from one captured compiled font, use proof_start and proof_status. The latter can return a PNG image and explicit captured epoch and revision, allowing the agent to see whether a proof is stale. Use proof_cancel for queued work and proof_release when a retained artifact is no longer needed. A successful image transport does not prove the model inspected it; verify that the client actually presents the image before making visual claims.

Saved Files and Limits

runebender mcp --font /absolute/path/Font.designspace works on saved sources and cannot see an unsaved canvas edit. The browser editor does not host the native live endpoint. MCP tool schemas and availability are authoritative through tools/list in the current connection. For implementation details, inspect the current automation source and application live adapter. The known limitations page records platform and validation boundaries.