Skip to main content
Glama

add_feature_during_print

Add a new shape to a paused 3D print and finish it with the feature, then inspect the result in an interactive 3D stage.

Instructions

Add a new shape to a paused print, then finish the print with it (Pro). Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).

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": {
      "feature": "<feature>",
      "gcode_path": "<gcode_path>",
      "current_layer": "<current_layer>"
    },
    "name": "add_feature_during_print"
  }
}

Input Schema

NameRequiredDescriptionDefault
orientNo``"auto"`` / ``"identity"`` / ``"upright"``. ``"auto"`` lets the slicer choose. Default: "auto".
featureYesNormie spec ("a small top hat", "/path/to/hat.stl", "library:halo_v2", etc.).
bed_tempNoBed temperature for the same three, read and checked the same way. The feature slice heats the bed itself, so this is the bed the rest of the print runs at.
placementNo``[x, y]`` bed coords where the feature's XY centroid lands. ``None`` = resolved bed centre.
gcode_pathYesOriginal sliced .gcode of the in-flight job.
output_dirNoEngine session directory. Default: "".
pause_z_mmNoPhysical Z of the pause point in mm. REQUIRED if the source gcode's layer markers don't carry Z comments; the engine will error with ``FEATURE_PAUSE_Z_UNKNOWN`` in that case if this is left ``None``.
hotend_tempNoNozzle temperature for the feature slice, the resume pre-heat and Bambu 3MF metadata. Leave unset to use the print's own (read off ``gcode_path`` at the pause). A value that differs from the print's own is kept and said in ``warnings``.
printer_nameNoPrinter identifier. Default: "default".
current_layerYes1-indexed layer the printer is paused at.
filament_typeNoThe print's material, for Bambu 3MF metadata and material-routing provenance. Leave it out and Kiln reads the print's own material; when nothing says which, the call is refused (``PRINT_MATERIAL_UNKNOWN``).
printer_z_knownNoREQUIRED ``True`` (same safety gate as ``decorate_during_print``). Default: false.
source_3mf_pathNoOptional original .3mf for thumbnail pass-through. Default: "".
target_ams_slotNoOptional 0-indexed AMS slot that must feed the injected feature. ``-1`` means no explicit material route was requested. Default: -1.
parent_design_idNoOptional design this print derives from, recorded in the session's provenance. Default: "".
printer_bed_sizeNoExplicit ``[x, y]`` in mm. If omitted, Kiln resolves ``printer_name`` through bundled printer intelligence and fails closed when the bed size is unknown.
require_ams_matchNoWhen True, refuse to emit the feature resume unless AMS status proves the requested material route. Default: true.
slicer_config_iniNoPath to a prusaslicer .ini. Empty = use the slicer's default / installed profile discovered by the auto-discovery. Default: "".
target_filament_typeNoOptional expected tray material. Without an explicit slot, Kiln resolves exactly one matching loaded AMS tray from ``ams_status`` or fails closed. Default: "".
first_layer_height_mmNoFirst-layer height of the sliced feature — the slicer rests this on top of the paused print's top face. Default: 0.2.
target_filament_colorNoOptional expected tray color (``#RRGGBB`` or a common name like ``blue``). Default: "".
manual_material_change_confirmedNoNon-Bambu safety gate for material/color changes. Set True only after the target material is loaded in the active feed path; otherwise Kiln refuses before emitting an artifact. Default: false.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed22 schema fields changedv1.5.1
    • changedInput schema / properties / bed_temp / description
      Previous value: -"Default: 65."New value: +"Bed temperature for the same three, read and checked the same way.  The feature slice heats the bed itself, so this is the bed the rest of the print runs at."
    • addedInput schema / properties / current_layer / description
      Added value: +"1-indexed layer the printer is paused at."
    • addedInput schema / properties / feature / description
      Added value: +"Normie spec (\"a small top hat\", \"/path/to/hat.stl\", \"library:halo_v2\", etc.)."
    • changedInput schema / properties / filament_type / description
      Previous value: -"Default: \"PLA\"."New value: +"The print's material, for Bambu 3MF metadata and material-routing provenance.  Leave it out and Kiln reads the print's own material; when nothing says which, the call is refused (``PRINT_MATERIAL_UNKNOWN``)."
    • changedInput schema / properties / first_layer_height_mm / description
      Previous value: -"Default: 0.2."New value: +"First-layer height of the sliced feature — the slicer rests this on top of the paused print's top face. Default: 0.2."
    • addedInput schema / properties / gcode_path / description
      Added value: +"Original sliced .gcode of the in-flight job."
    • changedInput schema / properties / hotend_temp / description
      Previous value: -"Default: 220."New value: +"Nozzle temperature for the feature slice, the resume pre-heat and Bambu 3MF metadata.  Leave unset to use the print's own (read off ``gcode_path`` at the pause). A value that differs from the print's own is kept and said in ``warnings``."
    • changedInput schema / properties / manual_material_change_confirmed / description
      Previous value: -"Default: false."New value: +"Non-Bambu safety gate for material/color changes. Set True only after the target material is loaded in the active feed path; otherwise Kiln refuses before emitting an artifact. Default: false."
    • changedInput schema / properties / orient / description
      Previous value: -"Default: \"auto\"."New value: +"``\"auto\"`` / ``\"identity\"`` / ``\"upright\"``. ``\"auto\"`` lets the slicer choose. Default: \"auto\"."
    • changedInput schema / properties / output_dir / description
      Previous value: -"Default: \"\"."New value: +"Engine session directory. Default: \"\"."
    • changedInput schema / properties / parent_design_id / description
      Previous value: -"Default: \"\"."New value: +"Optional design this print derives from, recorded in the session's provenance. Default: \"\"."
    • addedInput schema / properties / pause_z_mm / description
      Added value: +"Physical Z of the pause point in mm. REQUIRED if the source gcode's layer markers don't carry Z comments; the engine will error with ``FEATURE_PAUSE_Z_UNKNOWN`` in that case if this is left ``None``."
    • addedInput schema / properties / placement / description
      Added value: +"``[x, y]`` bed coords where the feature's XY centroid lands.  ``None`` = resolved bed centre."
    • addedInput schema / properties / printer_bed_size / description
      Added value: +"Explicit ``[x, y]`` in mm.  If omitted, Kiln resolves ``printer_name`` through bundled printer intelligence and fails closed when the bed size is unknown."
    • changedInput schema / properties / printer_name / description
      Previous value: -"Default: \"default\"."New value: +"Printer identifier. Default: \"default\"."
    • changedInput schema / properties / printer_z_known / description
      Previous value: -"Default: false."New value: +"REQUIRED ``True`` (same safety gate as ``decorate_during_print``). Default: false."
    • changedInput schema / properties / require_ams_match / description
      Previous value: -"Default: true."New value: +"When True, refuse to emit the feature resume unless AMS status proves the requested material route. Default: true."
    • changedInput schema / properties / slicer_config_ini / description
      Previous value: -"Default: \"\"."New value: +"Path to a prusaslicer .ini. Empty = use the slicer's default / installed profile discovered by the auto-discovery. Default: \"\"."
    • changedInput schema / properties / source_3mf_path / description
      Previous value: -"Default: \"\"."New value: +"Optional original .3mf for thumbnail pass-through. Default: \"\"."
    • changedInput schema / properties / target_ams_slot / description
      Previous value: -"Default: -1."New value: +"Optional 0-indexed AMS slot that must feed the injected feature. ``-1`` means no explicit material route was requested. Default: -1."
    • changedInput schema / properties / target_filament_color / description
      Previous value: -"Default: \"\"."New value: +"Optional expected tray color (``#RRGGBB`` or a common name like ``blue``). Default: \"\"."
    • changedInput schema / properties / target_filament_type / description
      Previous value: -"Default: \"\"."New value: +"Optional expected tray material. Without an explicit slot, Kiln resolves exactly one matching loaded AMS tray from ``ams_status`` or fails closed. Default: \"\"."
  2. Addedv1.5.0

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare a non-read-only, non-destructive, closed-world mutation, so the description only needs to add texture. It does add that oversized meshes are auto-decimated for the stage and that a PNG preview is the minimum experience, but it never discloses what artifact the call produces (the rewritten resume gcode), what happens to the source file, or that failures/fail-closed refusals are likely — despite the schema exposing several refusal codes.

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 opening sentence is well front-loaded with purpose and tier. The second paragraph then restates the inline 3D stage already introduced in the first, and the closing sentence ("the PNG preview is the floor, not the whole experience") is promotional rather than operational, so a meaningful share of the text does not earn its place.

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

Completeness2/5

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

For a 22-parameter mutation that rewrites a print job with no output schema, the description should tell the agent what a successful call returns and how the print proceeds afterward; instead it dwells on viewer UI. Key operating facts — that the call emits a new artifact and requires safety confirmations — live only in parameter descriptions, leaving the agent to assemble the workflow from the schema.

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 22 parameters, so the schema carries the semantic load and the baseline of 3 applies. The description contributes nothing about `placement`, `orient`, `current_layer`, or the material-routing parameters beyond saying a shape is added.

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+resource+scope: add a new shape to a *paused* print and finish the print with it. That distinguishes it in spirit from neighbors like decorate_during_print or deboss_during_print, though it never names those siblings explicitly, so an agent must infer the boundary from wording alone.

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 print must already be paused, and the tool is gated to Pro tier. There is no explicit when-not guidance, no mention of the required `printer_z_known=True` safety gate, and no routing to `add_feature_during_print_fleet` or the decoration/deboss variants for other cases.

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