Skip to main content
Glama

list_fonts

Read-onlyIdempotent

Query available typefaces for text, draw_text, and scene text producers, including optional Hershey faces, to select suitable single-stroke fonts for pen plotter output.

Instructions

Every typeface available to text, draw_text and a scene's "text" producer.

Two families, and the difference matters on paper:

HANDWRITING (fonts/, SIL OFL) -- real single-line handwriting faces, print and cursive. Each letter is drawn ONCE. Prefer these. HERSHEY -- the classic 1967 engraving set, kept for compatibility. Its bold and serif faces fake weight by RETRACING every stem (a capital H in rowmant is 27 strokes), which on a pen plotter reads as a scribble. Pass include_hershey=true to list them.

Three measurements decide whether a face works here, and they catch different failures -- all three were learned the hard way on paper: passes strokes per letter vs a human's. Catches retracing. aperture the width of a letter's opening (the gap in s/a/e/o/g) against the 1-2 mm the firmware's corner blending eats. Catches letters that close into blobs: brush at 0.89 mm turned "oo" into "rr" on the test sheet. joins for cursive, whether letters weld into one continuous stroke per word.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
include_hersheyNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the bar is lower, and the description adds real context: the two families, the license note for fonts/ (SIL OFL), and the three measurements (passes, aperture, joins) that appear in the results. It stops short of describing the literal return format or field order, but the semantic behavior is well disclosed.

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

Conciseness3/5

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

It is front-loaded with the purpose sentence and organized into labeled blocks, which helps. But for a simple listing tool it is verbose, spending many lines on illustrative lore (a capital H in rowmant is 27 strokes; brush at 0.89 mm) that informs font choice rather than tool invocation.

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

Completeness4/5

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

With no output schema, the description carries the burden of describing results, and it does so semantically by naming the families and the three decision measurements an agent will see. Pagination, counts, or exact returned fields are not covered, but the agent has enough to call and interpret it.

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

Parameters4/5

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

Schema coverage is 0%, so the description must carry the parameter, and it does: it explains what include_hershey=true does (list the legacy Hershey faces) and pairs that with a concrete reason to avoid it. The default is left to the schema, which is fine.

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?

The opening sentence states the resource (typefaces/fonts) and ties it to the consuming tools (text, draw_text, a scene's "text" producer), so the agent knows this is the discovery step before drawing text. It is clear but does not explicitly differentiate itself from siblings like preview_text or get_example beyond the font-listing scope.

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

Usage Guidelines3/5

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

Guidance is implied rather than explicit: it says handwriting faces are preferred and that include_hershey=true reveals the legacy set, which is useful selection advice. However, it never states plainly when to call this tool (e.g., before draw_text to discover valid font names) or why not to use include_hershey by default beyond the scribble warning.

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