estimate_before_design
Calculate print time, cost, and filament usage from dimensions or a template before generating a 3D model, so you can check budgets and material needs before committing to a design.
Instructions
Estimate print time, cost, and filament usage BEFORE generating a model.
Works from dimensions alone — no file, no slicing, no generation
needed. Use this to answer "how long will it take?", "how much
will it cost?", and "how much filament?" before committing to a
design.
**Two ways to specify dimensions:**
1. **Direct dimensions** — provide ``width_mm``, ``depth_mm``,
``height_mm`` explicitly.
2. **Template** — provide ``template_id`` (e.g. ``"phone_stand"``,
``"box_with_lid"``) and optional ``template_overrides`` to use
the template's default dimensions.
**Multi-material prints:** Pass comma-separated materials
(e.g. ``"PLA,PLA"`` for two-color) with optional fractions
(e.g. ``"0.85,0.15"`` for body + accent). The tool estimates
per-filament usage and tool change overhead automatically.
Returns time estimate, per-filament weight/length/cost breakdown,
electricity cost, total cost, and tool swap count.
:param width_mm: Part width (X) in mm. Required if no template.
:param depth_mm: Part depth (Y) in mm. Required if no template.
:param height_mm: Part height (Z) in mm. Required if no template.
:param template_id: Design template ID (e.g. ``"phone_stand"``).
Resolves dimensions from template defaults. Overrides
width/depth/height if provided.
:param template_overrides: JSON string of template parameter
overrides (e.g. ``'{"phone_width": 85}'``).
:param materials: Comma-separated material names
(e.g. ``"PLA"`` or ``"PLA,PLA"`` for two-color).
:param material_fractions: Comma-separated volume fractions
(e.g. ``"0.85,0.15"``). Must match materials count and sum
to 1.0. Default: body gets 85%, accents split the rest.
:param material_roles: Comma-separated role labels
(e.g. ``"body,accent"``). Default: auto-generated.
:param infill_percent: Infill density override (0-100).
Default: from printer profile or 20%. Pass ``-1`` for auto.
:param layer_height_mm: Layer height override. ``0`` = auto.
:param nozzle_mm: Nozzle diameter in mm. Leave unset for the
nozzle Kiln has for ``printer_id`` (or the only printer it
knows of), else 0.4.
:param wall_layers: Number of perimeter shells (default 3).
:param printer_id: Printer model for speed/setting lookup
(e.g. ``"bambu_a1"``, ``"prusa_mk4"``).
:param tool_changer_addon: Optional multi-material add-on ID.
Overrides the printer's built-in tool change timing.
Examples: ``"creality_cfs"`` (K1 series),
``"mosaic_palette3"`` (universal), ``"coprint_kcm"``
(Klipper printers), ``"chameleon_mk4"`` (universal),
``"elegoo_canvas"`` (Centauri Carbon 2).
Use ``list_multi_material_addons`` to see all options.
:param electricity_rate: Cost per kWh in USD (default 0.12).
:param printer_wattage: Printer power in watts (default 200).
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "estimate_before_design"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| depth_mm | No | Part depth (Y) in mm. Required if no template. Default: 0.0. | |
| width_mm | No | Part width (X) in mm. Required if no template. Default: 0.0. | |
| height_mm | No | Part height (Z) in mm. Required if no template. Default: 0.0. | |
| materials | No | Comma-separated material names (e.g. ``"PLA"`` or ``"PLA,PLA"`` for two-color). Default: "PLA". | |
| nozzle_mm | No | Nozzle diameter in mm. Leave unset for the nozzle Kiln has for ``printer_id`` (or the only printer it knows of), else 0.4. | |
| printer_id | No | Printer model for speed/setting lookup (e.g. ``"bambu_a1"``, ``"prusa_mk4"``). Default: "". | |
| template_id | No | Design template ID (e.g. ``"phone_stand"``). Resolves dimensions from template defaults. Overrides width/depth/height if provided. Default: "". | |
| wall_layers | No | Number of perimeter shells (default 3). Default: 3. | |
| infill_percent | No | Infill density override (0-100). Default: from printer profile or 20%. Pass ``-1`` for auto. Default: -1.0. | |
| material_roles | No | Comma-separated role labels (e.g. ``"body,accent"``). Default: auto-generated. Default: "". | |
| layer_height_mm | No | Layer height override. ``0`` = auto. Default: 0.0. | |
| printer_wattage | No | Printer power in watts (default 200). Default: 200.0. | |
| electricity_rate | No | Cost per kWh in USD (default 0.12). Default: 0.12. | |
| material_fractions | No | Comma-separated volume fractions (e.g. ``"0.85,0.15"``). Must match materials count and sum to 1.0. Default: body gets 85%, accents split the rest. Default: "". | |
| template_overrides | No | JSON string of template parameter overrides (e.g. ``'{"phone_width": 85}'``). Default: "". | |
| tool_changer_addon | No | Optional multi-material add-on ID. Overrides the printer's built-in tool change timing. Examples: ``"creality_cfs"`` (K1 series), ``"mosaic_palette3"`` (universal), ``"coprint_kcm"`` (Klipper printers), ``"chameleon_mk4"`` (universal), ``"elegoo_canvas"`` (Centauri Carbon 2). Use ``list_multi_material_addons`` to see all options. Default: "". |