glyphs-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_font_infoA | Get information about the currently open font in GlyphsApp. Returns font family name, units per em, glyph count, masters, axes, metrics (ascender, descender, x-height, cap height), and instances. |
| list_glyphsA | List glyphs in the open font with basic metadata. Returns glyph names, unicodes, category, subCategory. Does NOT include path data — use get_glyph() for full details. Args: category: Filter by category — "Letter", "Number", "Punctuation", "Symbol", "Separator", "Mark", "Other". Empty = all. limit: Max glyphs to return. 0 = all. |
| get_glyphA | Get complete data for a specific glyph including all paths and metrics. Returns all layers with: paths (nodes with x,y coordinates, type, smooth), components, anchors, width, sidebearings. Node types: "line" (straight on-curve), "curve" (smooth on-curve), "offcurve" (cubic bezier control point). Path direction: -1 = counter-clockwise (outer contours), 1 = clockwise (inner contours/counters). |
| get_glyph_svgC | Get a glyph rendered as SVG markup. Returns SVG with viewBox matching the glyph's metrics. Useful for seeing the glyph shape as a vector image. |
| get_selectionA | Get the user's current selection in GlyphsApp's editor. Returns the active glyph name, layer, and any selected paths or nodes. Returns null selection if no tab or layer is active. |
| get_mastersA | Get all font masters with their metrics and axis positions. Returns master ID, name, ascender, descender, x-height, cap-height, and axis values for each master. |
| get_kerningA | Get kerning pairs for a specific master (or first master if not specified). Args: master_id: Master ID. Empty = first master. left: Filter by left glyph/group name. Empty = all. limit: Max pairs to return. 0 = all. Use limit=50 for large fonts. |
| get_featuresB | Get OpenType feature code from the font. |
| set_glyph_pathsA | Replace ALL paths on a glyph's layer in GlyphsApp. This OVERWRITES existing paths. The glyph must already exist. Each path is: {"closed": true, "nodes": [{"x": 100, "y": 0, "type": "line", "smooth": false}, ...]} Node types:
Path direction: outer contours counter-clockwise, counters/holes clockwise. correctPathDirection() is called automatically after setting paths. If master_id is empty, uses the first master. |
| create_glyphA | Create a new glyph in the open font. Args: glyph_name: Name for the new glyph (e.g., "a.ss01", "uni0041") width: Advance width in font units unicode_value: Optional unicode value (e.g., "0061" for 'a') paths: Optional initial paths (same format as set_glyph_paths) |
| set_glyph_widthC | Set the advance width of a glyph. |
| set_kerning_pairA | Set a kerning pair value between two glyphs. Args: left: Left glyph name or group (@MMK_L_...) right: Right glyph name or group (@MMK_R_...) value: Kerning value (negative = tighter) master_id: Optional master ID (uses first master if empty) |
| set_glyph_colorA | Set the color label of a glyph in the font view. Color index (0–11): 0=red, 1=orange, 2=brown, 3=yellow, 4=light green, 5=dark green, 6=teal, 7=blue, 8=purple, 9=pink, 10=light gray, 11=charcoal Use None/no color by setting any value outside this range. |
| delete_glyphA | Delete a glyph from the font. This cannot be undone via MCP. |
| rename_glyphA | Rename a glyph. Fails if new_name already exists. |
| duplicate_glyphB | Duplicate a glyph (all layers and paths) under a new name. Useful for creating alternates or backups before editing. |
| set_glyph_unicodeB | Set the unicode value of a glyph. Args: glyph_name: Name of the glyph to update unicode_value: Hex unicode string e.g. "0061" for 'a'. Pass "" to clear. |
| delete_kerning_pairB | Delete a kerning pair. Args: left: Left glyph name or group (@MMK_L_...) right: Right glyph name or group (@MMK_R_...) master_id: Optional master ID (uses first master if empty) |
| set_feature_codeB | Create or update an OpenType feature. Args: feature_name: Feature tag e.g. "liga", "kern", "ss01" code: OpenType feature code (AFDKO syntax) active: Whether the feature is enabled (default True) |
| rmx_harmonizeB | Optimize bezier curves on a glyph using RMX Harmonizer. Modes:
Use after drawing or modifying paths to ensure clean curves. Works on any glyph — no multi-master requirement. |
| rmx_scaleA | Scale a glyph by percentage in width and/or height. USE THIS for percentage-based scaling requests like "make 30% wider". RECIPE: For a multi-glyph scaling task, call get_recipe("scale_proportions") first and follow it step by step. Uses RMX Scaler with stroke-weight compensation via master interpolation. Native affine fallback is opt-in because it cannot preserve stem weight. Response includes a "method" field: "rmx" = RMX Scaler was used, "native_transform" = affine transform fallback. Args: glyph_name: Name of the glyph to scale width: Width scale as percentage. 100 = no change, 130 = 30% wider, 70 = 30% narrower height: Height scale as percentage. 100 = no change weight: Stroke weight delta (RMX only, ignored in native fallback) adjust_space: Sidebearing adjustment delta vertical_shift: Vertical position offset master_id: Optional active master ID. RMX still processes all masters. allow_fallback: Permit native affine scaling if RMX fails. Default False. Examples: "Make R 30% wider" → rmx_scale("R", width=130) "Make R 20% narrower" → rmx_scale("R", width=80) "Scale R to 90% height, keep width" → rmx_scale("R", height=90) |
| rmx_tuneA | Adjust a glyph by delegating directly to the installed RMX Tuner. This tool calls the real RMXTuner instance loaded in GlyphsApp
( IMPORTANT: Width/height/weight/slant are RMX Tuner deltas, not percentages. Typical useful range is roughly -100 to +100, depending on the font/RMX setup. Blend is normalized: 0 = no blend-in layer, 1 = full blend-in layer. Values above 1 extrapolate and can produce extreme outlines. Args: glyph_name: Name of the glyph to tune. weight: RMX Tuner Weight value (+ = heavier, - = lighter). width: RMX Tuner Width value (+ = wider, - = narrower). height: RMX Tuner Height value (+ = taller, - = shorter). slant: RMX Tuner Slant value. blend: RMX Tuner Blend value. Use 0.0–1.0 for interpolation. fixed_width: Keep advance width fixed via RMX Tuner's checkbox. master_id: Optional master/layer ID. Empty = first master. all_masters: If True, pass all master layers of the glyph to RMX Tuner. Example: rmx_tune("R.001", height=88, weight=88) |
| rmx_monospaceA | Adjust a glyph to a fixed width using RMX Monospacer. Intelligently distributes width change between outline scaling and spacing adjustment to maintain visual quality. Args: glyph_name: Name of the glyph mono_width: Target advance width (0 = keep current width) keep_stroke: How much to preserve stroke weight, 0-100% use_spacing: How much width change goes to spacing vs outline, 0-100% master_id: Optional master ID Example: "Make all uppercase letters 600 units wide" → rmx_batch("monospace", ["A","B",...,"Z"], params={"monoWidth": 600}) Requires 2+ masters. |
| rmx_batchA | Apply an RMX filter to multiple glyphs at once. RECIPE: For multi-glyph scaling, call get_recipe("scale_proportions") first. Args: filter_name: One of "harmonize", "tune", "scale", "monospace" glyph_names: List of glyph names to process params: Filter-specific parameters (same as individual tool params) master_id: Optional master ID Examples: "Harmonize all lowercase" → rmx_batch("harmonize", ["a","b",...,"z"], params={"mode": "harmonize"}) |
| execute_in_glyphsA | Execute arbitrary Python code inside GlyphsApp. The code runs with access to the Glyphs object and all GlyphsApp API. stdout is captured and returned. This is powerful but must be used carefully. NOTE: This endpoint is disabled by default. The user must enable it in GlyphsApp preferences (com.nico.glyphs-mcp.allowExecute = True). RECIPE: Do not improvise multi-step work here. To create a Glyphs plugin or script, follow get_recipe("create_glyphs_plugin") or get_recipe("create_glyphs_script"). For bulk layer cleanup, follow get_recipe("cleanup_dated_layers"). Example: execute_in_glyphs("print(Glyphs.font.familyName)") |
| measure_stemsA | Measure stem thicknesses in a glyph using ray-casting. Casts horizontal and vertical rays through the glyph outlines to measure vertical stems (like the main strokes of n, m, h) and horizontal stems (like crossbars of e, A, H). Returns: - Dominant (most common) vertical and horizontal stem values - Min/max range showing consistency within the glyph - Detailed per-ray measurements with positions Use this BEFORE and AFTER applying RMX filters to verify the effect. Examples: "How thick are the stems of R?" -> measure_stems("R") "What's the crossbar thickness of H?" -> measure_stems("H") |
| compare_stemsA | Compare stem thicknesses across multiple glyphs to find inconsistencies. RECIPE: For a full font audit (stems + color + proportions + spacing), call get_recipe("audit_consistency") — it runs checks in dependency order. Evaluates each glyph against industry stem patterns for optical compensation. Per-glyph verdicts:
Each glyph is classified into one of 5 groups:
Supports uppercase (ref: H), lowercase (ref: n), and figures (ref: H). If master_id is omitted, analyzes ALL masters and returns per-master results. Glyph color = worst verdict across all masters. If master_id is provided, analyzes that single master only. Does not modify glyph colors by default. When Args: glyph_names: List of glyphs to compare master_id: Optional master ID (empty = all masters) mark_glyphs: Color glyphs by verdict only when explicitly requested |
| get_stem_targetsA | Get the designer's intended stem values from the Dimensions palette. Returns stem snap values from custom parameters AND measured values from reference glyphs (H, O, n, o). These are the TARGET values that other glyphs should match. Use this as baseline for compare_stems — to check if glyphs hit the designer's intended values, not just if they're consistent with each other. |
| measure_colorA | Measure the ink density (typographic color) of a single glyph. Ink density = ratio of filled area to total bounding box. Normalizes by the appropriate zone height (x-height for lowercase, cap-height for uppercase) so values are comparable across glyphs. Returns a value between 0.0 and 1.0 (typically 0.15-0.50 for text fonts). Higher = darker/heavier glyph. Lower = lighter. |
| compare_colorA | Compare typographic color (ink density) across multiple glyphs. RECIPE: For a full consistency audit, follow get_recipe("audit_consistency"). Finds glyphs that are visually too dark or too light compared to the group. Uses per-glyph expected density ratios from industry patterns — each glyph gets a verdict: pass, compensation, inconsistent, or unreliable. Reference glyphs: n (lowercase), H (uppercase). If master_id is omitted, analyzes ALL masters and returns per-master results. Glyph color in GlyphsApp = worst verdict across all masters. Does not modify glyph colors by default. When
Args: glyph_names: Glyphs to compare master_id: Optional master ID (empty = all masters) mark_glyphs: Color glyphs by verdict only when explicitly requested Examples: "Is the color consistent across uppercase?" -> compare_color(["H","I","M","N","O","B","D","E","F","K","L","P","R"]) |
| audit_font_colorA | Full font color audit — analyzes ALL letter glyphs grouped by category. RECIPE: For a full consistency audit, follow get_recipe("audit_consistency"). Groups glyphs into uppercase, lowercase, and figures, then evaluates each against expected density ratios from industry patterns. If master_id is omitted, analyzes ALL masters with worst-verdict-wins for glyph colors in GlyphsApp. Does not modify glyph colors by default. Set The lowercase-to-uppercase density ratio is typically 1.10-1.16 in professional fonts. This is the comprehensive "is my font's color even?" check. Use this before final production to catch any weight inconsistencies. Args: master_id: Optional master ID (empty = all masters) mark_glyphs: Color glyphs by verdict only when explicitly requested |
| check_overshootsA | Check overshoot values for round and pointed forms. RECIPE: For a pre-export check, follow get_recipe("master_compatibility"). Round forms (O, o, C, S, etc.) should overshoot baseline and zone top by ~1-2% of zone height. Pointed forms (A, V, W) need MORE overshoot than rounds to appear optically aligned. If no glyph_names provided, checks all known overshoot-sensitive glyphs in the font (O,C,D,G,Q,S,U,A,V,W,M,N,o,c,e,s,b,d,p,q,g,a,u,v,w,y + figures). If master_id is omitted, analyzes ALL masters. Does not modify glyph colors by default. When Args: glyph_names: Optional list of glyphs to check (default: all overshoot glyphs) master_id: Optional master ID (empty = all masters) mark_glyphs: Color glyphs by verdict only when explicitly requested |
| compare_proportionsA | Compare width proportions across glyphs within a font. RECIPE: For a full consistency audit, follow get_recipe("audit_consistency"). Checks three things:
References: n for lowercase, H for uppercase/figures. If no glyph_names provided, checks all LC + UC + figures. If master_id is omitted, analyzes ALL masters. Does not modify glyph colors by default. When Args: glyph_names: Optional list of glyphs to check master_id: Optional master ID (empty = all masters) mark_glyphs: Color glyphs by verdict only when explicitly requested |
| check_diagonal_weightsA | Check diagonal stroke weight consistency and ratio to vertical stems. Measures perpendicular thickness of diagonal strokes (V, A, W, X, Y, Z, v, w, x, y, z, k, M, N) and checks:
If no glyph_names provided, checks all diagonal glyphs. If master_id is omitted, analyzes ALL masters. Does not modify glyph colors by default. When Args: glyph_names: Optional list of glyphs to check master_id: Optional master ID (empty = all masters) mark_glyphs: Color glyphs by verdict only when explicitly requested |
| check_junctionsA | Check junction thinning consistency across related glyphs. Measures how stems thin at arch/bowl junctions (n, m, b, d, p, q, etc.) by sweeping horizontal rays at multiple heights. Reports thinning % (100% = no thinning, 80% = stem thins to 80% at junction). Checks consistency within groups (n≈m, b≈p, d≈q). Does NOT flag based on absolute values — thinning is design-specific. Only flags inconsistencies between related forms. If master_id is omitted, analyzes ALL masters. Does not modify glyph colors by default. When Args: glyph_names: Optional list of glyphs to check (default: n,h,m,u,a,b,d,p,q) master_id: Optional master ID (empty = all masters) mark_glyphs: Color glyphs by verdict only when explicitly requested |
| check_related_formsA | Cross-validate related figures and letters (0↔O, 6↔9, 8↔S, 3↔B, etc.). Based on industry patterns across professional fonts. Checks width ratios between pairs that should be structurally related:
If master_id is omitted, analyzes ALL masters. Does not modify glyph colors by default. When Args: master_id: Optional master ID (empty = all masters) mark_glyphs: Color glyphs by verdict only when explicitly requested |
| check_punctuationA | Check punctuation consistency: mirrored pairs, width matches, and ratio checks. Based on industry patterns across professional fonts. Checks: Width matches (should be identical/similar):
Width ratios (expected relationships):
Skips any pairs where glyphs are missing. If master_id is omitted, analyzes ALL masters. Does not modify glyph colors by default. When Args: master_id: Optional master ID (empty = all masters) mark_glyphs: Color glyphs by verdict only when explicitly requested |
| check_compatibilityA | Check master compatibility across all glyphs in the font. RECIPE: For a complete pre-export check, call get_recipe("master_compatibility") first — it includes metrics interpolation and alignment zone verification. Compares layers across masters for each glyph, checking:
Does not modify glyph colors by default. When
Args: glyph_names: Optional list of glyphs to check (default: all glyphs) mark_glyphs: Color glyphs by verdict only when explicitly requested |
| analyze_kerningA | Analyze kerning quality across all masters. RECIPE: For kerning from scratch, call get_recipe("kerning_from_scratch") first — it covers group assignment, critical pairs, and verification. Checks for:
Returns a formatted markdown report without modifying glyph colors. When
Args: master_id: Optional master ID (cross-master checks always run across all masters) mark_glyphs: Color glyphs by verdict only when explicitly requested |
| analyze_spacingA | Analyze spacing quality across all masters. RECIPE: For systematic spacing work, call get_recipe("spacing_workflow") first — it follows Cheng/Briem/Ruder methodology step by step. Measures sidebearings and white space margins using scanline ray-casting, then checks for consistency issues:
Does not modify glyph colors by default. When Args: master_id: Optional master ID (empty = all masters) glyph_names: Optional list of glyphs (empty = all Letter glyphs) mark_glyphs: Color glyphs by verdict only when explicitly requested |
| get_spacing_stringsA | Get spacing test strings for visually evaluating a glyph's spacing. RECIPE: For systematic spacing work, follow get_recipe("spacing_workflow"). Generates canonical test strings based on industry-standard methods:
Use these strings in GlyphsApp's Edit view to visually assess spacing quality. Args: glyph_name: Name of the glyph to generate test strings for |
| check_font_nameA | Screen one proposed typeface family name for known collisions. Queries the public Fontdata Namecheck API and returns exact, close, and partial match counts, trademark information, a review status, timestamp, and a link to the full result. This is collision screening, not legal clearance: a name that is not found is not guaranteed to be available. Args: name: Proposed typeface family name to check. |
| generate_box_drawingA | Generate Unicode box drawing and block element glyphs in the open font. By default, processes U+2500–U+259F. Existing drawn glyphs are skipped
unless Args: glyph_names: Optional subset to generate. Accepts glyph names, single characters, or codepoints like "U+2500". overwrite: Replace existing drawings if True. width: Force advance width for generated glyphs. 0 = auto. stroke: Light/single stroke thickness. 0 = auto. heavy_stroke: Heavy stroke thickness. 0 = auto. double_gap: Gap between double-line strokes. 0 = auto. color: Optional glyph color label for newly created glyphs. |
| export_fontA | Export the open font beside its saved source with glyphs-cli. Creates The response always contains portable Args: save_before_export: Save pending changes before exporting. Defaults to False; if the document is edited, the tool asks for confirmation instead of silently saving it. timeout: Maximum seconds for each of the three export runs. |
| analyze_kerning_groupsA | Analyze and assign kerning groups to all glyphs. RECIPE: For a complete kerning workflow (groups → pairs → verification), call get_recipe("kerning_from_scratch") first. Assigns correct groups to all glyphs, overwriting any existing values. Uses a five-tier resolution strategy:
Group names follow professional conventions (key glyph = group name):
Does not modify glyph colors by default. Set Args: glyph_names: Optional list of glyph names (default: all Letter/Number/Punctuation glyphs) apply: If True (default), assign groups. If False, dry run only. overwrite: If True (default), overwrite existing groups. If False, only assign to empty slots. mark_glyphs: Color affected glyphs only when explicitly requested. |
| smart_scaleA | Scale glyphs with automatic stem weight compensation. RECIPE: For multi-glyph scaling tasks, call get_recipe("scale_proportions") first — it includes pre/post stem verification and visual comparison steps. Unlike simple affine transforms which distort stem weights, this tool:
All values are scale factors where 1.0 = no change. Args: width: Horizontal scale factor. 0.97 = 3% narrower, 1.1 = 10% wider height: Vertical scale factor. 1.15 = 15% taller, 0.9 = 10% shorter weight: Target stem weight factor. 1.0 = maintain original stem thickness after scaling (compensate). 0.9 = make stems 10% thinner. 1.1 = 10% thicker. proportional: If true, height follows width (uniform scale with compensation) glyph_names: List of glyph names to process (empty = all exporting glyphs) master_id: Process only this master (empty = all masters) backup: Create backup layers before modifying (default true) Examples: Condense 3% keeping weight: smart_scale(width=0.97, weight=1.0) Increase x-height 15% keeping weight: smart_scale(height=1.15, weight=1.0) Scale uniformly 90% with weight compensation: smart_scale(width=0.9, proportional=True) Make all stems 10% thicker: smart_scale(weight=1.1) Condense UC only: smart_scale(width=0.95, glyph_names=["A","B","C",...]) |
| list_recipesA | List available workflow recipes. Recipes are step-by-step guides for complex type design tasks. They tell you which tools to call, in what order, and what to check. IMPORTANT: You MUST call this before starting any multi-step type design task (scaling, auditing, spacing, kerning, compatibility checks, etc.). If a recipe matches the task, call get_recipe(name) and follow its steps in order — they encode expert type design knowledge and dependency ordering. |
| get_recipeA | Get a specific workflow recipe by name. Returns the full recipe with step-by-step instructions, plus totalSteps count. Use get_recipe_step() to read and execute one step at a time. Args: name: Recipe name (from list_recipes, e.g. 'scale_proportions') |
| get_recipe_stepA | Get a single step from a recipe for sequential execution. Returns step title, content, and a MANDATORY directive field. You MUST follow the directive — it tells you exactly what to do next. The response includes:
IMPORTANT: Execute ALL tools listed in the step content before proceeding. Do NOT skip steps. Do NOT combine steps. Follow the directive field. Args: name: Recipe name (e.g. 'audit_consistency') step: Step number (1-based) |
| create_recipeA | Create a new workflow recipe. Recipes are markdown files with numbered steps. Follow this format: Recipe: My Recipe TitleDescription of what this recipe does. Steps1. First step title
2. Second step title
Args: name: Snake_case identifier (e.g. 'fix_spacing_issues') content: Full markdown content of the recipe overwrite: If true, replace existing recipe with same name |
| delete_recipeC | Delete a workflow recipe. Args: name: Recipe name to delete (e.g. 'old_workflow') |
| auto_kernA | Auto-kern glyph pairs using optical gap analysis (MB LetterKerner algorithm). Measures the optical white area between each glyph pair using horizontal ray-casting, weighted by a trapezoidal function (full weight at baseline–xHeight, tapered in descender/ascender zones), then solves for the kern value that makes each pair's gap area match a calibration reference. Auto-calibrates from nn (lowercase) and HH (uppercase) if no area is given. Recommended workflow:
Args: pairs: Pair selection mode: "critical" — ~75 essential pairs (AV, AT, To, Va, etc.) "auto" — generate representative pairs per kerning group combination "explicit" — use pairs_list pairs_list: Explicit pairs when pairs="explicit", e.g. [["A","V"],["T","o"]] area: Target gap area in units². None = auto-calibrate from nn/HH. step: Vertical sampling interval (default 5u, smaller = more precise) depth: Max probe depth per side (default 200u) factor: Optical correction factor (default 1.25, matches HT LetterSpacer) rounding: Round kern values to multiples of this (default 5) threshold: Skip kern values with abs < threshold (default 3) use_groups: Use group kerning keys (default True, strongly recommended) overwrite: Overwrite existing kerning (default False) dry_run: Preview only, don't apply (default False) master_id: Process only this master (empty = all masters) |
| review_productionA | Run a comprehensive production readiness review on the open font. Checks 44 items across critical/warning/info severities: Critical (must fix): family name, .notdef, space glyph, duplicate unicodes/names, master compatibility, vertical metrics, open paths, valid glyph names, missing components, alignment zones. Warning (should fix): metadata, version, essential glyphs, .notdef outlines, zone overshoots, Use Typo Metrics, typo/hhea match, win metrics coverage, kerning groups, cross-master kerning, critical kern pairs, OT features, weight classes, style linking, nbspace width, zero-width letters, PANOSE, stems defined, short segments, near-miss alignments, presentation forms decomposition (fi/fl/ff), German sharp S, Dutch IJ localization, smallcap completeness, salt feature, languagesystems prefix, Remove Overlap. Info: glyph count by category, font metrics, fsType, VF readiness, unreachable glyphs. Returns a formatted markdown report with pass/fail status and details for failures. |
| check_language_supportA | Check the open font's language support with Shaperglot. Exports a temporary binary from the active Glyphs font, then runs
Shaperglot against it. With no languages provided, returns the
languages whose score meets Args: languages: Optional language IDs or names, e.g. ["en_Latn", "Turkish", "Navajo"] instance_name: Optional Glyphs instance name to export. Empty = first exportable instance. export_format: "otf" (default) or "ttf" support_threshold: Minimum score to count a language as supported in report mode max_results: Max languages to show in report mode |
| check_glyphset_coverageA | Check font coverage against Google Fonts glyphset definitions. With no arguments, lists all available glyphsets. With a glyphset name, reports which glyphs are present and which are missing. Use add_missing=True to create empty glyphs for all missing characters, ready for the designer to draw. Args: glyphset: Glyphset name or shortcut. Examples: "GF_Latin_Core" — required for Google Fonts onboarding (324 glyphs) "GF_Latin_Plus" — extended Latin (141 additional glyphs) "latin_core" — shortcut for GF_Latin_Core "latin_plus" — shortcut for GF_Latin_Core + GF_Latin_Plus (465 total) "latin_all" — shortcut for Core + Plus + Beyond (598 total) "cyrillic_core", "greek_core", "arabic_core" — other scripts Empty string — list all available glyphsets and shortcuts add_missing: If True, create empty glyphs for all missing characters in the font. New glyphs are marked with blue color label. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| recipes | List available workflow recipes, or start one by name. |
| audit_consistency | Full font consistency audit: stems, color, proportions, spacing. |
| spacing_workflow | Systematic spacing pass following Cheng/Briem/Ruder. |
| kerning_from_scratch | Kerning from scratch: groups, critical pairs, verification. |
| scale_proportions | Scale glyphs with automatic stem-weight compensation. |
| master_compatibility | Pre-export master compatibility and metrics check. |
| cleanup_dated_layers | Safely remove timestamped backup layers. |
| create_glyphs_plugin | Create a GlyphsApp plugin bundle. |
| create_glyphs_script | Create a GlyphsApp Script-menu script. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 55 tools
Most tools target a distinct resource, but there is real overlap among scaling/transformation tools such as rmx_scale, smart_scale, rmx_tune, and rmx_batch when used with the "scale" filter. The detailed descriptions help, but an agent could still easily pick the wrong entry point for a similar-looking operation.
The vast majority of tools follow a readable snake_case verb_noun pattern like get_glyph, set_kerning_pair, and analyze_spacing. The rmx_*, smart_*, and auto_* prefixed tools break the pure pattern slightly, but the conventions are internally consistent enough to stay predictable.
With 55 tools, this clearly exceeds the 50+ threshold for an extreme tool count. Many audit, comparison, transformation, and recipe tools could be consolidated, and the recipe meta-tools add a large amount of surface area that could be folded into a smaller set.
The toolset provides strong coverage across glyph CRUD, paths, widths, unicode, colors, kerning, features, masters, exports, and a wide range of design audits. Minor gaps exist, such as no direct component/anchor editing, no sidebearing setter, and no feature deletion, but most workflows can still be completed.