Skip to main content
Glama

apply_decoration

Destructive

Apply a saved decoration recipe to a new 3D model using its prior settings in one call, automatically resolving depth, mode, and image style for repeatable results.

Instructions

Apply a saved decoration to a new model — proven settings, one call.

        Loads a previously saved decoration and applies it to the target
        model using the exact settings that worked before.  Automatically
        resolves depth, mode, and image style from the proven recipe.

        This is the magic tool — decorations that took many iterations
        to perfect can be replayed on any model in one call.

        :param name: Decoration name or slug.
        :param model_path: Path to the target model (STL or OBJ).
        :param material: Override material (empty = use proven or detect
            from printer).
        :param face: Which face to decorate: ``auto`` (largest flat
            face), ``top``, ``bottom``, ``front``, ``back``, ``left``,
            ``right``, or ``wall`` (wrapped round an upright round wall).
        :param printer_id: Registered printer name (as ``printer_status``
            lists it) whose loaded spool decides the material when
            ``material`` is empty.  Omit to use the decoration's proven
            material.
        :returns: Dict with decorated model path and settings used.

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": {
      "name": "<name>",
      "model_path": "<model_path>"
    },
    "name": "apply_decoration"
  }
}

Input Schema

NameRequiredDescriptionDefault
faceNoWhich face to decorate: ``auto`` (largest flat face), ``top``, ``bottom``, ``front``, ``back``, ``left``, ``right``, or ``wall`` (wrapped round an upright round wall). Default: "auto".
nameYesDecoration name or slug.
materialNoOverride material (empty = use proven or detect from printer). Default: "".
model_pathYesPath to the target model (STL or OBJ).
printer_idNoRegistered printer name (as ``printer_status`` lists it) whose loaded spool decides the material when ``material`` is empty. Omit to use the decoration's proven material. Default: "".

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changedv1.5.1
    • changedInput schema / properties / face / description
      Previous value: -"Default: \"auto\"."New value: +"Which face to decorate: ``auto`` (largest flat face), ``top``, ``bottom``, ``front``, ``back``, ``left``, ``right``, or ``wall`` (wrapped round an upright round wall). Default: \"auto\"."
    • changedInput schema / properties / material / description
      Previous value: -"Default: \"\"."New value: +"Override material (empty = use proven or detect from printer). Default: \"\"."
    • addedInput schema / properties / model_path / description
      Added value: +"Path to the target model (STL or OBJ)."
    • addedInput schema / properties / name / description
      Added value: +"Decoration name or slug."
    • changedInput schema / properties / printer_id / description
      Previous value: -"Default: \"\"."New value: +"Registered printer name (as ``printer_status`` lists it) whose loaded spool decides the material when ``material`` is empty.  Omit to use the decoration's proven material. Default: \"\"."
  2. Changed6 schema fields changedv1.5.0
    • removedInput schema / properties / face / default
      Removed value: -"auto"
    • addedInput schema / properties / face / description
      Added value: +"Default: \"auto\"."
    • removedInput schema / properties / material / default
      Removed value: -""
    • addedInput schema / properties / material / description
      Added value: +"Default: \"\"."
    • removedInput schema / properties / printer_id / default
      Removed value: -""
    • addedInput schema / properties / printer_id / description
      Added value: +"Default: \"\"."
  3. First observedv0.1.0

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, and openWorldHint=false, and the description adds real context beyond them: automatic resolution of depth/mode/style, the returned dict contents, automatic mesh decimation for the 3D stage, and the inline stage behavior on success. It does not explain what the destructive hint means in practice (whether the source model file is modified or a new file is written), which is the one gap that matters most for a mutation tool.

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 sentence is front-loaded and clear, but the marketing line ('This is the magic tool…') and the re-statement of every parameter in :param form duplicate structured data and pad the text. The stage paragraph is informative but verbose for what it conveys.

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 five-parameter mutation tool with no output schema, the description covers purpose, parameter interaction, return shape, and the post-success UI side effect, which is close to complete. The remaining omission is the destructiveHint implications on the source model and any guidance on what 'name' values are valid beyond 'name or slug'.

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 coverage is 100%, so the schema already documents all five parameters, including the face enum values and printer_id's role. The description restates those same definitions almost verbatim rather than adding new meaning, so it sits at the baseline of 3.

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 concrete verb and resource: load a previously saved decoration and apply it to a target model using the exact settings that worked before. It explains that depth, mode, and image style are resolved automatically. It does not differentiate itself from nearby siblings such as apply_decoration_preset, smart_decorate, or decorate_surface, 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?

Usage is implied rather than stated: the material fallback chain (explicit override, then proven material, then printer spool) tells the agent how the params interact. There is no explicit when-to-use / when-not-to-use guidance and no named alternative for cases where the agent lacks a saved decoration or wants a one-off decoration.

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