Skip to main content
Glama

Set typography scene

set_typography_scene
Idempotent

PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Compose a speech-cued mixed-font phrase in ONE revision, as editable native text. All words reserve their final positions: earlier words never jump or replay their entrance. Stable id replaces its group. lines is 1-6 rows, each {runs:[{text,at,font,italic,scale,color}],size?}. at is the REAL PROGRAM cue in seconds (not source or relative time); default=start. Runs stay until the shared end. Use build to accumulate at spoken cues; still displays everything. Pair Inter Display Bold with sparse Instrument Serif italic for meaningful contrast, not every word. A line's size and run scale multiply font_size (fraction of canvas short edge). box=[left,top,right,bottom] is a measured region; align left/center/right; motion settle/none. Keep the box inside the safe area (left/right .045-.955, top/bottom .04-.96). leading is row spacing 1.05-1.8 (rows never overlap; this is not caption leading). fit=auto (default) clamps out-of-range numbers and the box into the safe area, then scales font_size down until every row fits (at most 40%, never below 0.05; longer copy is rejected with the size that would fit), and reports each applied value; fit=strict rejects instead. A cue before start snaps to start (reported); no other cue time is moved. Every problem is listed in one reply. mute_captions=true replaces dialogue ONLY in these actual live windows; false for independent labels. Use real words and cue times from get_kept_transcript. Inspect the opening, build, settled phrase and face clearance. This is designed typography, not a substitute for selecting a good story.

Input Schema

NameRequiredDescriptionDefault
idYes
boxNo
endYes
fitNo
alignNo
colorNo
linesYes
startYes
motionNo
revealNo
leadingNo
font_sizeNo
project_idYesRequired immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess.
mute_captionsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed17 schema fields changed
    • addedInput schema / properties / box / items / maximum
      Added value: +1
    • addedInput schema / properties / box / items / minimum
      Added value: +0
    • addedInput schema / properties / fit
      Added value: +{
      +  "enum": [
      +    "auto",
      +    "strict"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / font_size / maximum
      Added value: +0.2
    • addedInput schema / properties / font_size / minimum
      Added value: +0.03
    • addedInput schema / properties / leading / maximum
      Added value: +1.8
    • addedInput schema / properties / leading / minimum
      Added value: +1.05
    • addedInput schema / properties / lines / items / properties / runs / items / properties / at / minimum
      Added value: +0
    • addedInput schema / properties / lines / items / properties / runs / items / properties / scale / maximum
      Added value: +1.8
    • addedInput schema / properties / lines / items / properties / runs / items / properties / scale / minimum
      Added value: +0.6
    • addedInput schema / properties / lines / items / properties / runs / items / properties / text / maxLength
      Added value: +100
    • addedInput schema / properties / lines / items / properties / runs / items / properties / text / minLength
      Added value: +1
    • addedInput schema / properties / lines / items / properties / runs / maxItems
      Added value: +32
    • addedInput schema / properties / lines / items / properties / runs / minItems
      Added value: +1
    • addedInput schema / properties / lines / items / properties / size / maximum
      Added value: +1.8
    • addedInput schema / properties / lines / items / properties / size / minimum
      Added value: +0.6
    • addedInput schema / properties / start / minimum
      Added value: +0
  2. Added

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare a non-read-only, idempotent, non-destructive mutation. The description adds substantial behavior beyond that: project scoping, one-revision composition, stable id replacement, fit=auto clamping/scaling/reporting, fit=strict rejection, cue snapping to start, and consolidated problem reporting. There is no contradiction with the annotations.

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?

The description is long and dense, but appropriate for a 14-parameter tool with low schema coverage. It is front-loaded with project scope and the core composition action, though the middle paragraphs could be structured more clearly.

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

Completeness5/5

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

Given the complexity, no output schema, and 7% schema description coverage, the description is complete enough. It covers project scoping, parameter semantics, fitting behavior, cue handling, error aggregation, and the fact that the project identity is returned.

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

Parameters5/5

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

With only 7% schema description coverage, the description carries nearly the full burden. It explains lines and runs structure, at as real program cue time, font and scale semantics, size/scale multiplication with font_size, box coordinates, align, motion, leading, fit, and mute_captions. id, end, and reveal are addressed indirectly through stable id, shared end, and build/still language.

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 description states a specific verb and resource: compose a speech-cued mixed-font phrase in one revision as editable native text. It is clearly about setting a typography scene, but it does not explicitly distinguish itself from sibling typography tools such as set_typeset or add_kinetic_text.

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

Usage Guidelines4/5

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

It gives clear operational guidance: use build to accumulate at spoken cues, still displays everything, and use real words and cue times from get_kept_transcript. It also explains mute_captions true vs false, but it does not state when to choose this tool over sibling typography tools.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.