Skip to main content
Glama

slice_and_estimate

Read-only

Slices a 3D model and returns print time, filament use, cost, printability, and adhesion guidance so you can evaluate a print before committing.

Instructions

Primary estimation tool — slice a 3D model and return time, filament, cost, and printability analysis.

        For G-code files (already sliced), use ``estimate_cost`` instead.
        For quick volume-based estimates without slicing, use ``estimate_material_cost``.

        Slices the model using PrusaSlicer or OrcaSlicer, parses the
        output G-code for time and filament metadata, runs printability
        analysis on the file as it was sliced (a STEP file as Kiln's
        mesh of it), and returns adhesion recommendations — all without
        uploading or starting a print.  When the analysis could not be
        made, ``printability`` is null and ``printability_note`` says
        why.

        Use this tool to answer "how long will this take?" or "how much
        filament will I use?" before committing to a print job.

        Args:
            input_path: Path to the input file (STL, OBJ, 3MF, STEP, AMF).
            printer_id: Optional printer model ID for bundled profile
                auto-selection (e.g. ``"bambu_a1"``, ``"prusa_mini"``).
            profile: Path to a slicer profile/config file (.ini or .json).
                Takes precedence over ``printer_id`` auto-selection.
            material: Filament material (e.g. ``"PLA"``, ``"PETG"``,
                ``"TPU"``).  The slice is set for it -- temperatures,
                melt rate and cooling -- so the time is the time THIS
                material takes (a TPU part is far slower than the same
                part in PLA), and its density gives the weight.
                Default is ``"PLA"``.
            printer_name: Registered printer this estimate is FOR.  Omit
                for the default printer.  An estimate is only as true as
                the profile behind it, so naming a second machine costs
                the job on that machine rather than on the default.
            placement: Where the part goes when the plate still holds the
                last print: ``[x, y]`` in mm (the part's footprint
                origin), a named region (``"front-left"``, ``"centre"``,
                ``"back-right"``, …), or ``"keep"``.  An estimate never
                refuses because of the plate: when the plate still holds
                the last print and no safe spot is named, the estimate is
                for the part on an empty plate and ``plate_note`` says
                so.  Where a named spot is safe, the estimate is of the
                part there, with the clearance verdict in ``placement``.

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": {
      "input_path": "<input_path>"
    },
    "name": "slice_and_estimate"
  }
}

Input Schema

NameRequiredDescriptionDefault
profileNoPath to a slicer profile/config file (.ini or .json). Takes precedence over ``printer_id`` auto-selection.
materialNoFilament material (e.g. ``"PLA"``, ``"PETG"``, ``"TPU"``). The slice is set for it -- temperatures, melt rate and cooling -- so the time is the time THIS material takes (a TPU part is far slower than the same part in PLA), and its density gives the weight. Default is ``"PLA"``. Default: "PLA".
placementNoWhere the part goes when the plate still holds the last print: ``[x, y]`` in mm (the part's footprint origin), a named region (``"front-left"``, ``"centre"``, ``"back-right"``, …), or ``"keep"``. An estimate never refuses because of the plate: when the plate still holds the last print and no safe spot is named, the estimate is for the part on an empty plate and ``plate_note`` says so. Where a named spot is safe, the estimate is of the part there, with the clearance verdict in ``placement``.
input_pathYesPath to the input file (STL, OBJ, 3MF, STEP, AMF).
printer_idNoOptional printer model ID for bundled profile auto-selection (e.g. ``"bambu_a1"``, ``"prusa_mini"``).
printer_nameNoRegistered printer this estimate is FOR. Omit for the default printer. An estimate is only as true as the profile behind it, so naming a second machine costs the job on that machine rather than on the default.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv1.5.1
    • addedInput schema / properties / input_path / description
      Added value: +"Path to the input file (STL, OBJ, 3MF, STEP, AMF)."
    • changedInput schema / properties / material / description
      Previous value: -"Default: \"PLA\"."New value: +"Filament material (e.g. ``\"PLA\"``, ``\"PETG\"``, ``\"TPU\"``).  The slice is set for it -- temperatures, melt rate and cooling -- so the time is the time THIS material takes (a TPU part is far slower than the same part in PLA), and its density gives the weight. Default is ``\"PLA\"``. Default: \"PLA\"."
    • addedInput schema / properties / placement / description
      Added value: +"Where the part goes when the plate still holds the last print: ``[x, y]`` in mm (the part's footprint origin), a named region (``\"front-left\"``, ``\"centre\"``, ``\"back-right\"``, …), or ``\"keep\"``.  An estimate never refuses because of the plate: when the plate still holds the last print and no safe spot is named, the estimate is for the part on an empty plate and ``plate_note`` says so.  Where a named spot is safe, the estimate is of the part there, with the clearance verdict in ``placement``."
    • addedInput schema / properties / printer_id / description
      Added value: +"Optional printer model ID for bundled profile auto-selection (e.g. ``\"bambu_a1\"``, ``\"prusa_mini\"``)."
    • addedInput schema / properties / printer_name / description
      Added value: +"Registered printer this estimate is FOR.  Omit for the default printer.  An estimate is only as true as the profile behind it, so naming a second machine costs the job on that machine rather than on the default."
    • addedInput schema / properties / profile / description
      Added value: +"Path to a slicer profile/config file (.ini or .json). Takes precedence over ``printer_id`` auto-selection."
  2. Changed6 schema fields changedv1.5.0
    • removedInput schema / properties / material / default
      Removed value: -"PLA"
    • addedInput schema / properties / material / description
      Added value: +"Default: \"PLA\"."
    • addedInput schema / properties / placement
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "items": {
      +        "type": "number"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "title": "Placement"
      +}
    • removedInput schema / properties / printer_id / default
      Removed value: -null
    • addedInput schema / properties / printer_name
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "title": "Printer Name"
      +}
    • removedInput schema / properties / profile / default
      Removed value: -null
  3. First observedv0.1.0

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnlyHint and destructiveHint annotations, it discloses that slicing uses PrusaSlicer or OrcaSlicer, parses G-code, runs printability analysis, and does not upload or start a print. It also explains fallback behavior when printability cannot be analyzed and describes plate-placement behavior and the inline 3D stage.

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 description is front-loaded and well organized, but it is quite long for the task. The full Args section duplicates parameter descriptions already present in the schema, so not every sentence earns its place.

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

Completeness5/5

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

For a six-parameter slicing and estimation tool with no output schema, it covers the important behavior: what is returned, when printability is null, what plate_note indicates, how placement works, and that a 3D stage may open. An agent has enough context to invoke it correctly.

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 six parameters, and the description's Args section largely repeats the same parameter descriptions verbatim. It adds some useful behavioral context for material, printer_name, and placement, but much of that is already present in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: slicing a 3D model to return time, filament, cost, and printability. It clearly distinguishes this from estimate_cost for G-code and estimate_material_cost for quick volume-based estimates, so an agent can choose it without inspecting siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly names alternatives and the conditions that select them: use estimate_cost for already-sliced G-code and estimate_material_cost for quick volume estimates. It also states the core use case, answering how long a print will take or how much filament it will use before committing.

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