Skip to main content
Glama

Optimize for a goal

optimize
Idempotent

Slice a model with five print goals in parallel, compare time and material use, and get a recommended .3mf ready to print without altering your original file.

Instructions

Slice the original and ready-made recipes (quality, balanced, speed, strength, light) in parallel, with accelerations kept within the printer's limits, and return the comparison plus the recommended goal variant and its result.3mf (under output/; the original is never modified). Use it to answer "how should I print this"; pass the user's chosen filament preset in filaments. Use compare_slices for custom settings.

Input Schema

NameRequiredDescriptionDefault
goalYes"quality" (fine layers, slower walls), "balanced", "speed", "strength" (more walls and infill) or "light" (least filament).
plateNoPlate number to slice; 0 = every plate in a single result.3mf.
modelsYesAbsolute paths of the STL or 3MF files to slice together.
machineNoMachine preset name, e.g. "Bambu Lab P1S 0.4 nozzle". Omit to keep a 3MF project's own settings or use the defaults.
processNoProcess preset name, e.g. "0.20mm Standard @BBL X1C". Needs `machine`.
bed_typeNoBuild plate, e.g. "Textured PEI Plate", "Cool Plate", "High Temp Plate". Omit for the usual plate when the filament suits it.
filamentsNoFilament preset names, one per slot (e.g. "Bambu PLA Matte @BBL P1S 0.4 nozzle"). Alone on a 3MF project, replaces its filament.
compare_allNoTrue: slice all 5 goals for comparison; false: only the original and `goal`.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed9 schema fields changedv1.0.1
    • addedInput schema / properties / bed_type / description
      Added value: +"Build plate, e.g. \"Textured PEI Plate\", \"Cool Plate\", \"High Temp Plate\". Omit for the usual plate when the filament suits it."
    • addedInput schema / properties / compare_all / description
      Added value: +"True: slice all 5 goals for comparison; false: only the original and `goal`."
    • addedInput schema / properties / filaments / description
      Added value: +"Filament preset names, one per slot (e.g. \"Bambu PLA Matte @BBL P1S 0.4 nozzle\"). Alone on a 3MF project, replaces its filament."
    • addedInput schema / properties / goal / description
      Added value: +"\"quality\" (fine layers, slower walls), \"balanced\", \"speed\", \"strength\" (more walls and infill) or \"light\" (least filament)."
    • addedInput schema / properties / machine / description
      Added value: +"Machine preset name, e.g. \"Bambu Lab P1S 0.4 nozzle\". Omit to keep a 3MF project's own settings or use the defaults."
    • addedInput schema / properties / models / description
      Added value: +"Absolute paths of the STL or 3MF files to slice together."
    • addedInput schema / properties / plate / description
      Added value: +"Plate number to slice; 0 = every plate in a single result.3mf."
    • addedInput schema / properties / plate / minimum
      Added value: +0
    • addedInput schema / properties / process / description
      Added value: +"Process preset name, e.g. \"0.20mm Standard @BBL X1C\". Needs `machine`."
  2. First observedv1.0.0

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare non-destructive, idempotent, closed-world behavior, and the description adds valuable context beyond that: slicing runs in parallel, accelerations are clamped to printer limits, the original file is never modified, and output lands under output/. It does not address timing or failure behavior, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the verb and scope, and every sentence carries routing or behavioral information. The opening clause is slightly run-on with the parenthetical goal list, but nothing is wasted.

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?

With 8 parameters and no output schema, the description adequately covers what the tool produces and where, plus the key non-obvious input (filaments). Less complete on how the comparison is presented or what happens on multi-plate slicing, but sufficient to invoke correctly.

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 coverage is 100%, so baseline is 3, but the description adds real guidance the schema lacks — that `filaments` should carry the user's chosen preset — and clarifies the relationship between `goal` and the parallel comparison. Minor extra value over the already-thorough 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?

States a specific verb (slice in parallel) and the full resource scope (original + five ready-made goal recipes), and says exactly what is returned (comparison, recommended goal variant, result.3mf). It is clearly distinguishable from compare_slices, which is named explicitly.

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?

Gives an explicit usage trigger ("how should I print this"), a concrete input instruction (pass the user's chosen filament preset in `filaments`), and names the alternative with its condition (compare_slices for custom settings). No inference required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.