Skip to main content
Glama

generate_nameplate

Create a custom desk nameplate with up to two lines of engraved text, then inspect the result in an interactive 3D view for orbit and zoom.

Instructions

Generate a desk nameplate with two lines of engraved text. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link). MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.

INLINE 3D STAGE: on success this tool opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "generate_nameplate"
  }
}

Input Schema

NameRequiredDescriptionDefault
fontNoOpenSCAD font spec (default Liberation Sans Bold). Default: "Liberation Sans:style=Bold".
sizeNoSize preset — ``"small"``, ``"medium"``, ``"large"``. Any other name is refused. Default: "".
brief_idNoOptional saved-goal id from ``design_session``. When supplied, the produced mesh gets a ``design_brief:<id>`` intent sidecar so the audit's "matches what you asked for" gate, the brief failure_history wiring, and the ``compare_design_versions`` intent diff all light up against the saved goal. Omit to skip — REST callers without a goal still get an auto-inferred brief at dispatch time. Default: "".
materialNoMaterial (default PLA). Default: "PLA".
width_mmNoWedge width in mm (default 200). Default: 200.0.
height_mmNoWedge height in mm (default 60). Default: 60.0.
body_colorNoBody color (default black). Default: "black".
text_line_1NoPrimary line (e.g. a name). Default: "".
text_line_2NoOptional second line (e.g. a title). Default: "".
border_frameNoRaised rectangular frame around the text. Default: true.
font_size_mmNoLine-1 font size in mm; 0 = auto-fit. Default: 0.0.
include_stepNoAlso emit a CAD-exact STEP file. The STEP is REAL analytic B-rep built from the same typed parameters as the mesh (true planes, exact dimensions — what a machine shop's CAD opens clean), never a tessellated conversion. On success the response gains a ``step`` block with ``step_path``; if the B-rep layer is unavailable or fails, the mesh outputs are unaffected and ``step`` carries a structured refusal instead. Default: false.
base_depth_mmNoFootprint depth in mm (default 50). Default: 50.0.
color_overridesNoJSON dict mapping role → color. Default: "".

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed14 schema fields changedv1.5.1
    • changedInput schema / properties / base_depth_mm / description
      Previous value: -"Default: 50.0."New value: +"Footprint depth in mm (default 50). Default: 50.0."
    • changedInput schema / properties / body_color / description
      Previous value: -"Default: \"black\"."New value: +"Body color (default black). Default: \"black\"."
    • changedInput schema / properties / border_frame / description
      Previous value: -"Default: true."New value: +"Raised rectangular frame around the text. Default: true."
    • changedInput schema / properties / brief_id / description
      Previous value: -"Default: \"\"."New value: +"Optional saved-goal id from ``design_session``. When supplied, the produced mesh gets a ``design_brief:<id>`` intent sidecar so the audit's \"matches what you asked for\" gate, the brief failure_history wiring, and the ``compare_design_versions`` intent diff all light up against the saved goal.  Omit to skip — REST callers without a goal still get an auto-inferred brief at dispatch time. Default: \"\"."
    • changedInput schema / properties / color_overrides / description
      Previous value: -"Default: \"\"."New value: +"JSON dict mapping role → color. Default: \"\"."
    • changedInput schema / properties / font / description
      Previous value: -"Default: \"Liberation Sans:style=Bold\"."New value: +"OpenSCAD font spec (default Liberation Sans Bold). Default: \"Liberation Sans:style=Bold\"."
    • changedInput schema / properties / font_size_mm / description
      Previous value: -"Default: 0.0."New value: +"Line-1 font size in mm; 0 = auto-fit. Default: 0.0."
    • changedInput schema / properties / height_mm / description
      Previous value: -"Default: 60.0."New value: +"Wedge height in mm (default 60). Default: 60.0."
    • changedInput schema / properties / include_step / description
      Previous value: -"Default: false."New value: +"Also emit a CAD-exact STEP file.  The STEP is REAL analytic B-rep built from the same typed parameters as the mesh (true planes, exact dimensions — what a machine shop's CAD opens clean), never a tessellated conversion.  On success the response gains a ``step`` block with ``step_path``; if the B-rep layer is unavailable or fails, the mesh outputs are unaffected and ``step`` carries a structured refusal instead. Default: false."
    • changedInput schema / properties / material / description
      Previous value: -"Default: \"PLA\"."New value: +"Material (default PLA). Default: \"PLA\"."
    • changedInput schema / properties / size / description
      Previous value: -"Default: \"\"."New value: +"Size preset — ``\"small\"``, ``\"medium\"``, ``\"large\"``. Any other name is refused. Default: \"\"."
    • changedInput schema / properties / text_line_1 / description
      Previous value: -"Default: \"\"."New value: +"Primary line (e.g. a name). Default: \"\"."
    • changedInput schema / properties / text_line_2 / description
      Previous value: -"Default: \"\"."New value: +"Optional second line (e.g. a title). Default: \"\"."
    • changedInput schema / properties / width_mm / description
      Previous value: -"Default: 200.0."New value: +"Wedge width in mm (default 200). Default: 200.0."
  2. Addedv1.5.0

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful behavior beyond that: it opens an inline 3D stage, decimates oversized meshes automatically, and treats the PNG preview as a floor. It does not describe failure modes or what the response contains, so it earns a solid but not exceptional score.

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?

The purpose is front-loaded, which is good, but the description is bloated by a 'MAKE DOORS' tangent about design_session and compile_scad that concerns a different tool and adds noise for an agent deciding whether to call this one. The inline-stage paragraph is repeated in spirit across two sections, so several sentences do not earn their place.

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?

For a 14-parameter generator with no output schema, the description covers the important post-call behavior: the interactive stage, automatic decimation, and the preview fallback. Combined with a fully documented schema and annotations, an agent has enough to call it correctly, though return-value specifics remain implicit.

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

Parameters3/5

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

Schema description coverage is 100% across all 14 parameters, so the schema already documents fonts, sizes, colors, and the STEP option in detail. The description only restates the two-line text concept and adds no syntax or format meaning beyond the schema, which is the expected baseline when the schema does the heavy lifting.

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 gives a specific verb and resource: 'Generate a desk nameplate with two lines of engraved text.' That is unambiguous and lets an agent distinguish it from generic mesh tools. It does not, however, differentiate it from the many sibling generators (generate_wall_plaque, generate_keychain, generate_coaster), so it stops short of a 5.

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?

The 'MAKE DOORS' paragraph explains routing between design_session and compile_scad for making objects generally, but never states when to pick generate_nameplate over the other product generators. Usage is implied by the nameplate purpose rather than explicitly scoped, so this is minimum-viable guidance.

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

Deploy Server

Other Tools