Skip to main content
Glama
Kydaix

Font Design MCP

by Kydaix

render_glyph

Generate and return a PNG preview of a glyph from a selected UFO revision, with optional guides, points, and measurements. Compare revisions using overlay or difference modes.

Instructions

Persist and return PNG image content from the selected UFO revision, with optional guides/handles. Comparison uses the same frame.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
widthNo
detailNosummary
guidesNo
heightNo
pointsNo
glyph_idYes
revisionNo
master_idNodefault
image_modeNoinline
project_idYes
measurementsNo
reference_idNo
comparison_modeNooverlay
compare_revisionNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
okYes
dataNo
errorNo
changedNo
summaryYes
revisionNo
warningsNo
project_idNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.6.0
    • addedInput schema / properties / comparison_mode
      Added value: +{
      +  "default": "overlay",
      +  "enum": [
      +    "overlay",
      +    "difference"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / measurements
      Added value: +{
      +  "default": false,
      +  "type": "boolean"
      +}
  2. Changed1 schema field changedv0.5.0
    • addedInput schema / properties / reference_id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "pattern": "^[a-zA-Z0-9_][a-zA-Z0-9_.-]{0,63}$",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
  3. Changed21 schema fields changedv0.4.3
    • removedInput schema / properties / compare_revision / title
      Removed value: -"Compare Revision"
    • addedInput schema / properties / detail
      Added value: +{
      +  "default": "summary",
      +  "enum": [
      +    "summary",
      +    "full"
      +  ],
      +  "type": "string"
      +}
    • removedInput schema / properties / glyph_id / title
      Removed value: -"Glyph Id"
    • removedInput schema / properties / guides / title
      Removed value: -"Guides"
    • removedInput schema / properties / height / title
      Removed value: -"Height"
    • addedInput schema / properties / image_mode
      Added value: +{
      +  "default": "inline",
      +  "enum": [
      +    "inline",
      +    "resource"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / master_id
      Added value: +{
      +  "default": "default",
      +  "pattern": "^[a-zA-Z0-9_][a-zA-Z0-9_.-]{0,63}$",
      +  "type": "string"
      +}
    • removedInput schema / properties / points / title
      Removed value: -"Points"
    • removedInput schema / properties / project_id / title
      Removed value: -"Project Id"
    • removedInput schema / properties / revision / title
      Removed value: -"Revision"
    • removedInput schema / properties / width / title
      Removed value: -"Width"
    • removedInput schema / title
      Removed value: -"RenderGlyph"
    • removedOutput schema / properties / changed / title
      Removed value: -"Changed"
    • removedOutput schema / properties / data / title
      Removed value: -"Data"
    • removedOutput schema / properties / error / title
      Removed value: -"Error"
    • removedOutput schema / properties / ok / title
      Removed value: -"Ok"
    • removedOutput schema / properties / project_id / title
      Removed value: -"Project Id"
    • removedOutput schema / properties / revision / title
      Removed value: -"Revision"
    • removedOutput schema / properties / summary / title
      Removed value: -"Summary"
    • removedOutput schema / properties / warnings / title
      Removed value: -"Warnings"
    • removedOutput schema / title
      Removed value: -"Result"
  4. First observedv0.1.0

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false and non-idempotent, and 'Persist' is consistent with a write, so no contradiction. However, with 14 parameters the description does not explain what persisting entails (caching, overwrite, storage cost), whether it requires an open project, or what the comparison frame constraint actually means operationally.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with verb and resource, no filler. The second sentence is terse but carries a real constraint about comparison framing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter tool with zero schema descriptions, no output-schema explanation needed (output schema exists), the description is far too thin to let an agent call it confidently without reading every property.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% across 14 parameters, so the description must compensate but only touches guides/handles and comparison. Width, height, detail, master_id, image_mode, measurements, revision, and comparison_mode/reference_id/compare_revision are all left unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb pair (persist and return) and resource (PNG image content from the selected UFO revision), so an agent can tell it renders glyphs to images. It does not differentiate itself from siblings like render_text or render_proof, which also produce rendered output.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of alternatives (render_text, render_proof, glyph_get), and no indication of prerequisites such as an open project or valid revision. The only hint is that comparison reuses the same frame, which is a constraint rather than a selection rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.