Skip to main content
Glama

generate_wall_plaque

Turn a photo into a wall-mountable 3D plaque with optional text, size, border, material, and keyhole mounts; preview the result in an interactive 3D stage.

Instructions

Generate a wall-mountable photo plaque. 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

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "photo": "<photo>"
    },
    "name": "generate_wall_plaque"
  }
}

Input Schema

NameRequiredDescriptionDefault
sizeNoSize preset — ``"small"``, ``"medium"``, ``"large"``, ``"xl"``. Any other name is refused. Default: "".
textNoOptional text below photo — ``"text:..."`` format. Default: "".
photoYesFile path to photo (PNG/JPG) for front face.
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_mmNoPlaque width in mm (default 150, max 300). Default: 150.0.
border_mmNoRaised border frame width (default 5, 0 to disable). Default: 5.0.
height_mmNoPlaque height in mm (default 100, max 200). Default: 100.0.
body_colorNoBody color (default white for emboss contrast). Default: "white".
mount_holesNoKeyhole mount holes on back (0-4, default 2). Default: 2.
include_stepNoA wall plaque's photo relief is a heightmap with no analytic CAD form, so the STEP is always refused honestly (NOT_ANALYTIC) — the mesh outputs carry the product. Default: false.
thickness_mmNoThickness in mm (default 8, min 6). Default: 8.0.
color_overridesNoJSON dict mapping role → color name/hex. Overrides body_color for "body" role unless body_color is also set. Default: "".

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed13 schema fields changedv1.5.1
    • changedInput schema / properties / body_color / description
      Previous value: -"Default: \"white\"."New value: +"Body color (default white for emboss contrast). Default: \"white\"."
    • changedInput schema / properties / border_mm / description
      Previous value: -"Default: 5.0."New value: +"Raised border frame width (default 5, 0 to disable). Default: 5.0."
    • 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 name/hex. Overrides body_color for \"body\" role unless body_color is also set. Default: \"\"."
    • changedInput schema / properties / height_mm / description
      Previous value: -"Default: 100.0."New value: +"Plaque height in mm (default 100, max 200). Default: 100.0."
    • changedInput schema / properties / include_step / description
      Previous value: -"Default: false."New value: +"A wall plaque's photo relief is a heightmap with no analytic CAD form, so the STEP is always refused honestly (NOT_ANALYTIC) — the mesh outputs carry the product. Default: false."
    • changedInput schema / properties / material / description
      Previous value: -"Default: \"PLA\"."New value: +"Material (default PLA). Default: \"PLA\"."
    • changedInput schema / properties / mount_holes / description
      Previous value: -"Default: 2."New value: +"Keyhole mount holes on back (0-4, default 2). Default: 2."
    • addedInput schema / properties / photo / description
      Added value: +"File path to photo (PNG/JPG) for front face."
    • changedInput schema / properties / size / description
      Previous value: -"Default: \"\"."New value: +"Size preset — ``\"small\"``, ``\"medium\"``, ``\"large\"``, ``\"xl\"``. Any other name is refused. Default: \"\"."
    • changedInput schema / properties / text / description
      Previous value: -"Default: \"\"."New value: +"Optional text below photo — ``\"text:...\"`` format. Default: \"\"."
    • changedInput schema / properties / thickness_mm / description
      Previous value: -"Default: 8.0."New value: +"Thickness in mm (default 8, min 6). Default: 8.0."
    • changedInput schema / properties / width_mm / description
      Previous value: -"Default: 150.0."New value: +"Plaque width in mm (default 150, max 300). Default: 150.0."
  2. Addedv1.5.0

TDQS

C2.9/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 genuine value by disclosing the inline 3D stage, automatic mesh decimation for oversized meshes, and that a PNG preview is the minimum artifact. It omits what an agent would still want for a write-ish generator: whether a design record or files are persisted, where outputs land, and latency/cost expectations.

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

Conciseness2/5

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

The purpose line is well front-loaded, but the INLINE 3D STAGE block restates the first sentence's stage claim almost verbatim, and the MAKE DOORS paragraph about a tool that is not installed here is a distracting tangent. Substantial text could be cut with no loss of actionable information.

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

Completeness3/5

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

For a 13-parameter, single-required-parameter generator with no output schema, the description does explain the user-facing outcome (mesh, PNG preview, interactive stage). It never states what the returned payload contains, whether the model is saved to a design library, or what the STEP refusal means for downstream export, which leaves real gaps for a fairly complex tool.

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 13 parameters, so the schema already carries sizes, defaults, and ranges; the description need only avoid regressions. It references brief_id only obliquely through the design_session tangent and adds no format or interaction detail for parameters like color_overrides or mount_holes. Baseline 3 applies where 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 wall-mountable photo plaque." That is far clearer than a tautology and tells the agent exactly what artifact comes out. It stops short of differentiating from the many adjacent product generators in the sibling list (generate_nameplate, generate_coaster, photo_relief, generate_fridge_magnet), leaving the agent to infer the boundary.

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?

The "MAKE DOORS" paragraph discusses design_session and compile_scad, but that is meta-guidance about a missing orchestration tool rather than guidance on when to pick this plaque generator over a sibling generator. There is no explicit when-to-use, no prerequisites, and no named alternative for a plaque-shaped photo object versus a plain photo relief or nameplate.

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