Skip to main content
Glama

reprint_with_material

Destructive

Reprint an existing model in a different material by automatically reslicing with the target material's settings, checking safety, uploading, and starting the print.

Instructions

Reprint a model with a different material — the slice is set for it.

One-shot convenience tool: reslices the model for the new material
(its temperatures, melt rate and cooling, from the same resolver every
slice uses -- see ``build_material_overrides``), merges any extra
overrides you provide, runs a safety check, uploads to the printer, and
starts the print.  The file is labelled and weighed as the new material.

Use this when you want to reprint an existing model in a different
material (e.g. PLA → PETG for outdoor durability, or PLA → TPU for
flexibility). The tool handles all the slicer parameter changes
automatically.

Example: "Reprint my grip extension in PETG instead of PLA"::

    reprint_with_material(
        file_path="/path/to/grip_extension.stl",
        material_id="petg",
        printer_name="my_bambu",
        printer_id="bambu_a1",
        use_ams=True,
        ams_mapping="[1]",  # PETG is in slot A2 (tray id 1)
    )

Requires PrusaSlicer or OrcaSlicer installed locally.

Args:
    file_path: Path to the model file (STL, 3MF, STEP, OBJ).
    material_id: Target material (e.g. ``"petg"``, ``"tpu"``).
    printer_name: Registered printer name in fleet. If omitted,
        uses the default printer.
    printer_id: Printer model ID for profile selection
        (e.g. ``"bambu_a1"``, ``"ender3"``).
    extra_overrides: Optional JSON string of additional slicer
        overrides to merge on top of the material defaults
        (e.g. ``'{"fill_density": "30%"}'``).
    use_ams: Enable AMS filament feeding (Bambu printers).
    ams_mapping: JSON string of AMS slot indices (e.g. ``"[1]"``).
        Maps each extruder/filament to an AMS tray position.
    preview_token: Token from ``issue_preview_token`` proving this model
        was shown to the person before printing.  Required beside their
        go-ahead: a print is shown to its owner before it starts.
    brief_id: The saved goal from ``design_session`` this model was made
        for.  The goal then records the material it printed in, and keeps
        the one it replaces on its history (``goal_material`` in the
        reply).  Omitted, the goal named beside the model, if any.
    chosen_by: Who picked this material: ``"person"`` when they named it,
        ``"agent"`` when you proposed it.  Kept with the goal's record;
        omitted, it is left unsaid.

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": {
      "file_path": "<file_path>",
      "material_id": "<material_id>"
    },
    "name": "reprint_with_material"
  }
}

Input Schema

