Skip to main content

Command set

This is the canonical tool reference for the server shipped in this repo. The site navbar links to the current release/version; avoid copying the full command table into README or promotional pages.

The active tool list can be smaller than this page when a Tool Profile is selected in Edit -> Glyphs MCP Server Status.... Reconnect your MCP client after changing profiles so it fetches the current tools/list.

Most used tools

  • list_open_fonts: list open fonts and pick a font_index.
  • get_font_masters: find master IDs.
  • get_selected_font_and_master: confirm current font, master, and selection.
  • review_spacing / apply_spacing: review, dry-run, and apply spacing changes.
  • generate_kerning_tab: open a kerning proof/worklist tab.
  • review_kerning_bumper / apply_kerning_bumper: audit and apply conservative collision fixes.
  • review_italic_first_pass / apply_italic_first_pass: preview and apply a guarded roman-to-italic first pass.
  • docs_search / docs_get: fetch focused Glyphs docs on demand.

Discovery and inspection

Glyph and layer inspection responses may include Glyphs show links:

  • showUrl: native glyphsapp://show/ URL.
  • showHttpUrl: local bridge URL.
  • showMarkdown: Markdown link form suitable for agent responses.
  • showUrlUnavailableReason: returned when an unsaved font cannot produce a stable link.
ToolDescription
list_open_fontsList open fonts and basic metadata.
get_font_glyphsReturn glyph list and key attributes for a font, including show links when available.
get_font_mastersReturn detailed master information, including italicAngle from Glyphs Font Info Metrics and legacy slantAngle from the separate postscriptSlantAngle custom parameter.
get_font_instancesList instances and interpolation data.
get_glyph_detailsReturn glyph details, layers, paths, components, and show links.
list_style_setsList ss01-ss20 features, source/replacement glyphs, and group links.
get_glyph_componentsInspect components used in a glyph.
get_selected_glyphsInspect glyphs currently selected in the UI.
get_selected_font_and_masterInspect current font, master, and selection snapshot.
get_selected_nodesInspect selected nodes with per-master mapping for edits.
get_glyph_pathsExport paths as JSON suitable for review or controlled editing.
review_collinear_handlesReview curve nodes that should be smooth based on handle collinearity.

Kerning

ToolDescription
get_font_kerningReturn kerning pairs for a master.
generate_kerning_tabGenerate and open a kerning review proof tab.
review_kerning_bumperMeasure collisions or near-misses and compute deterministic bumper suggestions.
apply_kerning_bumperApply bumper suggestions as glyph-glyph exceptions; supports dry_run and requires confirm=true to mutate.
set_kerning_pairSet or remove a specific kerning pair.

Spacing

ToolDescription
review_spacingReview spacing and suggest sidebearing/width changes without mutation.
apply_spacingApply spacing suggestions; supports dry_run and requires confirm=true to mutate.
set_spacing_paramsSet spacing parameters as font/master custom parameters; no auto-save.
set_spacing_guidesAdd or clear glyph-level guides visualizing the spacing measurement model; no auto-save.

Compensated tuning

ToolDescription
review_master_stem_metricsReview master stem metrics required by Cursivy and related filters.
set_master_stem_metricsCreate or update master stem metrics; supports dry_run and requires confirm=true to mutate.
measure_stem_ratioMeasure the stem ratio between two masters for compensated tuning.
review_compensated_tuningPreview compensated-tuned outlines for one glyph without mutation.
apply_compensated_tuningApply a two-master compensated scaling transform; supports dry_run, requires confirm=true, and can create backup layers.

Editing and outlines

Italic first-pass tools use the Glyphs source/Transformations angle convention: positive angle values lean Latin outlines to the right. The default is 12.0, chosen as a modern common working default. Exported OpenType/UFO metadata uses the opposite sign convention, so a Glyphs +12 degree source angle corresponds to about -12 in post.italicAngle or an OpenType slnt axis value.

ToolDescription
review_italic_first_passPreview a roman-to-italic layer copy and slant workflow without mutation.
apply_italic_first_passApply a guarded first-pass italic/oblique workflow; supports dry_run, requires confirm=true, and can create backup layers.
set_master_italic_angleSet a master's Glyphs Font Info Metrics italicAngle; supports dry_run and requires confirm=true to mutate.
create_glyphAdd a new glyph.
delete_glyphRemove a glyph.
update_glyph_propertiesChange unicode, category, export flags, metrics keys, groups, or similar glyph properties.
copy_glyphDuplicate outlines or components from one glyph to another.
update_glyph_metricsAdjust width and sidebearings.
add_component_to_glyphAppend a component to a glyph layer.
add_anchor_to_glyphAdd an anchor to a glyph layer.
add_corner_to_all_mastersAdd a _corner.* corner hint at selected nodes across all masters.
set_glyph_pathsReplace glyph paths from JSON.
apply_collinear_handles_smoothSet smooth flags for reviewed collinear-handle curve nodes; supports dry_run and requires confirm=true to mutate.

Docs helpers

ToolDescription
docs_searchSearch bundled Glyphs SDK/ObjectWrapper docs by title and summary.
docs_getFetch a bundled docs page by id/path, with paging support.
docs_enable_page_resourcesRegister each documentation page as a separate MCP resource; optional and noisy.

Prefer docs_search plus docs_get over registering every page as a resource.

Export and execution

ToolDescription
ExportDesignspaceAndUFOExport UFO masters and designspace documents with structured logs and errors.
execute_codeExecute arbitrary Python in the Glyphs context.
execute_code_with_contextExecute Python with injected helper objects such as font, glyph, and layer.
save_fontSave the active font, optionally to a new path.

Execution notes:

  • Prefer dedicated tools when they fit.
  • Prefer execute_code_with_context for glyph-scoped scripts.
  • Use snippet_only=true when you want a Macro Panel snippet instead of automatic execution.
  • Bound large outputs with max_output_chars and max_error_chars.
  • Avoid exit(), quit(), and sys.exit().
  • Large glyph edits should use Glyphs undo/change wrappers inside the script.

Safe starter prompts

Health check

Call list_open_fonts and tell me how many fonts are open.
If you see an error, quote it verbatim.

Spacing review

Review spacing for my current selection.
Rules: read first, do not auto-save, and do not mutate without a dry run.

1. Call review_spacing with {"font_index":0}
2. Call apply_spacing with {"font_index":0,"dry_run":true,"clamp":{"maxDeltaLSB":80,"maxDeltaRSB":80,"minLSB":-50,"minRSB":-50}}
3. Stop and wait for approval before using confirm=true.

Kerning collision review

Review kerning collisions or near-misses in my current font/master.
Rules: do not mutate anything.

Call review_kerning_bumper with {"font_index":0,"min_gap":5,"relevant_limit":2000,"include_existing":true,"scan_mode":"two_pass","dense_step":10,"bands":8,"result_limit":200}
Summarize the 20 worst findings and likely next steps.

Focused docs lookup

Search the bundled Glyphs docs for "GSLayer bounds".
Call docs_search first, then docs_get for the best match.
Summarize only the details needed for this task.