NameRequiredDescriptionDefault
use_amsNoEnable AMS filament feeding (Bambu printers).
brief_idNoThe saved goal from ``design_session`` this model was made for. The goal then records the material it printed in, and keeps the one it replaces on its history (``goal_material`` in the reply). Omitted, the goal named beside the model, if any. Default: "".
chosen_byNoWho picked this material: ``"person"`` when they named it, ``"agent"`` when you proposed it. Kept with the goal's record; omitted, it is left unsaid. Default: "".
file_pathYesPath to the model file (STL, 3MF, STEP, OBJ).
printer_idNoPrinter model ID for profile selection (e.g. ``"bambu_a1"``, ``"ender3"``).
ams_mappingNoJSON string of AMS slot indices (e.g. ``"[1]"``). Maps each extruder/filament to an AMS tray position.
material_idYesTarget material (e.g. ``"petg"``, ``"tpu"``).
printer_nameNoRegistered printer name in fleet. If omitted, uses the default printer.
preview_tokenNoToken from ``issue_preview_token`` proving this model was shown to the person before printing. Required beside their go-ahead: a print is shown to its owner before it starts.
extra_overridesNoOptional JSON string of additional slicer overrides to merge on top of the material defaults (e.g. ``'{"fill_density": "30%"}'``).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed10 schema fields changedv1.5.1
    • addedInput schema / properties / ams_mapping / description
      Added value: +"JSON string of AMS slot indices (e.g. ``\"[1]\"``). Maps each extruder/filament to an AMS tray position."
    • addedInput schema / properties / brief_id
      Added value: +{
      +  "description": "The saved goal from ``design_session`` this model was made for.  The goal then records the material it printed in, and keeps the one it replaces on its history (``goal_material`` in the reply).  Omitted, the goal named beside the model, if any. Default: \"\".",
      +  "title": "Brief Id",
      +  "type": "string"
      +}
    • addedInput schema / properties / chosen_by
      Added value: +{
      +  "description": "Who picked this material: ``\"person\"`` when they named it, ``\"agent\"`` when you proposed it.  Kept with the goal's record; omitted, it is left unsaid. Default: \"\".",
      +  "title": "Chosen By",
      +  "type": "string"
      +}
    • addedInput schema / properties / extra_overrides / description
      Added value: +"Optional JSON string of additional slicer overrides to merge on top of the material defaults (e.g. ``'{\"fill_density\": \"30%\"}'``)."
    • addedInput schema / properties / file_path / description
      Added value: +"Path to the model file (STL, 3MF, STEP, OBJ)."
    • addedInput schema / properties / material_id / description
      Added value: +"Target material (e.g. ``\"petg\"``, ``\"tpu\"``)."
    • addedInput schema / properties / preview_token / description
      Added value: +"Token from ``issue_preview_token`` proving this model was shown to the person before printing.  Required beside their go-ahead: a print is shown to its owner before it starts."
    • addedInput schema / properties / printer_id / description
      Added value: +"Printer model ID for profile selection (e.g. ``\"bambu_a1\"``, ``\"ender3\"``)."
    • addedInput schema / properties / printer_name / description
      Added value: +"Registered printer name in fleet. If omitted, uses the default printer."
    • addedInput schema / properties / use_ams / description
      Added value: +"Enable AMS filament feeding (Bambu printers)."
  2. Changed8 schema fields changedv1.5.0
    • changedInput schema / properties / ams_mapping / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "items": {
      +      "type": "integer"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / ams_mapping / default
      Removed value: -null
    • changedInput schema / properties / extra_overrides / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "additionalProperties": true,
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / extra_overrides / default
      Removed value: -null
    • addedInput schema / properties / preview_token
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "title": "Preview Token"
      +}
    • removedInput schema / properties / printer_id / default
      Removed value: -null
    • removedInput schema / properties / printer_name / default
      Removed value: -null
    • removedInput schema / properties / use_ams / default
      Removed value: -null
  3. First observedv0.1.0

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true, but the description adds context the annotations cannot: the local PrusaSlicer/OrcaSlicer dependency, the mandatory preview_token consent step ('a print is shown to its owner before it starts'), the side effect on the design goal's material history via brief_id, and that chosen_by is persisted. That is concrete disclosure of prerequisites, consent gates, and downstream state changes beyond the hint flags.

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 pipeline and prerequisite sentences are front-loaded and earn their place, but the entire 'Args:' block duplicates a schema that already has 100% description coverage, making roughly half the text redundant. Phrasing like 'the slice is set for it' and 'omitted, it is left unsaid' adds tone without information.

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 10-parameter destructive pipeline with no output schema, the description covers the workflow, the external tool prerequisite, the consent token, and the goal-record side effects. It does not describe what a successful reply contains beyond 'goal_material', nor failure/timeout behavior for a job that uploads and starts a print, leaving a modest gap.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, but the worked example adds genuine meaning the schema lacks — it shows ams_mapping as "[1]" with the annotation that PETG sits in tray id 1, clarifying how slot indices map to filament. The remaining Args entries largely restate schema text, so it does not exceed a 4.

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 first sentence names a specific verb and resource ('Reprint a model with a different material') and the body spells out the full one-shot pipeline (reslice, merge overrides, safety check, upload, start print), which implicitly separates it from bare slicers like slice_model or reslice_with_overrides. It never names a sibling it is not, so an agent must infer the boundary from the workflow description alone.

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?

The 'Use this when you want to reprint an existing model in a different material' sentence plus the PLA→PETG / PLA→TPU examples give a clear triggering condition. There are no when-not cases and no explicit pointer to alternatives such as smart_reprint, run_reslice_and_print, or reslice_with_overrides, so selection among near-duplicate siblings is left to inference.

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