Skip to main content
Glama
danielefinocchiaro

unofficial-bambu-mcp

unofficial-bambu-mcp

ci pypi python license

Unofficial community project. Not affiliated with, endorsed by or supported by Bambu Lab. "Bambu Lab", "Bambu Studio", "Bambu Connect" and "Bambu Handy" are trademarks of their respective owners.

An MCP server that lets an AI assistant (Claude Code, Claude Desktop or any MCP client) build, edit, slice, check and calibrate Bambu Studio projects, using the official Bambu Studio you already have installed, and read your printer's status on the local network.

You talk, it does the slicer work:

  • "New P1S project: a 20 mm cube and the text 'DANI' in white on a black 2 mm tag."

  • "Open ~/Downloads/Gnome 3 Color.3mf, add a plate with two more gnomes, then convert it for the A1 mini."

  • "I have eSUN PLA Basic in AMS slot 2: make a preset for it and the test prints to calibrate it."

  • "Before I start this 20-hour plate: which parts are likely to come off?"

  • "A pin came off at layer 4 and I skipped it: make me a project to reprint just that pin, with a brim."

  • "How is the print going? Which spool is it feeding from?"

A session: a project from scratch, a print risk fixed, slicing, a temperature tower, the print file

A real session, sped up: every tool call, result and image comes from the server through MCP; only the requests are written for the demo (scripts/make_demo.py).

What it can do

Area

What you can do

Projects

Create a project, or open any .3mf saved by Bambu Studio (2.x and older 1.6/1.7 files) or downloaded from MakerWorld / Printables: painted colors, modifiers, per-object settings, instances and plates are kept. Save without ever overwriting.

Printers

All 14 Bambu Lab printers of Bambu Studio 2.8, tested end to end (project, arrange, slice, print file): A1 mini, A1, A2L, P1P, P1S, P2S, X1, X1 Carbon, X1E, H2S and the two-nozzle H2D, H2D Pro, H2C and X2D (filaments go to a nozzle automatically, as Bambu Studio does). Switch printer and objects are re-arranged for the new bed. New projects use the build plate you picked in Bambu Studio for that printer.

Filaments

AMS slots with preset and color, your own user presets included. use_ams_filaments takes what is loaded in the AMS right now.

Plates & objects

Import STL, OBJ, 3MF; boxes, cylinders, cones, spheres and text (with a base in another color). Move, rotate, scale, mirror, lay flat, auto orient (least support, enough on the bed), duplicate, fill the plate with copies, split into objects or parts, merge objects into one, mesh boolean (holes, unions, intersections) with painted colors kept, filament per object or part, per-object settings, closed-solid check. Object ids stay the same while you work.

Arranging

arrange by the real outline seen from above, brim and brim ears included, so shapes nest (Bambu Studio's own arrange uses convex hulls). Gap, rotation steps, one material per plate, calibration corner, align to Y, prime tower corner kept free; one plate, chosen objects or all; "put them in N plates" evenly or as few as possible, and if they do not fit nothing moves and it says what is left over.

Cutting

cut_object on any plane, with connectors like Bambu Studio's Cut tool: a plug (peg and hole with clearance), dowels (holes in both pieces and separate pins) or a dovetail; round, square or hexagonal, straight or tapered, placed automatically or where you say, made shallower where a piece is thin. The pieces are laid out to print: the peg always points up.

Modifiers

Box or round parts: modifiers with their own settings ("the top 5 mm at 100 % infill"), negative parts (holes for magnets and screws), support blockers and enforcers.

Settings

Read or change any Bambu Studio setting, per filament slot when it applies, with a warning when a value cannot apply (e.g. a textured-plate temperature on a smooth plate).

Presets

Save the project's changes as Bambu Studio user presets: filament (save_filament_preset), process and printer; or change one of your presets directly (edit_preset), list, rename and delete them, with a backup copy each time. Values are checked and written the way Bambu Studio does (one per nozzle variant where it applies), and changes are stamped for Bambu Studio's cloud sync. Presets that are in your Bambu cloud can only be deleted from Bambu Studio: the answer says how.

Text & logos

add_relief: text or an SVG logo on any face of an object, raised (in another color if you like) or engraved, following curved surfaces too (the surface under it is measured on a fine grid and the shape is wrapped on it, keeping its size along the surface). add_shape('svg'): a logo as an object, on a base in another color. SVG paths, shapes, transforms, fill rules and strokes are read.

Measuring

measure_object: size and place, each part's volume and surface, the area on the bed, the clearance between the pieces of a print-in-place model, walls thinner than the nozzle line (where and at which height), and the cross-section at any height: how long and thick a bar is, how wide a hole is. measure_between: the gap between two objects or parts, centers, overlap. Dense meshes are measured on a copy within 0.005 mm (2.4 M triangles in about 9 s).

Height ranges & plates

set_height_range: settings for a band of an object's height, like Bambu Studio's Height range modifier: 100 % infill at the bottom, finer layers where the details are (variable layer height), another filament for a band (color by height). Variable layer heights and ranges in opened files are kept. set_plate_settings: build plate, print sequence (by object), first-layer filament order, spiral vase and prime tower place per plate.

Painting

paint_object: colors, supports (or no supports), seams and fuzzy skin on a height band and/or the faces looking one way (top, sides, overhangs...), with sharp edges. Checked on the sliced G-code: a color band changes filament at its edges, painted supports appear where painted.

Purge volumes

get_purge_volumes / set_purge_volumes: the purge between each pair of slots and the multiplier, as in Bambu Studio's dialog; the values in opened files are kept.

Slicing

Bambu Studio command line: time, grams and cost per filament, filament changes, pauses, layers and warnings per plate. Empty plates are skipped.

Previews

Images of a plate (iso or top, zoom, painted colors, object labels) and of any sliced layer, so the assistant checks its own work.

Print risks

check_print_risks: tall and narrow parts, parts standing on a tiny or narrow footing without a brim, filaments not meant for the build plate, tall parts sharing a long plate, a full brim on a print-in-place model whose joints it would weld.

Brim ears

add_brim_ears: small round brims only on the thin tips (fingers, toes) of print-in-place and articulated models, placed automatically away from joint gaps and other pieces, or where you say. Bambu Studio's Painted brim, checked on the sliced first layer.

Reprints

reprint_objects: a new project with only the parts that failed, same settings, with a brim.

Calibration

Temperature tower, flow rate test (pass 1 and 2), pressure advance tower, max volumetric speed test, retraction test, VFA test (wall speeds), first-layer test, for any filament. Save the result as a Bambu Studio filament preset: a new filament gets its own id, like Bambu Studio's Create Filament, so you can pick it for an AMS slot; updating it later keeps that id.

Layer actions

Pause at a height (magnets, nuts), filament change at a height, or any G-code at a height.

Printing

send_to_printer makes the print file of a plate and opens it in Bambu Studio (or Bambu Connect) ready to print: you check the AMS mapping and press Print.

Developer Mode (LAN farms)

For printers in LAN-only mode with Developer Mode, where Bambu firmware accepts commands from other programs: send_to_printer(via='lan') uploads the plate and starts the print, skip_objects skips parts of the running print, ams_load / ams_unload move filament. Each asks first: the first call sends nothing and gives a code to confirm with. In normal cloud mode the printer refuses them and the answer says so.

Printer status

printer_status (read only, local network): state, progress, temperatures, AMS trays with humidity, skipped objects, and warnings (unknown spool being fed, sport speed on a long print, a reading that looks old).

Camera & SD card

printer_camera: a picture of the plate right now, so the assistant sees how the print is going. printer_files / download_printer_file: timelapses (with their last frame) and past print files. delete_printer_files: free space on the SD card, only after you confirm the exact list. Works in cloud mode.

All 87 tools with their parameters: docs/TOOLS.md.

Related MCP server: bambu-printer-mcp

Tested on

Real hardware: macOS, Bambu Studio 2.8.2, a P1S with two AMS units, in normal cloud mode:

  • every tool through a real MCP client, on projects made from scratch and on MakerWorld / Printables downloads (painted 6-color models, multi-part assemblies, 3-plate projects, files from Bambu Studio 1.6 and 1.7);

  • printed: temperature towers and flow tests for two third-party filaments (eSUN PLA Basic black and white), whose presets were made and tuned through the server; the print hand-off to Bambu Studio; live status during prints.

The pressure advance tower, the max volumetric speed test and the retraction test are checked by slicing (the G-code is inspected) but have not been printed yet.

Windows and Linux: on every change to main, CI installs Bambu Studio 2.8.2 (the portable zip on Windows, the AppImage on Debian 13) and runs the whole test suite, slicing and print files included, plus a smoke run. Unit tests run on Windows, macOS and Linux with Python 3.10 and 3.13. On Linux the AppImage takes FFmpeg 7 and WebKitGTK 4.1 from the system (Debian 13, Ubuntu 24.10 or newer); set BAMBU_STUDIO_EXE if Bambu Studio is somewhere else.

Printers: all 14 Bambu Lab printers of Bambu Studio 2.8 go through the MCP from a new project to a print file (A1 mini, A1, A2L, P1P, P1S, P2S, X1, X1 Carbon, X1E, H2S, H2C, H2D, H2D Pro, X2D); only the P1S has printed. The Developer Mode tools were checked against a printer in cloud mode (refused, with the right answer) but never started a print on one in Developer Mode.

Printing and your printer

Bambu firmware (2025 and later) accepts commands from other programs only when the printer is in LAN-only mode with Developer Mode on, which turns off the cloud and Bambu Handy. In normal cloud mode it refuses them, so this server:

  • reads the printer status (allowed in cloud mode), with the LAN access code Bambu Studio already saved;

  • hands the print over to Bambu Studio or Bambu Connect, where you press Print;

  • does not start prints, set AMS slots or skip objects in cloud mode: you do that in Bambu Studio, Bambu Handy or on the printer. For printers in LAN-only mode with Developer Mode (print farms) it can, always after you confirm with the code it gives (see the Developer Mode row above).

More in docs/printing.md.

Quick start

Requirements: uv and Bambu Studio. The package comes from PyPI: uvx downloads it the first time (and Python 3.10+ if you do not have it), so there is nothing to clone or install by hand.

It is a standard MCP server (stdio), so any MCP client that runs local servers can use it. It was developed and tested with Claude Code; the other clients below take the same command in their own config file.

Claude Code

claude mcp add bambu -- uvx unofficial-bambu-mcp

Claude Desktop (claude_desktop_config.json), Cursor (~/.cursor/mcp.json), Windsurf (~/.codeium/windsurf/mcp_config.json), Gemini CLI (~/.gemini/settings.json):

{
  "mcpServers": {
    "bambu": {
      "command": "uvx",
      "args": ["unofficial-bambu-mcp"]
    }
  }
}

OpenAI Codex CLI (~/.codex/config.toml):

[mcp_servers.bambu]
command = "uvx"
args = ["unofficial-bambu-mcp"]

VS Code (GitHub Copilot agent mode, .vscode/mcp.json):

{ "servers": { "bambu": { "type": "stdio", "command": "uvx", "args": ["unofficial-bambu-mcp"] } } }
  • If a desktop app cannot find uvx (spawn uvx ENOENT), put its full path as the command: which uvx prints it.

  • uvx keeps the version it downloaded: write unofficial-bambu-mcp@latest instead to get new releases.

  • From a clone (for development): uv run --directory /path/to/unofficial-bambu-mcp unofficial-bambu-mcp.

  • The ChatGPT app only connects to remote MCP servers, and this one has to run on the computer with Bambu Studio.

Then ask: "What version of Bambu Studio do I have, and which printers can you use?"

Configuration (optional)

Variable

Default

Meaning

UBMCP_DIR

~/Documents/unofficial-bambu-mcp

Where projects, sliced files and print files are saved

BAMBU_STUDIO_EXE

auto-detected

Path of the Bambu Studio executable

BAMBU_STUDIO_DATA

auto-detected

Bambu Studio data folder (with system/ and user/)

BAMBU_STUDIO_RESOURCES

auto-detected

Bambu Studio resources folder (with profiles/), for unusual Linux installs

UBMCP_PRESET_BACKUPS

~/.config/unofficial-bambu-mcp/preset-backups

Where a copy of a user preset goes before it is changed, renamed or deleted

BAMBU_PRINTER_SERIAL, BAMBU_PRINTER_ACCESS_CODE, BAMBU_PRINTER_IP

from Bambu Studio

Printer for printer_status, if you do not want it read from Bambu Studio

How it works

Bambu Studio has no plugin or scripting API. This server works on the project file (.3mf, the format Bambu Studio saves) and calls the Bambu Studio command line to slice. Presets are read from your installation and flattened the way the app does. Details in docs/how-it-works.md.

  • In sync with the app. open_in_bambu_studio shows a project in the app; if you change it there and save, the server re-reads it on the next command (and tells you if both sides changed).

  • Safe with your files. Nothing is ever overwritten: saving adds -2, -3... and opened files are read as a copy. Changing, renaming or deleting one of your presets keeps a backup copy first.

  • Light. numpy, shapely, manifold3d, fonttools and Pillow. No Bambu profile is shipped with this repository: presets come from your installation (the server only carries default values for settings that presets leave out).

  • Your printer, your call. The LAN access code is read from Bambu Studio when needed and never copied anywhere. See SECURITY.md.

Guides

Limitations

  • Two-nozzle printers (H2D, H2C, X2D): filaments go to a nozzle automatically, as in Bambu Studio's default; choosing the nozzle of each filament by hand is not there yet.

  • The printer camera works with P1 and A1 printers (X1 and H2 stream over RTSP, not supported yet).

  • First-layer tests do not keep painted colors.

  • Bambu Studio re-slices a project when it opens it; to see a plate sliced and ready to print in the app, use send_to_printer.

Roadmap

  • Mesh simplification and repair; the nozzle of each filament on two-nozzle printers; X1/H2 camera

  • A live bridge inside the slicer, to be proposed to OrcaSlicer and Bambu Studio

Contributing and support

Bug reports, ideas and pull requests: GitHub Issues. Include your OS, Bambu Studio version, printer and, if you can, the .3mf that fails. See CONTRIBUTING.md.

Author: Daniele Finocchiaro — danielefinocchiaro.com. If it saves you prints and time: buy me a coffee.

License

MIT for this code. Bambu Studio profiles are read from your installation and are not redistributed.

Available Tools

87 tools
add_brim_earsA

Brim ears: small round brims only where a part needs them, instead of a brim all around (Bambu Studio's Painted brim). Meant for print-in-place and articulated models: a full brim fills the joint gaps on the first layer and welds them. Without points, ears go to the tips of the thin parts of the first layer (fingers, toes, any tip thinner than narrow mm), each as large as possible up to radius without reaching another piece, a gap or hole, or a second thin part (those tips are listed as skipped, with the reason). small > 0 also gives ears to first-layer pieces smaller than that (mm²), at their ends. points: [[x, y], ...] or [[x, y, radius]] in plate mm, placed as given, with a warning when one would weld something. radius 0 = Bambu Studio's default (16 first-layer line widths across). keep: add to the ears the object already has. Look at them with preview_plate(view='top', zoom=True), then slice_project and preview_layer(layer=1).

NameRequiredDescriptionDefault
keepNo
smallNo
narrowNo
objectYes
pointsNo
radiusNo
clearanceNo

TDQS

A4.3/5.0
Behavior4/5

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

With zero annotations the description carries the full load, and it does substantial work: it explains default ear placement, that skipped tips are reported with reasons, that a warning is emitted when a point would weld something, and that radius 0 means Bambu Studio's default of 16 line widths. It does not state the one destructive-ish concern an agent would want — whether existing ears are replaced when keep=false — though 'keep: add to the ears the object already has' implies it.

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 concept, then default behavior, then point overrides, then radius/keep, then a verification workflow — a sensible ordering. The sentences are heavily packed with parenthetical clauses, which costs some scannability, but no sentence is redundant.

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?

No annotations and no output schema, so the description must cover behavior and results; it does cover default placement, skip reporting and warning emission well. The remaining gaps are the undocumented clearance parameter and no statement of what the call returns or whether it requires an already-loaded plate.

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 0%, so the description must compensate, and it explains narrow, small, points (both [[x,y]] and [[x,y,radius]] forms, units in plate mm, warning behavior), radius (including the 0 = default special case) and keep. The notable omission is clearance, a 7th parameter that is never mentioned anywhere, and object is only implicitly the target.

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?

Starts by defining the specific resource ('small round brims only where a part needs them') and contrasts it with the alternative it replaces ('instead of a brim all around'), so an agent can distinguish it from a plate-wide brim setting or a generic brim tool. The add operation is unambiguous from the name plus the defaults/per-points behavior it then describes.

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?

Explicitly states the intended use case — 'Meant for print-in-place and articulated models' — and explains why the alternative fails ('a full brim fills the joint gaps on the first layer and welds them'), which is a real when-to-use/when-not rationale. It also prescribes a verification workflow (preview_plate, slice_project, preview_layer). It does not name sibling remove_brim_ears or any exclusion conditions for non-articulated models, keeping it just short of a 5.

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

add_layer_actionA

Do something when the print reaches height z (mm), before that layer is printed: action = pause (e.g. to insert magnets or nuts; message is shown in Bambu Studio), filament_change (switch to filament slot filament from that height on, with the AMS), gcode (any G-code line(s), e.g. 'M104 S210'). z is snapped to the nearest real layer at or above it.

NameRequiredDescriptionDefault
zYes
gcodeNo
plateYes
actionYes
messageNo
filamentNo

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It does disclose two valuable traits: the action fires before the target layer prints, and z is snapped to the nearest real layer at or above the requested height. It does not say whether the action persists in the saved project, how it interacts with existing actions at the same height, or what errors occur for out-of-range z or plate.

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 trigger condition before the action enumeration, and every clause adds information rather than repeating the name. The nested parentheticals make it dense but not padded; a slightly cleaner enumeration of action→parameter coupling would tighten it further.

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

Completeness3/5

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

For a mutation tool with no annotations and no output schema, the description covers the trigger semantics and most parameters but leaves the required `plate` argument unexplained and says nothing about persistence, error conditions, or the return result. Adequate to call correctly in the happy path, incomplete for anything adjacent.

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 0%, so the description must compensate, and it largely does: z gets a unit and a snapping rule, action gets its three legal values with meanings, message is explained as shown in Bambu Studio, filament is explained as the AMS slot used from that height on, and gcode accepts full command lines. The notable omission is `plate`, which is required but never mentioned, and the coupling between action and the other params is only implied.

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?

Specific verb+resource with scope: it registers an action that fires when the print reaches height z, before that layer prints. The three action modes (pause, filament_change, gcode) are enumerated, so the agent knows exactly what class of operation this is and can distinguish it from siblings like set_height_range or remove_layer_action.

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?

Each action value carries an inline use case — pause to insert magnets or nuts, filament_change to switch AMS slots from that height, gcode for arbitrary commands like 'M104 S210'. That is clear when-to-use-per-mode context, but there is no explicit statement of prerequisites (a loaded project, a valid plate) or of when to prefer remove_layer_action / set_height_range instead.

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

add_modifierA

Add a part to an object, covering its whole footprint between z_from and z_to (mm from the object's bottom; z_to 0 = top), or only region [x0, y0, x1, y1] (mm from the object's center). kind: modifier (different settings inside, e.g. {"sparse_infill_density": "100%"} for the top 5 mm), negative (removes material), support_blocker, support_enforcer. shape: box, or cylinder (round, as wide as the smaller side of the region: e.g. a hole for a magnet or a screw is kind='negative', shape='cylinder', region=[-4, -4, 4, 4] for 8 mm).

NameRequiredDescriptionDefault
kindNomodifier
z_toNo
shapeNobox
objectYes
regionNo
z_fromNo
settingsNo

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does disclose meaningful traits: z coordinates are measured from the object's bottom, region coordinates from the center, negative removes material, modifier changes settings inside, and cylinder shape derives width from the smaller region side. It does not cover permissions, reversibility, or return behavior, but it provides substantial operational context.

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?

The description is dense but front-loaded with the core action, then organized by kind and shape. It contains no obvious filler, though the single-paragraph run-on format could be slightly easier to scan.

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 7-parameter tool with no schema descriptions, no annotations, and no output schema, the description is complete enough to support correct invocation. It covers the key geometric semantics and kind behavior; missing details are mainly around the object parameter and any return/undo behavior.

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

Parameters5/5

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

Schema coverage is 0%, so the description must compensate, and it largely does: it explains z_from/z_to origins and the z_to=0 top convention, region format [x0, y0, x1, y1] from center, kind values, shape values including cylinder width semantics, and a settings example. Only the object parameter is not elaborated, but its meaning is evident from the first sentence.

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 action and resource: adding a part to an object, with kinds modifier, negative, support_blocker, and support_enforcer. It is clear what the tool does, but it does not explicitly differentiate itself from sibling tools such as add_shape or add_relief.

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?

The description gives implied usage through kind explanations and examples, such as using negative for a magnet hole and modifier for changing infill in a region. However, it does not explicitly say when to use this tool versus alternatives or name any sibling tools, so guidance remains inferential.

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

add_plateC

Add an empty plate at the end.

NameRequiredDescriptionDefault
nameNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden, and it discloses almost nothing: whether the operation mutates project state (it clearly does), whether existing plates are unaffected, where 'the end' is in ordering, and whether the new plate inherits settings from the current plate. 'At the end' is the only behavioral detail offered.

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?

It is a single, front-loaded sentence with no redundant padding, which is structurally fine, but the brevity comes at the cost of substance rather than being earned through precise wording.

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 state-mutating project operation with no annotations, no output schema, and an undescribed parameter, the description is far from sufficient—it doesn't say what is returned, whether the added plate becomes the active/selected plate, or how failures are surfaced.

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

Parameters2/5

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

Schema description coverage is 0% for the single optional 'name' parameter, and the description never mentions that a name can be supplied or what happens when it is omitted (the schema default is an empty string). The one parameter is effectively undocumented across both structured and unstructured fields.

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

Purpose3/5

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

The verb and resource are identifiable ('Add ... plate'), but the description is thin: it never says this creates a new, empty build plate appended to the project, nor how that differs from siblings like 'rename_plate', 'set_plate_settings', or 'remove_plate'. An agent can guess the effect, but the definition doesn't distinguish it explicitly from other plate-scoped tools.

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

Usage Guidelines2/5

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

There is no guidance on when to add a plate versus using an existing one, no mention of any alternative tool, and no prerequisites (e.g., does the project need to be open?). Usage is only implied by the tool name.

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

add_reliefA

Text or an SVG logo on a face of an object, raised or engraved, like Bambu Studio's Text and SVG tools. It wraps around curved faces: on a cup it keeps its size along the surface and stands out square to it. face: top, bottom, front, back, left, right (the side it is read from); at: [x, y, z] plate point to center it on (default: the middle of that face); size: capital letter height for text, longest side for an SVG (mm); depth: how far it stands out or goes in; rotate: degrees within the face. Raised, it is a new part (filament=N prints it in another color); engraved, a negative part (set_part_type turns it back). Look at preview_plate afterwards.

NameRequiredDescriptionDefault
atNo
svgNo
faceNotop
fontNo
sizeNo
textNo
depthNo
objectYes
rotateNo
engraveNo
filamentNo

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations at all, the description carries the full burden and does well: it discloses that raised relief becomes a new part (colored by filament=N) while engraved relief becomes a negative part, that it wraps around curved faces keeping size along the surface, and that it recommends a preview afterward. It omits failure modes, whether the original object is modified, and any permission/error behavior, so it falls short of 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?

The purpose sentence is front-loaded, followed by a compact parameter glossary and a closing tip. It is dense but every line carries information; the only mild bloat is the repeated curved-face explanation, which could be trimmed.

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 an 11-parameter tool with no annotations, no output schema, and zero schema coverage, the description supplies the semantics an agent needs for most parameters and the raised-vs-engraved model. The unexplained required 'object' parameter and the unmentioned 'font' / text-vs-svg precedence are the remaining gaps.

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 0%, so the description must compensate, and it largely does: it defines face (with the six enumerated values and 'the side it is read from'), at ([x,y,z] plate point, defaulting to the face center), size (cap height for text, longest side for SVG, in mm), depth, rotate, engrave, and filament. It leaves 'object' (the sole required param) and 'font' undefined, which keeps it from a 5.

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 names a specific verb and resource ('Text or an SVG logo on a face of an object, raised or engraved') and draws a clear analogy to Bambu Studio's Text and SVG tools. It also names the closest behavioral relatives (add_shape/add_modifier are implicitly distinguished by the text/SVG focus) and the follow-up sibling preview_plate, so an agent can tell it apart without opening the schema.

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?

It gives clear context for when to use it (adding text/SVG to a face, raised or engraved) and explicitly points to preview_plate afterwards, plus set_part_type to revert an engraving. It stops short of naming an alternative tool to use instead (e.g. add_modifier or boolean_objects) or stating exclusions, so a 4 rather than a 5.

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

add_shapeA

Create a simple solid: box (width, depth, height), cylinder (diameter, height), cone (diameter, diameter_top, height), sphere (diameter), text (text, text_height = capital letters in mm, height = depth of the letters; base > 0 puts the text on a plate that thick, as a separate part 'Base' with filament base_filament (0 = same as the text), e.g. white letters on a black tag; font = path to a .ttf/.otf), svg (svg = path of an .svg file, a logo raised height mm; size = its longest side in mm, 0 = the file's own size; base works as for text). To put text or a logo on an existing object, use add_relief.

NameRequiredDescriptionDefault
xNo
yNo
svgNo
baseNo
fontNo
nameNo
sizeNo
textNo
depthNo
plateNo
shapeYes
widthNo
heightNo
diameterNo
filamentNo
text_heightNo
diameter_topNo
base_filamentNo

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose a non-obvious side effect: base > 0 creates a separate part named 'Base' with its own filament, and base_filament 0 means inherit the text filament. It does not state units for most dimensions, whether objects are placed at the origin or at x/y, or what the tool returns, so the safety/placement profile remains incomplete.

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 the shape list, then per-shape parentheticals that each carry real information rather than filler. The density is justified by 18 parameters, though the text/svg clauses become long and would read better as separate lines.

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

Completeness3/5

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

For an 18-parameter mutation tool with no annotations, no output schema and no schema descriptions, the description covers shape semantics well but omits object placement (x/y), the meaning of plate and filament indices, and any return value. It is adequate to build a solid but not to fully predict the result.

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 0%, so the description must compensate, and it does for most parameters — including disambiguating the overloaded `height` (box height vs. depth of text letters vs. raised height for svg) and explaining text_height, base, base_filament, font, svg and size semantics. Gaps remain: x, y (placement), name, plate and filament indices are never mentioned.

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 and resource ("Create a simple solid") and then enumerates the exact shape families supported (box, cylinder, cone, sphere, text, svg) with their governing dimensions. An agent can immediately tell this is the primitive-creation tool and, via the closing sentence, how it differs from add_relief.

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?

Explicitly routes the agent to add_relief for putting text or a logo on an existing object, which is the key sibling ambiguity. It does not cover other plausible alternatives (import_model, add_modifier) or prerequisites such as an open project, but the main exclusion is stated clearly.

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

align_objectsA

Line up objects of one plate, like Bambu Studio's Align / Distribute, by their outer boxes. align: left, right, center_x (along X); front, back, center_y (along Y). distribute: 'x' or 'y' spaces them evenly between the two outermost ones. Both can be given.

NameRequiredDescriptionDefault
alignNo
objectsYes
distributeNo

TDQS

A3.6/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It does disclose genuine operational mechanics (alignment is computed from outer bounding boxes; distribute anchors on the two outermost objects; both modes may run together), which is real value. It omits side effects: whether positions are mutated in place, whether it requires all objects on the same plate, undo behavior, and failure modes.

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

Conciseness5/5

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

Purpose is front-loaded in the first clause, followed by the two mode descriptions in compact order. Roughly three sentences with no filler; even the closing 'Both can be given' is a needed combination rule rather than padding.

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

Completeness3/5

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

For a mutation tool with zero annotations, no output schema, and 0% schema description coverage, the description covers the align/distribute value space well but leaves the required 'objects' argument and the return behavior undefined. An agent could call it correctly on the mode arguments yet still guess wrong about what to pass for objects.

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 0% and no enums are declared, so the description is doing the heavy lifting: it enumerates valid align values (left, right, center_x, front, back, center_y) and distribute values ('x' or 'y'), including which axis each belongs to. The 'objects' parameter is never explained (names vs. IDs, whether they must share a plate), keeping it from a 5.

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?

States a specific verb (line up) and resource (objects of one plate) and clarifies the axis semantics of align versus distribute. The Bambu Studio analogy and 'by their outer boxes' pin down the operation precisely. It does not, however, distinguish itself from the sibling 'arrange' or 'move_object', which an agent could plausibly confuse with alignment.

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 only implied: the description explains what align/distribute do but never says when to reach for this tool versus 'arrange' or 'move_object'. It does add one useful usage rule, 'Both can be given', indicating align and distribute can be combined in a single call, but there are no exclusions or preconditions.

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

ams_loadA

Load the filament of an AMS slot into the nozzle, like Load in Bambu Studio's Device tab: the nozzle heats, the filament loaded now (if any) goes back to its slot, the new one comes in and is purged. slot: as in printer_status (AMS 1 = slots 1-4, AMS 2 = 5-8). Only when the printer is not printing. First call without confirm: nothing is sent, the answer says what would happen and the confirm code; tell the user, and only after they agree call again with confirm=. Bambu firmware accepts it only in LAN-only mode with Developer Mode; otherwise use the printer screen, Bambu Handy or Bambu Studio.

NameRequiredDescriptionDefault
slotYes
confirmNo

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so: side effects are disclosed (nozzle heats, currently loaded filament is returned to its slot, new filament purged), the dry-run behavior of the first call is described, and the firmware/permission constraints are named. An agent knows exactly what physical change will occur and when nothing will be sent.

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?

Content is front-loaded: purpose first, then parameter meaning, then preconditions, then the confirm protocol. Dense and mostly economical, though the Bambu Studio analogy and the final firmware paragraph could be tightened without losing information.

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?

No output schema exists, yet the description tells the agent what the first (dry-run) response contains — what would happen plus a confirm code — which is exactly the return-value detail needed for the two-step flow. For a two-parameter hardware mutation tool, prerequisites, effects, and the safety protocol are all covered.

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 0%, so the description must compensate, and it largely does: 'slot' is defined via a concrete mapping (AMS 1 = slots 1-4, AMS 2 = 5-8) referencing printer_status, and 'confirm' is explained functionally through the two-call flow including that the first response returns the code. It never states the confirm value is an opaque string taken verbatim from the response, which is a small remaining gap.

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 and resource (load filament from an AMS slot into the nozzle) and grounds it in a familiar reference (Bambu Studio's Load button), making the operation's scope unambiguous. It is clearly distinguishable from the ams_unload sibling, and the description of the internal sequence (unload current filament back to slot, feed new one, purge) removes any doubt about what 'load' entails.

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?

Explicitly states the precondition 'Only when the printer is not printing' and a hard environmental gate: firmware only accepts it in LAN-only mode with Developer Mode, otherwise fall back to the printer screen, Bambu Handy, or Bambu Studio. The two-call confirmation protocol is spelled out with the trigger condition for the second call (only after the user agrees).

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

ams_unloadA

Unload the filament in the nozzle back to its AMS slot, like Unload in Bambu Studio's Device tab (the nozzle heats). Only when the printer is not printing. First call without confirm: nothing is sent, the answer gives the confirm code; call again with confirm= only after the user agrees. Bambu firmware accepts it only in LAN-only mode with Developer Mode; otherwise use the printer screen, Bambu Handy or Bambu Studio.

NameRequiredDescriptionDefault
confirmNo

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so: it discloses the physical side effect ('the nozzle heats'), the two-phase dry-run confirmation (nothing is sent on first call, code returned), and the firmware mode restriction that determines success or failure. These are exactly the safety and environment facts an agent cannot infer elsewhere.

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

Conciseness5/5

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

Front-loads the action, then the precondition, then the confirm protocol, then the environment constraint — in the order an agent needs them. Sentences are dense but every one carries non-redundant information.

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 single-parameter, no-output-schema mutation tool, everything needed to call it correctly and safely is present: precondition, safety side effect, confirmation handshake, and troubleshooting fallback when firmware blocks the call.

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 0% and the sole 'confirm' parameter has no schema description, but the description fully explains its semantics: omit it to get the code, supply confirm=<code> to execute. It does not state the type or that an empty string is the default, but the operational meaning is unambiguous.

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?

Names a specific verb and resource ('Unload the filament in the nozzle back to its AMS slot') and anchors it to a known UI affordance in Bambu Studio's Device tab. It also implicitly distinguishes itself from the sibling ams_load by naming the opposite direction of filament travel.

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?

States the precondition ('Only when the printer is not printing'), the firmware prerequisites ('LAN-only mode with Developer Mode'), and explicit fallbacks when those fail ('use the printer screen, Bambu Handy or Bambu Studio'). The two-step confirmation protocol is spelled out with the condition for the second call ('only after the user agrees').

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

arrangeA

Arrange objects by their real outline seen from above, brim and brim ears included, so shapes can nest (like Bambu Studio's Arrange, which only uses convex hulls). gap: mm between those outlines (and from the plate's edge half of it). Which objects: plate N, the named objects (ids or names), or all (plate=0). plates: 0 = each object stays on its plate; N = spread them over plates 1..N, evenly; -1 = as few plates as possible. rotate: allow turning them by multiples of rotation_step degrees (e.g. 60 for snowflakes); multi_material false = one material (set of filaments) per plate; avoid_calibration_area: keep off the printer's flow calibration corner (P1S/X1: front left); align_to_y: long side along Y first. Plates with more than one material keep the back right corner free for the prime tower. If something does not fit, nothing is moved: the answer says what is left over and how many plates it needs. Objects not being arranged stay where they are. Look at preview_plate(view='top') afterwards.

NameRequiredDescriptionDefault
gapNo
plateNo
platesNo
rotateNo
objectsNo
align_to_yNo
rotation_stepNo
multi_materialNo
avoid_calibration_areaNo

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does so well: it discloses that nothing is moved if objects don't fit, the answer reports leftovers and required plate count, unselected objects stay put, and multi-material plates reserve the back-right corner for the prime tower. It does not cover permissions, reversibility, or rate limits, but for a local arrangement operation it is substantially transparent.

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?

The description is dense but front-loaded, starting with the core purpose and then methodically covering parameters and edge cases. Every clause adds information; however, the run-on style could benefit from bulleted structure for faster parsing.

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?

Given nine parameters, zero schema descriptions, and no output schema, the description is nearly complete: it explains every parameter, the failure behavior, and a recommended follow-up (preview_plate). It lacks explicit sibling-tool routing and any note on permissions/undo, keeping it just short of full completeness.

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

Parameters5/5

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

Schema coverage is 0%, but the description compensates by explaining all nine parameters: gap units and edge behavior, plate selection semantics, plates modes (0/N/-1), rotate with rotation_step, multi_material meaning, avoid_calibration_area with printer examples, align_to_y, and objects as ids or names. This goes well beyond the bare titles and defaults in the schema.

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?

States a specific verb ('Arrange') and resource ('objects') with a precise scope: using real outlines from above including brim ears, to enable nesting. It contrasts with Bambu Studio's convex-hull-only Arrange, though it does not explicitly differentiate from nearby siblings like fill_plate or align_objects.

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?

Provides operational guidance for selecting objects (plate N, named objects, or all), plate spreading modes, rotation, material handling, and calibration-area avoidance. However, it never states when to prefer this tool over siblings such as fill_plate or align_objects, nor any preconditions or exclusions.

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

bambu_statusB

Where Bambu Studio is installed, its version, whether it is running, and the current project.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description must carry behavioral disclosure. It does say what information is returned (which is genuinely useful given there is no output schema), but it never states that the call is read-only/without side effects, nor what happens when Bambu Studio is not installed.

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

Conciseness5/5

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

A single tight clause that front-loads the resource (installation location) followed by the remaining reported fields. Nothing extraneous, though it reads as a fragment rather than a sentence.

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

Completeness3/5

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

With no output schema, the field enumeration is doing real work, but it omits the failure mode (not installed / not running) and the shape of values such as version strings or project paths. Adequate for a trivial zero-param tool, but not complete.

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?

Zero parameters, so there is nothing for the description to disambiguate. The baseline of 4 applies; no parameter semantics are required or missing.

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 names the specific resource and enumerates what the status covers: install location, version, running state, and current project. It is clearly distinguishable from name alone, though it lacks an explicit verb and never differentiates itself from siblings like printer_status or sync_with_bambu_studio.

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

Usage Guidelines2/5

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

There is no guidance on when to call this versus printer_status or open_in_bambu_studio, and no prerequisites such as 'Bambu Studio must be installed'. The usage is only implied by the name and the field list.

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

boolean_objectsA

Mesh boolean between two objects where they are on the plate, like Bambu Studio's Mesh boolean. difference: cut tool_object's shape out of object (a hole, a slot, a lettering); intersection: keep only what they share; union: weld tool_object onto object (onto its part part, default the biggest). The result keeps object's name, settings and filaments; painted colors stay, new faces take the part's filament. The tool object is removed unless keep_tool=True. Both must be closed solids (check_object).

NameRequiredDescriptionDefault
partNo
objectYes
keep_toolNo
operationNodifference
tool_objectYes

TDQS

A4.4/5.0
Behavior4/5

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

No annotations, so the description carries the full load, and it discloses key post-conditions: result keeps object's name, settings and filaments, painted colors persist, new faces take the part's filament, and the tool object is deleted unless keep_tool=True. It does not cover reversibility/undo or failure modes beyond the closed-solid check.

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 core action before the operation breakdown, and every clause adds usable information. It is dense across three sentences but not padded.

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 mutation tool with no annotations and no output schema, the description covers inputs, results, and the key side effect (tool removal). Minor gaps remain around error behavior when solids are open and what the returned result handle looks like.

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

Parameters5/5

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

Schema coverage is 0%, but the description defines all five parameters in context: object vs tool_object roles, the three valid operation values, part (defaulting to the biggest) for union, and keep_tool controlling whether the tool object is removed.

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 and resource ('Mesh boolean between two objects on the plate') and anchors it to a known reference (Bambu Studio's Mesh boolean). It is clearly distinguishable from siblings like merge_objects and cut_object by naming the operations and their geometry semantics.

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?

Explains each operation's intent (difference = cut a hole; intersection = keep shared volume; union = weld onto a part), which tells the agent which one to pick. It also states the closed-solid prerequisite and points to check_object. It stops short of explicitly contrasting with cut_object/merge_objects siblings.

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

check_objectB

Is the mesh a closed, printable solid? Size, volume, number of separate pieces.

NameRequiredDescriptionDefault
objectYes

TDQS

B3/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full burden. It does disclose the reported facets (size, volume, piece count), which is meaningful since there is no output schema, but it never says whether the call is read-only or mutates the model, what happens on invalid input, or how the object is identified.

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?

Two compact clauses, front-loaded with the key question and then the measurable facets. No filler, though the interrogative framing is slightly informal for a tool spec.

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

Completeness3/5

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

For a one-parameter inspection tool with no annotations and no output schema, the description covers the expected return facets but leaves the input identifier and safety profile undefined. Adequate to guess at intent, not complete enough to call confidently.

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

Parameters2/5

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

Schema description coverage is 0% and the single required 'object' parameter is completely unexplained in both schema and description. It is unclear whether this is an object name, an internal ID, or a file path, which is a real usability gap for a required parameter.

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 identifies the resource (a mesh/object) and enumerates the specific properties it evaluates: closed solid, size, volume, and number of separate pieces. It lacks an explicit action verb ('check' only appears in the tool name) and never distinguishes itself from nearby analysis tools like measure_object or check_print_risks, but the facets listed make the intent recoverable.

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

Usage Guidelines2/5

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

No indication of when to call this versus measure_object, check_print_risks, or slice_project, and no prerequisites such as whether the object must already be loaded on a plate. The agent must infer usage entirely from the question phrasing.

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

check_print_risksA

Before a long print: parts likely to come off or topple, and settings that do not fit. Per plate (0 = all): tall and narrow parts (height against the smaller side of the footprint), parts standing on a narrow or tiny footing without a brim (e.g. pins lying on their side), filaments whose temperature for this build plate is 0 (not meant for it), and plates where tall parts share a long print with many others (a part that fails late can knock the others: print them apart).

NameRequiredDescriptionDefault
plateNo

TDQS

A3.7/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It does useful work by disclosing the exact heuristics (height vs. footprint width, narrow footing without brim, filament temp of 0 for the plate, tall parts sharing a crowded plate), but never says whether the tool is read-only, whether anything is modified, or what form the warnings take.

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?

The risk summary is front-loaded before the checklist, so an agent can stop reading after one clause. The enumerated criteria are dense but each maps to a distinct check, though the parenthetical asides (e.g. "pins lying on their side") cost more words than they return.

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

Completeness3/5

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

With no annotations and no output schema, the description should explain what an agent gets back (a list of warnings? a score? per-plate groupings?) and whether the call is side-effect free. It covers the input scope well but leaves the return contract entirely unspecified for a diagnostic tool.

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 0% and the sole parameter has no description, so the schema alone would leave "plate" ambiguous. The phrase "Per plate (0 = all)" supplies the one non-obvious semantic, resolving the default value's meaning; it adds nothing about valid ranges beyond that.

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 analysis: predicting parts that will come off or topple plus settings that don't fit, scoped per plate. It is clear what the tool produces conceptually, but it never contrasts itself with the near-sibling check_object, so an agent must guess which checker to reach for.

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?

"Before a long print" gives a concrete timing condition for invocation, which is more than most definitions offer. It stops short of exclusions or naming alternatives (e.g. check_object) for single-object inspection.

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

convert_unitsB

An object modeled in other units, like Bambu Studio's Convert from inch / meter: unit 'inch', 'cm' or 'meter' scales it up from that unit to millimeters (a 1-unit cube becomes 25.4, 10 or 1000 mm); restore=True scales it back down. import_model says when a model looks like it is in inches or meters.

NameRequiredDescriptionDefault
unitNoinch
objectYes
restoreNo

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses that the operation scales to millimeters and that restore=True scales back down, implying reversibility. It does not state whether the change is permanent, whether it modifies the object in place, or whether it requires any preconditions, leaving meaningful behavioral gaps.

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?

The description is a single dense paragraph with no wasted words, and the core scaling effect is given early. The opening phrase is slightly awkward, but the examples and restore behavior follow logically. It could be better front-loaded with an action verb, but it remains efficient.

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

Completeness3/5

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

For a 3-parameter mutation tool with no annotations and no output schema, the description covers the conversion behavior well but omits key context: what 'object' refers to, whether the operation is in-place or returns a new object, and any side effects. It is minimally viable but has clear gaps for an agent to invoke it confidently.

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 0%, so the description must compensate. It adds useful meaning for 'unit' (allowed values: inch, cm, meter) and 'restore' (scales back down), but it does not explain the required 'object' parameter at all. This partial coverage is just enough for a 3.

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 explains the specific operation: scaling an object from a source unit (inch, cm, meter) to millimeters, with an option to restore. It gives a concrete example (1-unit cube becomes 25.4, 10, or 1000 mm). It does not start with a crisp verb+resource phrase, but the effect is clear and distinct from generic transform tools.

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?

It implies use when an object is modeled in non-mm units and points to import_model as the detector for such cases. However, it does not explicitly state when to choose this over alternatives like transform_object or when not to use it. Usage context is inferred rather than spelled out.

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

copy_object_settingsA

Copy one object's own settings (set_object_setting: infill, walls, brim...) to other objects, like Bambu Studio's Copy / Paste process settings. keys: only these; replace=True first removes the targets' own settings; height_ranges=True copies the height bands too.

NameRequiredDescriptionDefault
keysNo
replaceNo
to_objectsYes
from_objectYes
height_rangesNo

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the burden well by disclosing that replace=True first removes the targets' own settings and that height_ranges=True copies height bands. It does not discuss permissions, reversibility, or error behavior, leaving some behavioral gaps.

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

Conciseness5/5

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

The description is three concise, front-loaded sentences with no wasted text. The core copy operation, optional parameter meanings, and Bambu Studio analogy are all presented efficiently.

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 mutation tool with five parameters, no annotations, and no output schema, the description covers the main operation and all optional behaviors sufficiently. It leaves minor gaps around defaults, error cases, and return behavior, but an agent can call it 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 description coverage is 0%, so the description must compensate. It explains keys as a filter, replace=True as removing target settings first, and height_ranges=True as copying height bands, covering the key optional parameters well, though it does not explicitly name from_object and to_objects or clarify omitted-key defaults.

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 and resource: copying one object's own settings to other objects. The Bambu Studio Copy/Paste analogy and the mention of set_object_setting make the scope clear and distinguishable from related sibling tools.

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?

Provides clear context for when this tool applies: transferring settings from one object to others, analogous to Copy/Paste process settings. It does not explicitly state when not to use it versus set_object_setting or duplicate_object, but the intended use is easy to infer.

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

cut_objectA

Cut an object with a plane, optionally with connectors that line the pieces up for gluing (like the connectors of Bambu Studio's Cut tool). keep: both | bottom | top. The plane is horizontal at height z (mm from the object's bottom), or goes through point [x, y, z] (plate mm, z above the bed) with normal [nx, ny, nz]: [1, 0, 0] cuts vertically across x, [0.5, 0, 1] is tilted. place: auto = the lower piece stays as it is and the upper one lies on its cut face; cut_down = both lie on their cut faces; keep = both as they were. connector: none | plug (a peg on the piece whose cut face is up, a hole with clearance mm per side in the other) | dowel (holes in both pieces and a separate pin, added to the plate) | dovetail (a tongue across the whole cut, along its length, and a slot in the other piece: they slide together from the side). shape: cylinder | square | hexagon; style: prism | frustum (tapered, centers itself); size: diameter or side in mm, or the dovetail's narrow width (0 = from the cut); depth: peg, pin or dovetail height (0 = automatic); count: 0 = one per piece of the cut (two along a long one), N = spread over the cut; positions: [[x, y], ...] or [[x, y, z]] in plate mm, taken on the plane (for a dovetail: a point on its middle line). Holes keep 2 mm of material from the edge and get shallower where a piece is thin; connectors that do not fit are listed as skipped. Modifiers, negative parts and painted colors are kept on the pieces.

NameRequiredDescriptionDefault
zNo
keepNoboth
sizeNo
countNo
depthNo
placeNoauto
pointNo
shapeNocylinder
styleNoprism
normalNo
objectYes
clearanceNo
connectorNonone
positionsNo

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does well: it explains placement results, connector fitting failures, material preservation, and that modifiers, negative parts, and painted colors are kept. It does not state whether the original object is replaced/consumed, whether the cut is reversible, or what the response contains.

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?

The description is long but justified by a 14-parameter tool, and the main purpose and keep options are front-loaded. It is a dense run-on paragraph with many parentheticals, so structure could be improved, but there is little wasted content.

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 complex, unannotated 14-parameter mutation tool with no output schema, the description is substantially complete on cut geometry, connector behavior, and edge cases. It still lacks lifecycle details such as what objects are returned and whether the source object is modified in place.

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

Parameters5/5

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

Schema coverage is 0%, so the description must compensate, and it does: it defines the cut plane via z/point/normal, explains keep, place, connector types, shape, style, size, depth, count, positions, and clearance in context. Nearly every parameter has meaningful semantics beyond its bare name.

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?

States a specific verb and resource: 'Cut an object with a plane', with optional connectors. It clearly distinguishes the operation from generic object manipulation, but does not explicitly contrast it with the sibling split_object tool.

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

Usage Guidelines2/5

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

The description explains many parameter choices and behaviors, but gives no explicit guidance on when to use cut_object versus alternatives like split_object, or when not to use it. The agent must infer tool selection from the purpose alone.

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

delete_objectC

Remove an object from the project.

NameRequiredDescriptionDefault
objectYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description bears the full behavioral burden and delivers almost none: it doesn't say the deletion is irreversible, whether undo exists, whether dependent settings/parts are discarded, or what the response looks like. The word 'Remove' implies mutation, but nothing beyond the obvious is disclosed.

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?

A single short, front-loaded sentence with no filler. It is efficient, though the brevity reflects under-specification rather than tight editing.

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 destructive, one-parameter tool with no annotations, no output schema, and zero schema descriptions, the description should carry identification format, irreversibility, and side effects. It covers only the bare action.

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

Parameters2/5

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

There is one required parameter at 0% schema description coverage, so the description must explain what 'object' is, yet it only gestures at 'an object'. It does not say whether this is a name, id, index, or handle — a critical ambiguity for a destructive operation.

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?

States a specific verb (Remove) and resource (an object in the project), which is immediately actionable. It does not distinguish itself from near-neighbours like remove_part, remove_plate or skip_objects, so the agent must infer the scope difference.

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

Usage Guidelines2/5

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

No guidance on when to use this versus alternatives, no prerequisites, and no note about whether the object must first be deselected/printable. The agent is left to infer everything about invocation context.

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

delete_presetB

Delete one of your user presets (a backup copy is kept, see the answer). A preset in your Bambu cloud cannot be deleted from here, because Bambu Studio would download it again at its next start: only its own Delete removes the cloud copy, and the answer says where it is.

NameRequiredDescriptionDefault
kindYes
nameYes

TDQS

B3.3/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does add real context: a backup copy is retained (implying recoverability), and it explains the mechanism blocking cloud-preset deletion. It stops short of stating required permissions, whether the deletion is immediate, or what the response contains beyond a hint about the cloud copy location.

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 action is front-loaded in the first clause, which is good. The remainder is somewhat convoluted, especially the trailing 'and the answer says where it is', which restates indirectly what the sentence already implies and costs clarity.

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

Completeness3/5

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

No annotations and no output schema, so the description must justify itself, and it covers the destructive-behavior and cloud-scope story well. It is still incomplete for a two-required-parameter tool: the meaning and accepted values of 'kind' are absent, and nothing tells the agent how to recover the backup copy it promises exists.

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

Parameters2/5

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

Schema description coverage is 0% and both parameters are required, yet the description never mentions them. 'kind' in particular is undefined — the agent gets no hint that it selects a preset category (filament/process/printer), nor any guidance on valid values or the interplay between kind and name.

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?

Specific verb+resource: 'Delete one of your user presets'. It also draws a scope line (local presets only, not Bambu cloud presets), which separates it from cloud-side deletion. It does not explicitly contrast with nearby siblings like edit_preset or delete_object, but the resource is unambiguous.

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?

The when-not case is stated clearly: a cloud preset cannot be deleted here, because Bambu Studio would re-download it. However, the alternative is described only as 'its own Delete' with a pointer to 'the answer' rather than naming a concrete tool or workflow step, so the agent has to infer the follow-up action.

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

delete_printer_filesA

Free space on the printer's SD card: delete timelapse videos (with their thumbnails), files of past prints (kind='prints') or thumbnails whose video is gone (kind='thumbnails'). Pick them by names (from printer_files) or all those older than older_than_days. Two steps: without confirm nothing is deleted, the answer lists what would go, the space freed and a code; show the list to the user and only if they agree call again with confirm=. Deleted files cannot be recovered. Nothing is deleted while a print is running.

NameRequiredDescriptionDefault
kindYes
namesNo
confirmNo
older_than_daysNo

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so thoroughly. It discloses irreversibility, the two-step dry-run confirmation flow with a returned code, what the dry-run response contains, and the print-running safety guard.

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

Conciseness5/5

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

The description is dense but front-loaded and well structured. It moves from purpose to selection criteria to the confirmation workflow and finally the safety warning, with every sentence contributing necessary information.

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 destructive file-deletion tool with no annotations and no output schema, the description covers the critical missing context: destructive nature, confirmation protocol, response contents, irreversibility, and runtime blocking. An agent has enough information to call it safely and 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 description coverage is 0%, so the description must compensate. It explains names as values from printer_files, older_than_days as an age filter, and confirm as the code from the dry run. It gives kind values for prints and thumbnails but does not explicitly state the exact kind value for timelapse videos, leaving a minor gap on the required parameter.

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 states a specific verb and resource: delete files from the printer's SD card. It further distinguishes the supported file categories (timelapse videos, past prints, orphan thumbnails), making it clearly different from sibling delete_object, which operates on project objects.

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?

It explains how to select files, either by names from printer_files or by older_than_days, and gives a strong operational condition: nothing is deleted while a print is running. It does not explicitly name sibling tools or discuss when to prefer them, but the usage path is clear.

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

download_printer_fileA

Copy a file from the printer's SD card into the projects folder: a timelapse video (name from printer_files, or 'latest') or the file of a past print (kind='prints'). For a timelapse its last frame is shown too: the finished print. Read-only on the printer.

NameRequiredDescriptionDefault
kindNotimelapse
nameNolatest

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden: it usefully discloses that the operation is 'read-only on the printer' and that it writes a copy into the local projects folder, plus the side effect of extracting the last frame of a timelapse. It does not explain overwrite behavior if the target name already exists, permission requirements, or failure modes, which are significant gaps for a file-copy operation with zero annotation coverage.

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?

The description is short and front-loaded with the core action, then adds parameter behavior and the read-only safety note. The sentence about the timelapse's last frame is slightly awkward and could be clearer, but every clause is relevant and nothing is padded.

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

Completeness3/5

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

For a two-parameter tool with no output schema and 0% schema description coverage, the description covers purpose, parameter modes, and read-only status. It still leaves important operational details unstated: what the tool returns or where exactly in the projects folder the file lands, how name collisions are handled, and whether the downloaded file becomes a project or just a file.

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 0%, so the description must compensate, and it does explain both parameters: name is drawn from printer_files or defaults to 'latest' for timelapses, and kind='prints' selects a past-print file. It stops short of listing all valid kind values or clarifying what name should be when kind='prints', so it is helpful but not fully authoritative.

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 gives a specific verb and resource ('copy a file from the printer's SD card into the projects folder') and immediately enumerates the two supported targets: a timelapse video or a past print file. It also names the sibling tool printer_files as the source of valid names, so an agent can distinguish it from printer_files, delete_printer_files, and send_to_printer without opening a schema.

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?

It explicitly states which case uses which mode: timelapse videos use name from printer_files or 'latest', while past-print files use kind='prints'. However, it does not state when not to use this tool or name a clear alternative for related operations (e.g., listing files vs deleting them), leaving some inference to the agent.

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

duplicate_objectB

Copy an object copies times onto free spots (same plate unless plate is given).

NameRequiredDescriptionDefault
plateNo
copiesNo
objectYes

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It discloses that copies are placed onto free spots and default to the same plate, but it does not explain what happens if there are insufficient free spots, whether object settings are copied, whether the source object remains, or what the operation returns.

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

Conciseness5/5

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

The description is a single efficient sentence with the core action and default placement behavior front-loaded. Every phrase contributes to understanding the tool.

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

Completeness3/5

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

For a simple three-parameter mutation tool, the description covers the main action and placement semantics. However, without annotations or an output schema, it leaves important failure and result behavior unstated.

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 0%, so the description must compensate. It gives useful meaning for all three parameters: the object being copied, the number of copies, and the optional target plate, though it does not clarify plate indexing or the default plate value beyond what the schema states.

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 and resource: copying an object a given number of times onto free spots. It is clear what the tool does, but it does not explicitly distinguish it from nearby siblings such as copy_object_settings or fill_plate.

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?

The default behavior of keeping copies on the same plate unless `plate` is given implies when the tool is useful. However, it gives no explicit guidance on when to choose this over alternatives like copy_object_settings, arrange, or fill_plate.

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

edit_presetA

Change settings of one of your user presets directly, without a project (a backup copy is kept). kind: filament | process | printer. values: {"key": "value"}, e.g. {"pressure_advance": "0.025", "enable_pressure_advance": "1"} or {"nozzle_temperature": "215"}; a list gives one value per extruder variant (Standard / High Flow nozzle); null removes the key, so the value comes from the parent preset again. Bambu system presets are read-only: save a user preset from them first. Bambu Studio sees the change after it restarts, and uploads it to your Bambu cloud if the preset is there.

NameRequiredDescriptionDefault
kindYes
nameYes
valuesYes

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and delivers: a backup copy is kept, null values revert to the parent preset, changes only appear in Bambu Studio after a restart, and the change is uploaded to Bambu cloud if the preset exists there. These are exactly the side-effect, reversibility, and propagation facts an agent needs before mutating shared state.

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?

Purpose and the backup guarantee are front-loaded in the first clause, with semantics following. The content is dense but nearly all of it earns its place; the extruder-variant detail is essential rather than filler, though the formatting is one unbroken block.

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 mutation tool with no annotations, no output schema, and a free-form nested object parameter, the description covers reversibility, propagation delays, cloud sync, and the read-only system-preset constraint. Combined with the parameter detail, an agent has enough to call it correctly and anticipate consequences.

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 0%, and the description compensates for two of three parameters in depth: it enumerates the 'kind' values (filament | process | printer) and fully specifies the 'values' object, including per-extruder list form, null-to-remove semantics, and concrete examples. The 'name' parameter's matching behavior (exact string, case sensitivity) is never addressed, which keeps it below a 5.

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 and resource ('Change settings of one of your user presets') plus a scope qualifier ('directly, without a project'), which separates it from the save_*_preset and rename_preset siblings by implication. It does not explicitly name those siblings, so the distinction is clear but not spelled out.

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?

It gives a concrete precondition and exclusion: 'Bambu system presets are read-only: save a user preset from them first', which tells the agent when this tool will not work and what to do instead. It stops short of naming alternatives such as rename_preset, delete_preset, or list_user_presets for related operations, so guidance is clear but incomplete.

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

export_stlA

Save objects as STL files (e.g. to print them on other printers of a farm, or to share them): the named objects, all of a plate, or all of the project. One file per object, or one_file=True for all of them where they are on the plate. Negative parts (holes) are cut out; colors and settings are not part of an STL.

NameRequiredDescriptionDefault
plateNo
objectsNo
one_fileNo

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does real work: it discloses that negative parts/holes are cut out and that colors and settings are NOT carried into the STL, plus the one-file-per-object vs consolidated grouping behavior. It does not say where files are written or what the call returns, which is the remaining gap.

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 action and resource, then scope options, then the behavioral caveats; nearly every clause carries information. The parenthetical farm/share rationale is slightly verbose but justifies usage.

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 3-parameter tool with no annotations and no output schema, the description covers selection scope, grouping, and geometry semantics well. The notable omission is any indication of the output (file locations or return value), which an agent would want given there is no output schema.

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 0% (titles only), so the description must compensate, and it does: 'objects' is explained as named objects, 'plate' as selecting all of a plate, and 'one_file=True' is described as merging objects that are on the plate. It does not clarify plate index conventions, the default plate 0, or whether object names or IDs are accepted.

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 and resource ('Save objects as STL files') and immediately enumerates the three export scopes: named objects, a whole plate, or the entire project. This is clearly distinguishable from nearby siblings like save_project, slice_project, and replace_with_stl.

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?

Gives concrete motivation for using it ('to print them on other printers of a farm, or to share them') and explains the scope choices an agent must pick between. It stops short of naming alternatives or stating when NOT to use it (e.g. versus save_project or replace_with_stl).

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

filament_colorsB

Official colors (name, hex) of a Bambu filament line, e.g. 'Bambu PLA Basic @BBL X1C'.

NameRequiredDescriptionDefault
presetYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations and no output schema, the description carries the full burden; it does disclose that the result is a set of name/hex pairs, which is the key behavioral fact. However it omits what happens with an unknown preset, whether the '@BBL X1C' suffix is required, and whether this is static reference data or requires a connected printer/profile.

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?

A single compact sentence with the resource and return shape front-loaded and a useful inline example. Nothing extraneous, though the phrasing is slightly compressed to the point of ambiguity about what 'line' means.

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

Completeness3/5

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

For a one-parameter lookup with no output schema, the description covers the resource and roughly the return contents, which is close to adequate. It falls short on the exact preset string contract and failure behavior, which an agent needs to invoke it reliably.

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 0% for the single required 'preset' parameter, so the description must compensate. It partially does by giving one literal example ('Bambu PLA Basic @BBL X1C') that reveals the expected string format, but never states that preset = the filament line/preset name or whether prefix matching is allowed.

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 concrete resource and return shape: 'Official colors (name, hex) of a Bambu filament line.' An agent can tell this is a read lookup of filament color options, distinct from sibling tools like search_presets or save_filament_preset, though the differentiation is by implication rather than explicit contrast.

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

Usage Guidelines2/5

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

There is no statement of when to call this versus search_presets, list_user_presets, or get_setting, and no prerequisites or exclusions. The example preset string hints at the expected input but gives no guidance on selection.

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

fill_plateA

Fill the free area of an object's plate with copies of it, like Bambu Studio's Fill bed with copies. copies: 0 = as many as fit, N = at most N. Shapes nest by their real outline (brim and brim ears counted), and rotate=True also tries turning them by rotation_step degrees. The original is placed again together with the copies (more fit), unless keep_original=True; the other objects on the plate stay where they are.

NameRequiredDescriptionDefault
gapNo
copiesNo
objectYes
rotateNo
keep_originalNo
rotation_stepNo

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and delivers real behavioral detail: nesting respects the real outline including brim and brim ears, rotation is attempted in rotation_step increments, and other objects on the plate are left untouched. It omits failure modes (e.g., object not found, plate full) and whether the plate must be active.

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 tool's action, then parameter semantics in compact clauses; every sentence carries information. It is dense in a good way, though the multi-clause run-on sentence takes some parsing.

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 6-parameter mutation tool with no annotations and no output schema, the description covers placement logic, rotation behavior, and side effects well. The gaps are the unexplained gap parameter and no indication of what is returned or how success/failure is reported.

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 0%, so the description must compensate, and it does for most parameters: 'copies: 0 = as many as fit, N = at most N', rotate paired with rotation_step degrees, and keep_original's effect on placing the original again. Only 'gap' and the meaning of the 'object' identifier are left entirely to inference.

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?

States a specific verb and resource: fill the free area of an object's plate with copies of it, anchored to a known analog (Bambu Studio's 'Fill bed with copies'). This is clearly distinct from duplicate_object or arrange, though no sibling 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 Guidelines3/5

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

The Bambu Studio analogy implies the use case, and the copies/rotate/keep_original notes hint at configuration, but there is no explicit guidance on when to pick this over arrange, duplicate_object, or copy_object_settings, nor any prerequisites.

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

get_projectB

Current project: printer, process, filament slots, plates, objects (id, name, center, size, filaments), setting overrides and warnings. If the project was saved in Bambu Studio in the meantime it is re-read first.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; it does disclose a genuinely useful behavioral trait — that the project is re-read if it was saved in Bambu Studio in the meantime, which signals freshness/consistency semantics. However it never states read-only safety, whether an error occurs when no project is open, or anything about payload size/cost.

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?

Two sentences, no filler, and the core content is front-loaded. The first sentence is a dense comma-separated list that is slightly cryptic (bare 'printer, process'), but nothing is wasted.

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

Completeness3/5

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

With no output schema and no annotations, the description is the only documentation, and it partially compensates by enumerating returned fields and stating the re-read behavior. It still omits the read-only guarantee, failure modes when no project is loaded, and how large/nested the object payload is.

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?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The enumerated field list in the description is effectively return-value documentation, which the schema does not provide.

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

Purpose3/5

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

The description is a noun-phrase inventory of what the project object contains (printer, process, filament slots, plates, objects, overrides, warnings) rather than a verb+resource statement; combined with the name get_project the intent is inferable, but the agent must do the work. It does nothing to distinguish this state reader from siblings like bambu_status, list_printers, or get_setting.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no statement of prerequisites (e.g. must a project be open), and no routing to alternatives such as bambu_status or get_setting. The only conditional sentence is about re-reading, which is behavioral rather than usage guidance.

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

get_purge_volumesB

Purge (flush) volumes between filament slots, in mm³, and the multiplier: the filament wasted at each change on the prime tower (or into infill/objects, see set_purge_volumes).

NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. It adds useful domain context about units (mm³), filament changes, prime tower, and infill/objects, but it does not explicitly state that it is a read-only getter or describe the output structure.

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?

It is a single sentence with little wasted text, but it is a dense run-on with nested parentheses and a colon rather than being front-loaded with a clear action. It is concise but structurally awkward.

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

Completeness3/5

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

For a zero-parameter getter with no output schema, the description should clearly say what is returned. It conveys the returned concepts (volumes and multiplier) and their meaning, but it does not explicitly describe the return format or confirm that it retrieves current settings.

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?

The tool has zero parameters, so baseline 4 applies. There are no parameters whose semantics need explanation in the description.

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

Purpose3/5

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

The description identifies the resource as purge/flush volumes between filament slots and the multiplier, but it is written as a noun phrase rather than stating 'gets' or 'returns' current values. The verb is only implied by the tool name, so the purpose is understandable but not crisply stated.

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

Usage Guidelines2/5

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

The only guidance is a parenthetical cross-reference to set_purge_volumes, which indicates an alternative exists but does not state when to use this tool versus the setter. There is no explicit read-vs-write guidance for the agent.

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

get_settingB

Current value of a print/filament/printer setting, where it comes from, and the preset value.

NameRequiredDescriptionDefault
keyYes

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully describes the return content as the current value, its source, and the preset value, but it does not explicitly state that the operation is read-only, nor does it mention permissions, errors, or other operational constraints.

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?

The description is a single efficient sentence with no redundant filler. It is appropriately sized for a simple getter, though it front-loads the return characteristics rather than an explicit action verb.

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

Completeness3/5

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

For a simple one-parameter getter without an output schema, the description partially covers return values (current value, source, preset value). However, it omits key format details and any usage context, so the agent is not fully equipped to invoke it correctly without guessing the key syntax.

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

Parameters2/5

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

The single required parameter 'key' has 0% schema description coverage, so the description should compensate. It only hints at setting categories ('print/filament/printer') but gives no key format, examples, or naming conventions, leaving the parameter semantics largely unexplained.

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 identifies a specific resource (a print/filament/printer setting) and what will be returned (current value, origin, preset value). It implies a read operation through 'Current value' and is distinguishable from set_setting/reset_setting, though it does not explicitly name those siblings.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as set_setting or reset_setting. The description only states what the tool returns, leaving the agent to infer its role from the name and context.

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

import_modelB

Put an STL, OBJ or 3MF on a plate. Without x/y it goes to the free spot closest to the center. From a 3MF every object is imported (with its parts and filament assignments).

NameRequiredDescriptionDefault
xNo
yNo
nameNo
pathYes
plateNo
scaleNo
filamentNo
rotate_zNo

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden, and it does add real behavior: auto-placement near center when x/y are omitted, and that a 3MF imports every object with parts and filament assignments. It omits critical mutation facts: whether existing plate contents are preserved or overwritten, what happens on a missing/invalid file, and whether the operation is undoable.

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?

Three short sentences, front-loaded with the core action, and each adds information: formats, placement fallback, 3MF multi-object behavior. No filler or repetition of the name.

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?

An 8-parameter mutation tool with no annotations, no output schema, and 0% schema coverage should explain scale, rotation, target plate, and naming. Those gaps mean an agent cannot confidently call this beyond the simplest path-only invocation.

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

Parameters2/5

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

Schema description coverage is 0%, so all 8 parameters need the description to explain them. Only x/y (optional, auto-place) and filament (via 3MF assignments) are touched; path, plate, scale, rotate_z, and name are entirely undocumented anywhere, leaving half the surface unexplained.

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?

States a specific verb and resource ('Put an STL, OBJ or 3MF on a plate') and enumerates supported formats, which implicitly separates it from add_shape, duplicate_object and replace_with_stl. It does not explicitly name a sibling, so an agent must infer the boundary rather than read it.

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?

The second sentence gives a clear conditional rule for the optional x/y case, which is genuine usage guidance. However, there is no guidance on when to choose this over add_shape, duplicate_object or replace_with_stl, and no stated prerequisites such as where the file must live.

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

lay_flatB

Rotate an object so one of its flat faces lies on the bed: face 1 = the biggest flat face, 2 = the second biggest, and so on.

NameRequiredDescriptionDefault
faceNo
objectYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full disclosure burden. It does clarify the geometric outcome (a face ends up on the bed) and implies a non-arbitrary deterministic result, but it says nothing about whether existing rotation is overwritten, whether the object stays in place or is re-seated on Z=0, or whether the operation is undoable.

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

Conciseness5/5

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

A single sentence with the key outcome front-loaded and the parameter ordering rule appended where it is immediately needed. Nothing is redundant or padded.

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

Completeness3/5

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

For a two-parameter mutation tool with no annotations and no output schema, the description covers the core semantics but leaves the mutation footprint, failure modes with non-flat or ambiguous geometry, and the post-call state unaddressed. Adequate to attempt the call, short of complete.

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 0%, so the description must supply all meaning, and it does so for the non-obvious parameter: 'face' is defined as an index ordered by descending flat-face area, with 1 being the largest. Only the 'object' parameter goes unexplained, which is acceptable since its name is self-evident.

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 gives a specific verb ('Rotate') and resource ('an object') plus the exact resulting state ('one of its flat faces lies on the bed'), which is far more informative than a bare name restatement. It stops short of differentiating itself from nearby siblings such as orient_object, align_objects, or transform_object, so an agent still has to infer the split.

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

Usage Guidelines2/5

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

There is no statement of when to prefer this over orient_object, align_objects, or transform_object, nor any prerequisite such as an active object selection. The only implicit context is that an object must be flat-faced and the caller wants it bed-aligned.

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

list_printersB

Printer short names that can be used anywhere a printer is asked (a full machine preset name works too).

NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose the shape of the return data (short names, with full machine preset names also acceptable). However it never says this is a read-only enumeration, whether results are scoped to installed/available printers, or how the list is ordered.

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?

One short sentence with no waste, and the key fact (short names usable as printer identifiers) is front-loaded. It reads as a fragment rather than a complete statement of what the tool does, which slightly undercuts clarity.

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 zero-parameter tool with no output schema, describing the returned identifiers is the essential missing piece, and the description supplies it along with the interchangeability of preset names. Only the enumeration's scope and ordering are left unstated, which is a minor 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?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The parenthetical about full preset names is a small extra hint for callers passing the results into other tools.

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

Purpose3/5

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

The description is a noun phrase that identifies the resource (printer short names) but never states the action; it relies on the tool name 'list_printers' to convey that a list is returned. It does distinguish the output from full machine preset names, which helps separate it from preset-related siblings, but the purpose itself is only implied.

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

Usage Guidelines2/5

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

It hints at downstream usage ('can be used anywhere a printer is asked') but gives no guidance on when to call this versus siblings like list_user_presets, search_presets, or set_printer. No prerequisites, no exclusions, no alternative routing.

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

list_user_presetsA

Your own Bambu Studio presets (kind: filament | process | printer; empty = all): the preset each one inherits and what it changes, whether it is in your Bambu cloud (then only Bambu Studio can delete or rename it), and which presets inherit it. To find system presets too, use search_presets.

NameRequiredDescriptionDefault
kindNo

TDQS

A4.8/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does well: it discloses that results include inheritance, changes, cloud membership, and reverse dependencies, and warns that cloud presets can only be deleted or renamed in Bambu Studio. It stops short of explicitly stating read-only safety or permission requirements, which are implied by 'list' but not stated.

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

Conciseness5/5

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

Two sentences, front-loaded with the core action and scoped parameter, then the return contents and sibling alternative. The density is high but every clause contributes necessary context.

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?

No output schema exists, so the description must convey return meaning; it does by describing inherited preset, changed settings, cloud status, and dependent presets. For a single optional parameter list tool, this is complete enough for correct invocation.

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

Parameters5/5

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

Schema coverage is 0% and the schema only declares kind as an unconstrained string with default empty. The description compensates fully by naming the allowed values filament, process, printer and explaining that empty means all.

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 and resource: list the user's own Bambu Studio presets, scoped by kind. It also explicitly distinguishes this from search_presets for system presets, so an agent can select between them without opening schemas.

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?

Explains that kind filters to filament, process, or printer, and empty returns all. It also names the alternative search_presets for finding system presets too, giving clear routing guidance.

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

make_first_layer_testA

Add a plate with the first height mm of the objects of a plate (or of the listed objects): a short print to check bed adhesion and the first layers before a long print. Slice it with slice_project(plate=).

NameRequiredDescriptionDefault
plateNo
heightNo
objectsNo

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations at all, the description carries the full burden and does reasonably well: it discloses that the tool mutates project state by adding a new plate, that the geometry is truncated to the first `height` mm, and that the result is not printable until sliced. It does not state what happens to the source plate or what identifying information the new plate gets.

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

Conciseness5/5

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

Three short clauses, zero filler: the operation is front-loaded, the motivation follows, and the required next call closes it out. 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 3-parameter mutation tool with no annotations and no output schema, the description supplies the operation, the intent, the truncation semantics and the required follow-up slicing step. An agent can call this correctly and knows what to do next.

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 0%, so the description must compensate, and it does: `height` is defined in mm of the first layers, `plate` is implicitly the source plate whose objects are used, and `objects` is the optional explicit list. It does not mention the defaults (plate=1, height=0.8) or what an empty `objects` list means.

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 gives a concrete verb and resource ('Add a plate with the first `height` mm of the objects') and states the purpose (bed-adhesion / first-layer check). It is clearly distinct from sibling test generators like make_temperature_tower or make_flow_test, though it never names those alternatives explicitly.

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?

It says when to use it ('a short print to check bed adhesion and the first layers before a long print') and gives the required follow-up call: slice_project(plate=<new plate>). That is a clear workflow, but there are no explicit exclusions or prerequisites (e.g. when to prefer a full slice preview instead).

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

make_flow_testA

Add a plate of flow-rate squares for a filament slot, each printed with a different flow modifier (percent) engraved on top. Pass 1: -20..+20 step 5. Pass 2: around the best one, e.g. low=-4 high=4 step=1. Pick the square with the smoothest top surface (no gaps, no ridges).

NameRequiredDescriptionDefault
lowNo
highNo
stepNo
filamentNo

TDQS

A3.7/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It does disclose the side effect of adding a plate of objects and explains how to read the results (smoothest top = best), but omits whether it creates a new plate or modifies the current one, what filament/printer prerequisites apply, and whether printing the plate is required.

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?

Three sentences, front-loaded with the purpose, then the procedural detail in order of use. Slightly extra prose in the second sentence, but every line contributes actionable information.

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

Completeness3/5

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

Adequate for a tool with no annotations, no output schema and an undocumented schema, since it covers the calibration workflow and most parameters. However, the unexplained 'filament' parameter and the unstated plate-creation side effect leave an agent guessing about prerequisites.

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 0%, so the description must compensate, and it does well for three of four parameters, giving concrete low/high/step values for both passes. The 'filament' slot parameter (default 1) is never explained, leaving one gap.

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?

States a specific verb and resource: 'Add a plate of flow-rate squares for a filament slot', each engraved with a different flow modifier. An agent can tell this is a calibration-plate generator, distinct in substance from towers or retraction tests. It does not explicitly contrast with the closely related make_max_flow_test, so sibling differentiation is only implicit.

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?

Provides a concrete two-pass workflow ('Pass 1: -20..+20 step 5. Pass 2: around the best one') plus a selection criterion for the resulting squares. That is strong procedural guidance for how and when to use the tool, but no explicit alternatives or exclusions (e.g. when to prefer make_max_flow_test) are named.

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

make_max_flow_testB

Max volumetric speed test for a filament slot, as a separate project file (the open project is not changed): single-wall cylinders, each printed at the wall speed that gives the volumetric speed Q (mm³/s) on its tag. Default range: around the filament's current limit. The highest Q without gaps or weak walls is the max; use a bit less (about 90%) as filament_max_volumetric_speed.

NameRequiredDescriptionDefault
lowNo
highNo
stepNo
filamentNo

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full load; it does disclose a key side effect (writes a separate project file, leaves the open project untouched). It does not say whether the new project is opened/activated, what it returns (name/id), how long the test takes, or what printer/material prerequisites exist.

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 purpose and the non-destructive scoping note, then the mechanics, then interpretation guidance. The interpretation sentence is long but earns its place by telling the agent how to convert the result into a setting.

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

Completeness3/5

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

For a 4-parameter calibration generator with no annotations and no output schema, the description covers intent, side effects and result interpretation reasonably. It leaves unclear what the tool returns (project reference) and the exact semantics of the undocumented numeric parameters.

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 0%, so the description must compensate. It does partially: it establishes that low/high/step are volumetric speed Q values in mm³/s and that the filament parameter refers to a filament slot. But it never maps names to parameters explicitly or explains the units/meaning of `step` or how a slot index is chosen.

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?

States a specific verb and resource: generates a max volumetric speed test as a separate project file with single-wall cylinders. It also clarifies scope (the open project is not changed), which an agent needs. It doesn't explicitly name sibling calibration tools (make_flow_test, make_vfa_test, make_pa_tower), leaving the agent to infer the distinction.

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?

"Default range: around the filament's current limit" and the 90% recommendation give useful operational context for choosing values and interpreting results. However, there is no explicit when-to-use/when-not guidance relative to make_flow_test or make_vfa_test, which are the obvious alternatives an agent would weigh.

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

make_pa_towerB

Add a plate with a pressure advance (flow dynamics) tower: a thin square tube printed fast, the K value grows by step every millimeter. Find the height with the sharpest corners and no gaps: K = start + floor(height) * step. When sending it, turn off the printer's automatic flow dynamics calibration.

NameRequiredDescriptionDefault
endNo
stepNo
startNo
filamentNo

TDQS

B3.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does meaningful work: it discloses the generated geometry, the K-value progression, how to read the result, and a non-obvious side constraint (the printer's automatic flow dynamics calibration must be off when the job is sent). Gaps remain: it does not say whether the plate is added to the current project, whether existing plates are affected, or whether a printer must be selected first.

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?

Three sentences, front-loaded with what is created, then the interpretation formula, then the caution. Almost no filler, though the pronoun in 'When sending it' requires the reader to infer that 'it' means the sliced job or plate.

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

Completeness3/5

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

For a 4-parameter object-creation tool with no annotations and no output schema, the description covers the what and the how-to-read but leaves the `end` and `filament` parameters and the scope of the side effect (current project? plate index?) unspecified. Enough to call it correctly in the common case, not enough to be confident across cases.

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

Parameters2/5

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

Schema coverage is 0%, so the description must explain all four parameters. It gives real meaning to `step` ('the K value grows by `step` every millimeter') and embeds `start` in the formula, but `end` is never mentioned and its meaning is genuinely ambiguous against the formula (max K? max height?), and `filament` is not addressed at all. Two of four parameters remain undocumented in both schema and description.

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?

States a specific verb and resource: 'Add a plate with a pressure advance (flow dynamics) tower', plus a concrete physical description ('a thin square tube printed fast'). The resource name alone distinguishes it from make_temperature_tower, make_flow_test, and make_vfa_test, but it never explicitly says how it differs from those calibration siblings.

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 interpretation guidance ('Find the height with the sharpest corners and no gaps') tells the agent what the output is for, and there is one explicit operational instruction about turning off automatic flow dynamics calibration when sending. However, there is no explicit statement of when to choose this tower over make_flow_test or make_max_flow_test, nor any prerequisites.

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

make_retraction_testA

Stringing test for a filament slot: one small separate project per retraction length (Bambu printers cannot change retraction during a print). Print them one after the other and keep the shortest length without strings between the two pillars; then set_setting('filament_retraction_length', value, slot) or save_filament_preset.

NameRequiredDescriptionDefault
lengthsNo
filamentNo

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose a key non-obvious behavior: multiple separate projects are created because Bambu printers cannot change retraction mid-print, and the outputs must be printed sequentially. It also names the follow-up mutation path. It omits whether existing projects are affected, whether projects are saved/opened, and what the call returns.

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?

Three dense sentences, front-loaded with the purpose and followed by the workflow and the exact follow-up calls. The parenthetical justification earns its place because it explains the multi-project design. Minor slack in the run-on structure of the last sentence.

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

Completeness3/5

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

For a 2-parameter, annotation-free tool with no output schema, the description covers the purpose and the post-test action but not the call's own outcome: how many projects/plates are created, whether they are named, whether they are saved or opened, and what the caller gets back. An agent would still need to guess at the side effects before invoking it.

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 0%, so the description must compensate. It implies the `lengths` array ('one project per retraction length') and hints that `filament` is the slot ('for a filament slot'), but never states units, ordering, or what happens when `lengths` is null (the default), leaving the most important defaulting behavior undocumented.

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 names a specific verb+resource: it generates a stringing/retraction test with one small project per retraction length for a filament slot. That is clearly distinguishable from the sibling test generators (make_temperature_tower, make_flow_test, make_pa_tower, make_vfa_test). It stops short of explicitly contrasting itself with those siblings, but the purpose is unambiguous.

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?

It gives a concrete workflow: print the tests one after another, pick the shortest length with no strings between the two pillars, then apply it via set_setting('filament_retraction_length', value, slot) or save_filament_preset. That is strong when-and-how guidance. It does not state prerequisites (e.g. a printer/AMS/filament must be selected) or when to prefer another test tool instead.

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

make_temperature_towerB

Add a plate with a temperature tower for a filament slot: one 8 mm block per temperature (hottest at the bottom), each with a bridge and its temperature engraved on the front. Defaults: the filament's temperature +15 down to -25 °C, within its allowed range. Pick the block with the best bridge, surface and least stringing.

NameRequiredDescriptionDefault
endNo
stepNo
startNo
filamentNo

TDQS

B3.4/5.0
Behavior4/5

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

With no annotations, the description does real work: it discloses the generated geometry (one 8 mm block per temperature, hottest at the bottom, engraved temperature and bridge) and how defaults are derived ('filament's temperature +15 down to -25 °C, within its allowed range'). It does not say whether it appends to the current plate or creates a new one, which would be valuable for a plate-creating mutation.

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?

Three compact sentences that front-load the action and follow with geometry, defaults, and evaluation advice. Dense with little waste, though the final sentence is workflow advice rather than tool-selection information.

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

Completeness3/5

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

For a 4-parameter, no-annotation, no-output-schema tool, the description covers purpose, generated geometry, and default behavior reasonably but leaves parameter semantics largely undefined and says nothing about what the call returns or how it interacts with plates. Adequate but with clear gaps.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry all four parameters, but it only gestures at 'filament' and at the default temperature span. The meanings of start, end, and step are never defined, and the stated defaults ('+15 down to -25 °C') do not map cleanly onto the schema defaults of start=0, end=0, step=5, leaving the agent uncertain whether 0 means auto or literal.

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 and resource: 'Add a plate with a temperature tower for a filament slot', plus concrete geometry (8 mm blocks, hottest at bottom). It does not explicitly distinguish itself from the many sibling test generators (make_pa_tower, make_vfa_test, make_flow_test, make_retraction_test), though 'temperature tower' implies the difference.

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?

It gives useful post-print guidance ('Pick the block with the best bridge, surface and least stringing') and explains the default range, which implies when the tool is appropriate. But there is no explicit selection guidance versus the sibling test tools nor stated prerequisites such as needing an existing plate or filament slot.

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

make_vfa_testB

Add a plate with a VFA test (vertical fine artifacts: fine vertical ripples on walls that some speeds cause): one block per outer wall speed from start to end mm/s, the speed engraved on top. Look at the long faces with light from the side and pick the fastest speed without ripples for outer_wall_speed. Bambu Studio's VFA tower changes the speed inside one object; here each block has its own speed.

NameRequiredDescriptionDefault
endNo
stepNo
startNo
filamentNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It discloses that a plate is added and describes the generated blocks and engraved speed labels, but it does not mention project state requirements, side effects on existing plates, or permissions.

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-loads the action and includes only relevant details about the test structure, interpretation, and Bambu Studio distinction. The prose is dense and nested in one long parenthetical, but no sentence is clearly wasteful.

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

Completeness3/5

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

For a calibration-test generator with no annotations, no output schema, and 0% schema description coverage, the description gives strong domain context and interpretation guidance. It remains incomplete on parameter semantics, especially filament and step, and on prerequisites for adding a plate.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for four undocumented parameters. It explains the start-to-end speed range and the per-speed block concept, but never explains the step parameter explicitly or the filament parameter at all.

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?

States a specific verb and resource: add a plate containing a VFA test, and explains the generated block structure. It does not explicitly name or differentiate itself from sibling calibration tools such as make_flow_test or make_temperature_tower, but the purpose is otherwise unambiguous.

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?

Provides useful post-test guidance: inspect long faces with side lighting and choose the fastest speed without ripples for outer_wall_speed. It does not explicitly say when to choose this test over sibling calibration tests or what prerequisites are required.

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

measure_betweenA

Distance between two objects or two parts (part_a / part_b; the same object twice with two parts measures the clearance between them), in plate mm: the smallest gap with about where it is, the distance between their centers, the gap along each axis between their outer boxes (negative = they overlap along it) and, if they overlap, the volume they share.

NameRequiredDescriptionDefault
part_aNo
part_bNo
object_aYes
object_bYes

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses units (plate mm), the sign convention (negative axis gap = overlap along that axis), and that shared volume is only reported when objects overlap. It never explicitly states the operation is non-mutating, but 'measure' plus the read-only framing makes that clear enough.

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?

A single dense sentence that front-loads the core purpose before listing return values. Every clause carries information, though the parenthetical nesting makes it slightly harder to parse on first read.

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?

There is no output schema, so the description must describe the return values, and it does so thoroughly — minimum gap with location, center distance, per-axis box gaps, and overlap volume. Complete enough for an agent to call it and interpret results; only the interaction with measure_object remains unaddressed.

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 0%, so the description must compensate, and it does for the non-obvious parameters: it explains that part_a/part_b select sub-parts and that reusing the same object with two parts measures internal clearance. object_a/object_b are self-evident from their names; the only gap is part-name format or behavior on invalid part names.

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?

States a specific verb and resource — distance between two objects or two parts — and enumerates exactly which measurements are produced. It implicitly distinguishes itself from the sibling measure_object by requiring two operands, but never names that sibling or says so explicitly.

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?

The parenthetical gives one concrete usage recipe: pass the same object twice with two different parts to get the clearance between them. Beyond that there is no guidance on when to prefer this over measure_object, or what preconditions (both objects on the same plate?) apply.

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

measure_objectA

Measure an object (or its part part), in plate mm: size and where it is, each part's size, volume and surface, the area standing on the bed, the smallest gaps between its separate pieces or parts (the clearance of print-in-place joints, with where), and walls thinner than the nozzle's line width (or min_wall mm), with where and at which heights. z >= 0: also the cross-section at that height above the bed, every island with its length, width and thickest point and its holes (how long and thick a bar is, how wide a hole is).

NameRequiredDescriptionDefault
zNo
partNo
objectYes
min_wallNo

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does substantial work: it discloses the complete measurement set returned, the conditional cross-section behavior triggered by z >= 0, the fallback rule that thin-wall detection uses the nozzle line width unless min_wall is given, and that locations/heights are reported alongside findings. It does not state that the operation is non-destructive or anything about cost/runtime, which keeps it from 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.

Conciseness3/5

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

It is a single long run-on sentence built from stacked clauses, so the reader must parse a wall of commas to extract the report contents. The core purpose is front-loaded, and every clause carries information, but better enumeration/line breaks would materially improve scanability.

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?

There is no output schema, so the description must describe return values, and it does so thoroughly — down to island length/width/thickest point and hole dimensions. Combined with the parameter semantics, an agent has enough to call this correctly; only the absence of any safety/side-effect statement leaves a small 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 coverage is 0%, so the description must compensate, and it largely does: `part` is defined ('or its part `part`'), `z` is given meaning (cross-section height above bed, with the negative/default case implied), and `min_wall` is defined (wall thickness threshold in mm, defaulting to nozzle line width). Only `object` is left to inference, which is acceptable given its name.

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 opens with a specific verb and resource ('Measure an object ... in plate mm') and enumerates exactly what is reported: dimensions, position, per-part volume/surface, bed-contact area, joint clearances, thin walls. An agent can distinguish it from measure_between by the object-centric scope, though the sibling is never named.

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 only implied by the content ('if you want measurements of an object'). There is no explicit statement of when to prefer this over measure_between, no prerequisites, and no exclusion of cases. The only real conditional guidance is for `z` (cross-section only when z >= 0), which is parameter-level, not tool-level.

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

merge_objectsA

Join objects of the same plate into one object with several parts, where they are now, like Bambu Studio's Assemble: they move and print as one (e.g. a model and its base in another color). Each part keeps its filament and painting; the merged object takes the first object's settings (the others' are listed if they differ).

NameRequiredDescriptionDefault
nameNo
objectsYes

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden well: it discloses that positions are retained, parts keep filament and painting, and the merged object inherits the first object's settings with differing settings listed. It stops short of stating reversibility, whether originals are removed, or any permission/constraint failures.

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?

The action is front-loaded in the first sentence, and the analogy and settings-inheritance details each add useful information. It is somewhat dense but not padded.

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

Completeness3/5

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

For a mutation tool with no annotations, no output schema, and 0% schema coverage, the description explains the merge behavior but omits parameter documentation and key constraints such as minimum object count, handling of objects on different plates, and undo/irreversibility.

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

Parameters2/5

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

Schema description coverage is 0%, and the description never explains the 'objects' parameter's expected format or the optional 'name' parameter. It only indirectly hints that array order matters via 'the merged object takes the first object's settings.'

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?

States a specific verb and resource: 'Join objects of the same plate into one object with several parts.' The Bambu Studio Assemble analogy and model/base example make the operation concrete, though it does not explicitly distinguish itself from siblings like boolean_objects or split_object.

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?

Gives clear usage context: use when objects should move and print as one while each part keeps its filament and painting, such as a model and a differently colored base. It does not state when not to use it or name alternative tools.

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

mirror_objectC

Mirror an object across its own center (axis x, y or z).

NameRequiredDescriptionDefault
axisNox
objectYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not clarify whether mirroring modifies the object in place, creates a mirrored copy, or affects linked instances, nor does it mention undo behavior or any required selection state. The axis and center semantics are useful but insufficient for a mutation tool with zero annotation coverage.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no wasted words. The operation and axis options are stated immediately and nothing is repeated from structured fields.

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 mutation tool with no annotations, no output schema, and 0% schema parameter coverage, the description is too thin. It omits whether the operation mutates in place, what happens on failure, and what 'object' refers to, leaving the agent without enough context to invoke the tool confidently.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It meaningfully explains the axis parameter as x, y, or z, but it never explains what kind of identifier 'object' expects or how the default axis behaves. The most important parameter remains undocumented.

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 and resource: 'Mirror an object across its own center', and adds the scope 'axis x, y or z'. It is clearer than the bare name, but it does not explicitly distinguish the tool from nearby siblings such as transform_object, orient_object, or duplicate_object.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance, no prerequisites, and no alternatives. It implies the operation is for mirroring but never tells the agent when to choose it over transform_object, duplicate_object, or align_objects.

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

move_objectA

Move an object (by name or id): absolute x/y, relative dx/dy, rotate around Z by rotate_z degrees, or move it to another plate (it keeps x/y if given, otherwise it goes to a free spot).

NameRequiredDescriptionDefault
xNo
yNo
dxNo
dyNo
plateNo
objectYes
rotate_zNo

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that plate moves preserve x/y when supplied and otherwise choose a free spot, but it does not cover prerequisites, mutation side effects, undo behavior, or what the call returns.

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

Conciseness5/5

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

The definition is a single compact sentence that front-loads the main action and then efficiently enumerates the supported modes. There is no filler.

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

Completeness3/5

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

For a 7-parameter mutation tool with no annotations and no output schema, the description is adequate but incomplete. It lacks details on coordinate units, default plate semantics, preconditions, and side effects.

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 0%, so the description must compensate, and it does explain the roles of object, x/y, dx/dy, rotate_z, and plate. It still omits coordinate units, constraints, and what the default plate value 0 means.

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 and resource ('Move an object') and enumerates the supported move modes: absolute x/y, relative dx/dy, Z rotation, and plate transfer. It is clear what the tool does, but it does not explicitly distinguish itself from related siblings such as transform_object, align_objects, or arrange.

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?

It explains when to use the different parameter modes, such as absolute x/y versus relative dx/dy versus plate transfer with optional x/y preservation. However, it gives no explicit guidance about when to choose this tool instead of transform_object, align_objects, or arrange.

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

new_projectB

Start an empty project. filaments: AMS slots in order, e.g. [{"preset": "Bambu PLA Basic", "color": "#000000"}, {"preset": "eSUN PLA+", "color": "#FFFFFF"}]. A filament name without '@...' is matched to the printer automatically. The build plate type is the one picked in Bambu Studio for this printer (change it with set_setting('curr_bed_type', ...)).

NameRequiredDescriptionDefault
nameYes
printerNoP1S
processNo
filamentsNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations the description carries the full burden. It usefully discloses that filaments map to AMS slots in order, that names without '@...' are auto-matched, and that bed type is inherited from Bambu Studio settings — but it says nothing about side effects on the current project, permissions, or what the call returns.

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 purpose in one sentence, and the filaments example earns its place by showing the exact object shape. The trailing sentence about bed type and set_setting is slightly tangential but remains relevant; there is little waste.

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

Completeness3/5

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

For a creation tool with four parameters, no annotations, and no output schema, the description covers the trickiest input (filaments) but leaves key gaps: printer/process semantics and what happens to the currently open project. Adequate but incomplete.

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 0%, so the description must compensate for four parameters. It does this well for filaments (format, example, matching rule) but leaves printer (name vs. serial?), process (empty default meaning), and name undocumented, so the compensation is only partial.

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?

States a specific verb and resource: 'Start an empty project.' An agent can tell this creates a new project rather than fetching or saving one. It does not explicitly contrast with the sibling open_project, so it stops short of full sibling differentiation.

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

Usage Guidelines2/5

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

No statement of when to use this versus open_project, or of prerequisites such as whether an existing unsaved project is discarded. The only 'guidance' is the aside on changing bed type via set_setting, which is a parameter detail rather than usage guidance.

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

open_in_bambu_studioA

Open a .3mf in the Bambu Studio window: by default the last saved project (else the last sliced one). Bambu Studio re-slices a project when asked (Slice plate), it does not reuse the slicing done here; to open a plate sliced and ready to print, use send_to_printer(via='bambu_studio').

NameRequiredDescriptionDefault
pathNo

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does disclose a genuinely non-obvious trait: Bambu Studio re-slices on Slice plate and does not reuse the slicing done here, plus the default-project fallback behavior. It still omits whether the studio must be installed/running, whether the call blocks, and failure behavior for an invalid path.

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?

Three sentences, front-loaded with the action and default, followed by the caveat and the alternative. Dense but every sentence carries information; no filler.

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

Completeness3/5

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

There is no output schema or annotations, so the description must cover everything, and it explains purpose, default, and the re-slicing caveat but not the return value or error conditions. Adequate to call, incomplete for predicting what happens.

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?

There is one parameter with 0% schema description coverage, and the description only explains its default ('last saved project, else the last sliced one'). It never states that path must point to a .3mf file, whether relative or absolute paths are accepted, or what happens with a malformed path.

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 names a specific verb and resource ('Open a .3mf in the Bambu Studio window') and states default behavior when no path is given. It implicitly separates itself from the in-app open_project and from send_to_printer, but never names open_project as the sibling to avoid, so differentiation is only partial.

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?

It gives a concrete routing rule: for a plate already sliced and ready to print, use send_to_printer(via='bambu_studio') instead. That is clear context for the alternative, though it does not state explicit when-not conditions (e.g., when to use open_project instead of sending to the external app).

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

open_projectA

Open a .3mf saved by Bambu Studio (or downloaded from MakerWorld). The file is never modified: save_project writes a new file. Returns the project summary and what could not be carried over.

NameRequiredDescriptionDefault
pathYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden and does add real value: it explicitly declares the source file is never mutated and warns that some content may not be carried over ('what could not be carried over'). It omits what happens to any currently-open project state, what errors occur on an invalid/corrupt path, and whether loading has side effects on the session.

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

Conciseness5/5

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

Three short sentences with no filler; the core action and accepted format come first, followed by the immutability guarantee and the return-behavior note. Every sentence carries distinct information.

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

Completeness3/5

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

The absence of an output schema is partly offset by the description naming the return payload (project summary plus un-carried-over items). For a load operation that mutates application state, the description should say whether the current project is replaced or unsaved work is affected, and what happens on failure.

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 0% for the single 'path' parameter, so the description must compensate, and it does: it constrains path to a .3mf file saved by Bambu Studio or downloaded from MakerWorld, narrowing the valid input domain beyond a bare string. It does not specify absolute vs relative paths or whether the file must be local, keeping it below a 5.

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?

States a specific verb (open) and a specific resource (a .3mf authored by Bambu Studio or MakerWorld), which pins down both the action and the accepted input format. It contrasts with save_project, but does not disambiguate from the similarly-named sibling open_in_bambu_studio or from get_project, which an agent could reasonably confuse with a load operation.

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?

The line 'The file is never modified: save_project writes a new file' implicitly tells the agent to use save_project for persistence rather than this tool. However, there is no explicit statement of when to prefer this over new_project, get_project, or open_in_bambu_studio, so the routing guidance is inferred rather than stated.

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

orient_objectA

Turn an object the way up it prints best, like Bambu Studio's Auto orientation: least area that needs support (faces leaning more than overhang_angle degrees from vertical, not on the bed), enough area on the bed, low height. Returns the 3 best options with those numbers and the current ones; choice=2 or 3 applies another option, apply=False only compares. Look at preview_plate afterwards.

NameRequiredDescriptionDefault
applyNo
choiceNo
objectYes
overhang_angleNo

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and largely meets it: it discloses the optimization objectives (support area, bed area, height), the overhang threshold semantics, that three candidates plus current values are returned, and that apply=False is a dry run. It stops short of stating irreversibility, undo behavior, or what 'apply' does to the object's existing transform beyond implication.

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

Conciseness5/5

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

The optimization criteria, return behavior, and parameter semantics are packed into three compact sentences with no filler. The scoring logic is front-loaded before the parameter-specific details.

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 mutation tool with no annotations, no output schema, and 0% schema coverage, the description covers return values, optimization criteria, and the dry-run mode. Remaining gaps are the required object identifier and prerequisites, but nothing critical to invoking it correctly is missing.

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 0%, and the description meaningfully compensates for three of four parameters: overhang_angle is defined via faces leaning more than that many degrees from vertical, choice is explained as selecting candidate 2 or 3, and apply is explained as compare-only when false. The required 'object' parameter's identifier format is never described.

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 and resource ('Turn an object the way up it prints best') and anchors it to a known behavior ('like Bambu Studio's Auto orientation'). This clearly distinguishes it from siblings like lay_flat, arrange, and transform_object, which either flatten, pack, or apply explicit transforms.

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?

Gives concrete usage context: apply=False only compares, choice=2/3 selects another candidate, and 'Look at preview_plate afterwards' supplies an explicit follow-up step. It lacks explicit routing away from alternatives such as lay_flat, but the intended workflow is clear.

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

paint_objectA

Paint a region of an object, like Bambu Studio's painting tools. paint: 'color' (with filament=N), 'support' (supports there), 'block_support' (none there), 'seam' (put the seam there), 'block_seam', 'fuzzy_skin'. Region: the height band z_from..z_to (mm from the object's bottom; z_to=0 = to the top) and the faces looking 'top', 'bottom', 'sides', 'front', 'back', 'left', 'right', 'overhangs' (leaning more than angle degrees from vertical, for supports) or 'all'. clear=True removes that painting there. Triangles crossing a band's edge are split, so the edge is sharp. part: only that part. Look at preview_plate (colors) afterwards.

NameRequiredDescriptionDefault
partNo
z_toNo
angleNo
clearNo
paintYes
facingNoall
objectYes
z_fromNo
filamentNo

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does well: it discloses that triangles crossing a band edge are split so the edge is sharp, that clear=True removes paint, and that part scoping is possible. It leaves open whether existing paint is overwritten, and what prerequisites (loaded project/object) apply.

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 resource, and every clause adds real information. It is one dense run-on with nested parentheticals, which costs some readability, but there is essentially no waste.

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 9-parameter mutation tool with no annotations and no output schema, the description covers the core mechanics, region semantics and the natural follow-up verification step. Missing pieces are overwrite behavior and error/permission conditions, which keep it from being fully complete.

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

Parameters5/5

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

Schema coverage is 0%, so the description must compensate and it does: it explains z_from/z_to as mm from the object bottom with the non-obvious z_to=0 = to the top convention, enumerates facing values, defines angle in degrees from vertical, and explains filament's role with paint='color'. Only the obvious 'object' parameter is left implicit.

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?

States a specific verb and resource ('Paint a region of an object') and enumerates all paint modes, which clearly separates it from generic sibling setters. It never names an alternative tool it could be confused with, so it stops short of full sibling differentiation.

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?

Implicitly clear when to use it (region-based painting vs. whole-object settings) and it documents the removal path via clear=True plus a follow-up step ('Look at preview_plate (colors) afterwards'). It does not say when NOT to use it or point to alternatives like set_object_filament or add_modifier.

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

preview_layerA

Image of one sliced layer seen from the top (needs slice_project first). Choose by layer number (1 = first) or by height z in mm. Extrusions are drawn in the filament colors. zoom: frame the extrusions (default), or False for the whole bed.

NameRequiredDescriptionDefault
zNo
zoomNo
layerNo
plateNo

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the whole burden. It usefully discloses rendering behavior (filament colors, zoom framing extrusions vs. whole bed) and the slice-project dependency, but never states that the operation is read-only/non-destructive, what the error looks like if slicing hasn't run, or how the image is delivered.

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

Conciseness5/5

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

Front-loads what the tool returns, then the prerequisite, then parameter selection rules, then rendering detail. Dense, zero filler, no restating of the name.

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 no-annotation, no-output-schema tool the description supplies what an agent needs: the return is an image, the prerequisite is named, and selection semantics are covered. The unexplained plate parameter and unstated non-destructiveness are the remaining holes.

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 0%, so the description must compensate, and it largely does: it defines layer numbering (1 = first), z as height in mm, and both zoom states with the default. Only 'plate' (default 1) is left completely unexplained, which is the one gap preventing a 5.

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?

It states a concrete verb+resource: renders an image of a single sliced layer viewed from the top, with a styling detail (extrusions in filament colors). That clearly separates it in spirit from the plate-level sibling preview_plate, but it never names that sibling, so the differentiation is inferred rather than stated.

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?

'needs slice_project first' gives the agent an explicit precondition, which is the main usage trap for a preview-after-slice tool. There is no explicit guidance about when to prefer preview_plate or preview_layer, so it falls just short of full alternatives coverage.

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

preview_plateA

Image of a plate with its objects in their filament colors (painted colors too). view: iso | top. zoom: frame the objects instead of the whole bed, to see details. labels: write each object's id and name on it, e.g. view='top', labels=True to tell which part is which (a part that came off the plate, the list in Bambu Handy's skip objects).

NameRequiredDescriptionDefault
viewNoiso
zoomNo
plateNo
labelsNo

TDQS

A3.5/5.0
Behavior4/5

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

It provides specific behavioral details beyond the schema, such as clarifying that objects are shown in 'filament colors (painted colors too)' and detailing the scope of labeling ('ID and name on it').

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

Conciseness2/5

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

The description is dense and lacks clear structure, reading more like a technical spec or bulleted requirements list than a coherent explanatory tool definition.

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

Completeness3/5

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

While it is complete in describing the visual output of the image, it is weak on providing broader context regarding the 'plate' itself (e.g., if it's a configuration template or a print job reference).

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

Parameters5/5

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

Given the 0% schema description coverage, the description excels at defining the semantics of each parameter. It specifies valid values for 'view' ('iso | top'), the function of 'zoom' ('frame the objects'), and the contents of 'labels'.

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 clearly states that the tool generates an image of a plate with its objects, which defines its core function. However, it doesn't explicitly state the primary goal (e.g., 'to visualize layout').

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

Usage Guidelines2/5

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

The description focuses entirely on the output settings (view, zoom, labels) rather than providing guidance on when to use this tool versus other visualization tools (like preview_layer).

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

printer_cameraA

A picture from the printer's camera right now (P1 and A1 series), to see the plate: how a print is going, whether something came off or made spaghetti, what is left on the bed. Read-only; works with the printer in cloud mode. With the chamber light off the picture is dark. max_size: longest side in pixels.

NameRequiredDescriptionDefault
max_sizeNo

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations at all, the description carries the full behavioral burden; it does useful work by declaring read-only semantics, the cloud-mode requirement, and the caveat that the image is dark when the chamber light is off. It omits failure behavior (printer offline, unsupported model) and says nothing about latency, caching, or how the image is returned.

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 core identity, then use cases, then caveats, then the parameter note — every clause carries information. The final 'max_size' sentence feels appended rather than integrated, which slightly hurts flow but not content.

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 one-parameter tool with no annotations and no output schema, the description covers purpose, hardware scope, prerequisite, and the main gotcha (dark image). It could add what an error/offline case looks like, but an agent has enough to call it 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 0% and the single parameter has no schema description, so the description must compensate — and it does, defining max_size as 'longest side in pixels', which gives the agent enough to choose a value alongside the schema's default of 1280. Only the absence of guidance on sensible ranges keeps it below 5.

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 opens with a concrete verb+resource: a live picture from the printer's camera, scoped to P1 and A1 series hardware. That is clearly distinct from siblings like printer_status, preview_plate, or printer_files, though it never names a sibling explicitly to route the agent.

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?

It states clear use cases — checking how a print is going, detecting a part that came off or 'spaghetti', seeing what is left on the bed — plus the prerequisite that the printer must be in cloud mode. It stops short of saying when not to use it (e.g. prefer printer_status for non-visual checks).

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

printer_filesA

Files on the printer's SD card, newest first, with name, size and date and the total per folder: timelapse (videos of past prints), prints (files of past prints the printer keeps), thumbnails (timelapse thumbnails whose video was deleted). Read-only; works with the printer in cloud mode.

NameRequiredDescriptionDefault
kindNoall
limitNo

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does state read-only behavior, the cloud-mode connectivity requirement, sort order (newest first), and what is returned. It doesn't cover what happens if the printer is offline or how `limit` affects results, so some behavioral ground is left uncovered.

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?

Two compact sentences, front-loaded with the return shape and folder semantics; each parenthetical earns its place by defining a category. Slightly dense phrasing ('name, size and date and the total per folder') but no wasted content.

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?

There is no output schema, so the description must describe results, and it does (name, size, date, per-folder totals, sorted newest first). The one real gap is pagination/limit behavior for a list tool that caps at 30 by default.

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 0%, so the description must compensate entirely. It effectively defines the `kind` values via the three folder categories, but `limit` is never mentioned despite having a default of 30, and it doesn't clarify that 'all' is a valid kind.

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?

States the resource (files on the printer's SD card) and the returned fields (name, size, date, per-folder totals) plus sort order, which clearly separates it from siblings like delete_printer_files or download_printer_file. The verb is implicit ('Files on...' rather than 'List files'), but the enumeration of the three folder categories makes the scope unambiguous.

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?

The parenthetical definitions of timelapse/prints/thumbnails implicitly guide selection of the `kind` value, and 'works with the printer in cloud mode' gives a prerequisite. However, it never names alternatives (download_printer_file, delete_printer_files) or states when to prefer them, so usage is implied rather than explicit.

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

printer_statusA

Read-only status of the printer on the local network: state, job, progress, remaining time, layer (or the last job's result when idle), temperatures, AMS trays (type, color, remaining %; 'unknown' = a spool the AMS has not been told about), AMS humidity and temperature, active slot, errors, objects skipped during the print, and warnings (the spool being fed is unknown or not the project's filament, sport speed on a long print, a report that looks old). read_at = when the printer sent it; age_s = seconds since, when a reading of a few seconds ago is given again (the printer is asked at most every 20 s). Works with the printer in normal cloud mode (Bambu Handy keeps working). Nothing is sent to the printer except a status request.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so well: it declares read-only behavior, states that nothing is sent except a status request, explains cloud-mode compatibility, and clarifies polling and age_s semantics. It also describes the meaning of warnings and unknown AMS spool values.

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?

The description is front-loaded with the core purpose and return contents, and the polling and non-mutating behavior are clearly stated. It is somewhat long because it enumerates many status fields, but the details are relevant rather than filler.

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?

There is no output schema and no annotation layer, so the description must explain both behavior and return contents. It does that thoroughly for a status tool, including state, job, progress, temperatures, AMS details, warnings, read_at, and age_s, leaving little ambiguity for an agent to call it 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?

The tool takes zero parameters, so parameter semantics are inherently simple and the baseline is 4. The description does not need to explain parameter meanings, and it appropriately focuses on what the returned status contains instead.

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 clearly states a specific verb and resource: read-only status of the printer on the local network, with a detailed list of what status includes. It is more specific than a tautology, but it does not distinguish itself from closely related siblings such as bambu_status or list_printers.

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?

It gives useful context that the tool works in normal cloud mode and that only a status request is sent, but it does not explicitly say when to use this tool instead of bambu_status or other printer-related siblings. Usage is implied rather than routed.

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

remove_brim_earsC

Remove an object's brim ears; its brim goes back to the project's brim type.

NameRequiredDescriptionDefault
objectYes

TDQS

C2.9/5.0
Behavior2/5

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

There are no annotations, so the description carries the full behavioral burden. It discloses one effect—the brim reverts to the project's brim type—but does not state whether the removal is destructive or irreversible, what permissions are needed, or what errors may occur.

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

Conciseness5/5

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

The definition is a single front-loaded sentence with no wasted wording. It states the action first and then the resulting brim state.

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

Completeness3/5

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

For a simple one-parameter tool with no output schema, the description covers the core action and its main effect. However, given zero schema description coverage and no annotations, it leaves gaps around object identifier semantics and mutation safety.

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

Parameters2/5

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

Schema description coverage is 0%, and the single 'object' parameter is only referenced possessively as 'an object's brim ears.' The description does not clarify whether the object should be specified by name, ID, or another identifier, nor what constraints apply.

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 uses a specific verb and resource: 'Remove an object's brim ears,' and clarifies the resulting brim state. It is distinguishable from add_brim_ears by the opposite operation, though it does not explicitly name or contrast that sibling.

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

Usage Guidelines2/5

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

It states what the tool does but gives no explicit guidance on when to use it, when not to use it, prerequisites, or alternatives such as add_brim_ears. Usage is only implied by the operation itself.

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

remove_height_rangeB

Remove the height band of an object that starts at z_from (mm), or all its bands (z_from=-1).

NameRequiredDescriptionDefault
objectYes
z_fromNo

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations at all, the description carries the full burden, and it does disclose the destructive scope (one band vs. all bands via z_from=-1), which is genuinely beyond the schema. It stops short of mutation essentials: whether the object must already have a band at that height, whether the operation is reversible, and what happens to painted/modifier data in the removed range.

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

Conciseness5/5

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

A single sentence with zero filler, and the core action is front-loaded before the conditional clause. Nothing could be trimmed without losing meaning.

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

Completeness3/5

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

For a mutation tool with no annotations and no output schema, the description covers the main action and the sentinel case but leaves the object identifier format and failure behavior undefined. It is adequate to attempt a call, not adequate to call confidently.

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 0%, so the description must compensate, and it does explain z_from fully (millimeters, -1 means all bands). The required 'object' parameter is left unexplained — no indication whether it is a name, index, or ID, which is the biggest semantic gap.

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?

States a specific verb and resource (remove a height band from an object) with units and the sentinel case spelled out. It is distinguishable from siblings by name and effect, though it never names the complementary set_height_range tool that an agent might confuse it with.

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

Usage Guidelines2/5

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

There is no when-to-use guidance: nothing says when to strip a height band versus calling set_height_range, remove_part, or delete_object, nor any prerequisite (does the object need an existing band?). The only conditional statement is about the z_from value, which is parameter semantics rather than tool selection guidance.

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

remove_layer_actionB

Remove a layer action (1-based index as listed by get_project), or all of them with index 0.

NameRequiredDescriptionDefault
indexNo
plateYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does usefully disclose the bulk-delete escape hatch ('all of them with index 0'), which the schema alone would not reveal. However, it says nothing about reversibility, undo, error behavior on an out-of-range index, or what happens to the plate afterward.

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

Conciseness5/5

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

A single sentence with zero filler, and the destructive bulk case is placed at the end where it is easy to catch. Nothing is wasted.

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 an unannotated mutation tool with no output schema and 0% schema coverage, the definition is thin: the required 'plate' parameter is undefined and there is no statement of effect or failure mode. Only the index semantics and the bulk-delete case are adequately covered.

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 0%, so the description must compensate. It fully explains 'index' (1-based, sourced from get_project, 0 means all), which is the key semantic. The required 'plate' parameter is left completely unexplained — whether it is a plate index or a name — leaving half the parameters undocumented.

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?

States a specific verb and resource ('Remove a layer action'), which pairs cleanly against the sibling add_layer_action. It also clarifies scope (single action vs. all actions). It does not explicitly name the sibling, so it stops short of a 5.

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?

The description tells the agent where the index comes from ('as listed by get_project'), which is real operational guidance. But it gives no guidance on when to use this versus related tools like remove_plate, remove_part, or remove_height_range, and no preconditions or confirmation guidance for a destructive operation.

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

remove_partA

Remove a part (e.g. a modifier) from an object, by part name. The last solid part cannot be removed.

NameRequiredDescriptionDefault
partYes
objectYes

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden; it usefully discloses the key mutation constraint that the last solid part cannot be removed. It still omits permissions, reversibility, error behavior if the part is missing, and the effect on the object, leaving substantial gaps for a mutation tool.

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

Conciseness5/5

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

Two short sentences, front-loaded with the action and target, with the constraint following. Every sentence carries relevant information and there is no filler.

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

Completeness3/5

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

For a narrow two-parameter mutation, the description gives the essential action and the one hard constraint. However, with no annotations and 0% schema coverage it should also cover safety/reversibility and parameter identifier conventions; it is adequate but incomplete.

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 0%, so the description must compensate; 'by part name' clarifies that the part parameter is a name and 'from an object' identifies the target. It does not explain how the object is identified (name vs. id) or the part-name format, so the clarification is only partial.

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 ('Remove') and resource ('a part') plus the target ('from an object') and gives an example ('e.g. a modifier'). This clearly distinguishes it from siblings like delete_object and add_modifier without needing to open either schema.

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?

Implies the use case (removing a modifier or other part) and states one hard when-not condition ('The last solid part cannot be removed'). However, it never names alternatives or gives broader when-to-use guidance, leaving the agent to infer routing from the sibling list.

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

remove_plateA

Delete a plate. Its objects are moved to plate move_objects_to (0 = delete them too).

NameRequiredDescriptionDefault
plateYes
move_objects_toNo

TDQS

A3.9/5.0
Behavior4/5

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

With zero annotations the description carries the full behavioral burden, and it does disclose the key data-loss semantics: objects on the plate are relocated to another plate rather than silently destroyed. It omits whether the deletion is reversible/undoable, permission requirements, or edge cases such as deleting the last remaining plate.

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

Conciseness5/5

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

Two compact sentences, front-loaded with the action, followed by the side effect that matters most. No filler or redundant restatement of the name.

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 2-parameter destructive tool with no annotations and no output schema, the description covers the essential risk (where objects go) and the tricky default value. A short note on irreversibility or return value would close the remaining 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 0%, so the description must compensate, and it does for the non-obvious parameter: it explains what `move_objects_to` controls and the important `0` sentinel meaning objects are deleted too. `plate` is left unexplained, but its meaning is inferable from the tool purpose.

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?

States a specific verb and resource ("Delete a plate") and immediately adds the consequence for contained objects, which distinguishes it from add_plate/rename_plate/set_plate_settings. It does not explicitly contrast with sibling mutation tools like delete_object, but the purpose is unambiguous.

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 by the destructive verb; an agent knows this is the tool for removing a plate. However, there is no explicit when-to-use/when-not guidance and it never mentions the related delete_object sibling, so an agent has to infer whether per-object deletion is an alternative.

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

rename_plateC

Give a plate a name (shown in Bambu Studio).

NameRequiredDescriptionDefault
nameYes
plateYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It adds only the minor detail that the name appears in Bambu Studio; it says nothing about whether renaming overwrites an existing name, whether names must be unique, whether the change persists to the saved file, or what happens on an invalid plate index.

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?

A single short sentence with the resource and effect front-loaded and no filler. It is efficient, though its brevity is part of why key details are absent.

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 mutation tool with zero annotations, zero schema descriptions, and no output schema, the definition omits the essentials an agent needs: what a plate index refers to and what the rename does to existing state. The one clause about Bambu Studio is the only added context.

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

Parameters2/5

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

Schema description coverage is 0%: neither `plate` nor `name` has any description. The description does not clarify whether `plate` is a 0- or 1-based index, what identifiers are valid, or any constraint on `name` length or characters, so it fails to compensate for the coverage gap.

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?

States a specific verb and resource ("Give a plate a name") plus where the name surfaces (Bambu Studio), which is enough to distinguish it from rename_preset. It does not explicitly contrast with sibling plate tools like set_plate_settings or add_plate, so it stops short of full sibling differentiation.

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

Usage Guidelines2/5

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

There is no guidance on when to call this versus alternatives, no prerequisites (must the plate exist? must a project be open?), and no exclusions. The agent must infer usage entirely from the tool name.

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

rename_presetB

Rename one of your user presets (a backup copy is kept). A preset in your Bambu cloud cannot be renamed from here, because Bambu Studio would download the old one again: the answer says how to do it in Bambu Studio.

NameRequiredDescriptionDefault
kindYes
nameYes
new_nameYes

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that a backup copy is kept and that the tool refuses Bambu cloud presets with guidance in the answer, but it does not cover permissions, failure modes, or whether the rename is reversible beyond the backup note.

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?

The description is two sentences and front-loads the core action. The second sentence is longer but earns its place by explaining the important cloud-preset restriction and the response behavior.

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 mutation tool with no annotations, no output schema, and fully undocumented parameters, the description is incomplete. It explains the cloud edge case well but leaves the meaning of 'kind' and the expected response shape largely to inference.

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

Parameters2/5

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

All three parameters have 0% schema description coverage, so the description must compensate. It only implies that 'name' and 'new_name' relate to renaming, and never explains what 'kind' means or what values it accepts, leaving a required parameter effectively undocumented.

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 and resource: 'Rename one of your user presets'. It also distinguishes the operation from cloud-preset handling by explaining that Bambu cloud presets cannot be renamed from here, which helps separate this tool from general preset editing.

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?

The description implies when the tool applies by limiting it to user presets and explicitly excluding Bambu cloud presets. However, it does not name alternatives such as edit_preset or explain the relationship to delete_preset/search_presets, so the agent must infer the broader tool-selection context.

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

replace_with_stlA

Swap the shape of an object (or of its part part) for the one in an STL/OBJ/3MF file, like Bambu Studio's Replace with STL, e.g. after fixing it in CAD. Name, filament, settings, place on the plate and the other parts stay; the new shape takes the old one's center, standing on the same bottom. Painting on the old shape is dropped (it was for other triangles).

NameRequiredDescriptionDefault
partNo
pathYes
objectYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does so well: it discloses what is preserved (metadata, settings, other parts), how geometry is repositioned (new shape takes old center, same bottom), and what is lost (painting is dropped). It does not cover error conditions (missing/invalid file) or whether the operation is undoable, which keeps it from 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.

Conciseness5/5

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

The core action is front-loaded in the first clause, followed by the Bambu Studio analogue and then the preservation caveats. Every sentence adds information an agent needs, with no filler.

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?

Given no annotations, no output schema, and three parameters with zero schema descriptions, the description supplies the critical semantics: what is replaced, what survives, and what degree of geometric repositioning occurs. It is slightly incomplete on failure modes and return behavior, but the essential information for a correct call is present.

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 0% and parameters have only bare titles, so the description must compensate. It clarifies the object/part relationship (the part is an optional sub-part of the object) and implies that `path` points to an STL/OBJ/3MF file, but it does not explain the default empty `part` (whole object), expected path format, or whether remote/URL paths are supported.

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 and resource ('Swap the shape of an object (or of its part `part`) for the one in an STL/OBJ/3MF file') and ties it to a known behavior ('like Bambu Studio's Replace with STL'). This clearly distinguishes it from siblings such as import_model or add_shape without requiring schema inspection.

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?

Provides a clear use case ('e.g. after fixing it in CAD') and explains the outcome that makes this preferable to deleting and re-importing (preserves name, filament, settings, plate placement). It stops short of explicitly naming when not to use it or which sibling to choose instead.

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

reprint_objectsA

A new project with only some objects of the open one, e.g. a part that came off the plate and was skipped: same printer, process, filaments and settings, laid out again (more plates if needed); brim=True gives each an outer brim. Saved as a new file (never overwrites) and sliced; the open project is not changed: open_project(file) then send_to_printer to print it. objects: names or ids (see get_project).

NameRequiredDescriptionDefault
brimNo
nameNo
sliceNo
objectsYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does important work: it states the result is 'Saved as a new file (never overwrites)' and 'the open project is not changed', plus auto-slicing and same printer/process/filament settings. These are exactly the behavioral traits an agent needs. Gaps remain on edge cases (e.g. name default, behavior when slice=false), keeping it below 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?

Purpose is front-loaded and every clause carries information (outcome, example, brim rule, save/slice behavior, follow-up workflow). The single run-on sentence with parentheses and semicolons is dense and could be split for readability, but little 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?

For a 4-param mutation tool with no annotations and no output schema, the description is nearly complete: it covers outcome, non-destructiveness, slicing, layout, and the print workflow. Only the name/slice parameter semantics and any return indication are left thin.

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 0%, so the description must compensate. It clearly explains brim ('brim=True gives each an outer brim') and objects ('names or ids (see get_project)'), but the name and slice parameters are only implicitly referenced ('Saved as a new file', 'sliced') with no semantics for the empty-name default or slice=False. Two of four parameters are well covered.

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 operation: create a new project containing only a subset of the open project's objects, using the same settings, re-laid-out and sliced. The concrete example (a part that came off the plate and was skipped) makes the resource and verb unmistakable. It does not explicitly differentiate from close siblings like duplicate_object or new_project, so it falls short of 5.

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?

It gives a concrete trigger ('e.g. a part that came off the plate and was skipped') and even the follow-up workflow ('open_project(file) then send_to_printer to print it'). This is clear usage context, but it stops short of naming explicit alternatives or when-not-to-use conditions.

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

reset_settingB

Drop an override: the setting goes back to the preset value.

NameRequiredDescriptionDefault
keyYes

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose the outcome state (setting reverts to preset value), which is useful mutation context, but says nothing about permissions, whether the dropped override can be recovered, or what happens when no override exists.

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

Conciseness5/5

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

A single short sentence with the effect front-loaded before the resulting state. Nothing is wasted and the semantics land immediately.

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

Completeness3/5

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

For a one-parameter mutation tool with no annotations and no output schema, the description conveys the core effect but leaves the key format, error behavior, and reversibility unaddressed. It is minimally adequate rather than complete.

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

Parameters2/5

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

Schema description coverage is 0% for the single 'key' parameter, and the description offers no substitute — it never explains what form a setting key takes, how to discover a valid key, or whether it is a settings path vs. a display name. The agent must guess the identifier format.

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?

States a specific action (drop an override) and a specific resulting state (the setting reverts to the preset value). It is clearly distinct from set_setting/get_setting in intent, though it never names those siblings, so the differentiation is inferred rather than explicit.

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?

The phrase 'drop an override' implies the precondition (an override must exist) and the alternative (use set_setting to create one), but neither is stated. There is no explicit when-to-use, when-not-to-use, or named alternative.

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

save_filament_presetA

Save the filament of a slot, with this project's changes for that slot (temperatures, flow ratio, pressure advance, plate temperatures...), as a Bambu Studio user preset; it appears after Bambu Studio restarts. A new filament (made from a Generic preset, or with another filament_vendor) is saved like Bambu Studio's Create Filament does: its own filament id, so it can be picked for an AMS slot (Device > AMS). Changes to a Bambu filament are saved as a variant of it, so its RFID spools still match it. replace=True updates an existing user preset with that name (e.g. after a calibration): it keeps its filament id, so AMS slots set to it stay valid, and a backup copy is kept. Never overwrites otherwise.

NameRequiredDescriptionDefault
nameYes
slotYes
replaceNo

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and delivers: the preset appears only after a Bambu Studio restart, new filaments get their own filament id so they can be assigned to an AMS slot, variants keep RFID matching, replace=True preserves the filament id so AMS slots stay valid and keeps a backup copy, and nothing is overwritten otherwise.

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 core action and its effect, then mode distinctions and replace semantics. Dense but every sentence conveys distinct behavior; the parenthetical field list is the only mildly expendable element.

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 3-parameter mutation tool with no annotations and no output schema, the description covers the meaningful effects: id assignment, AMS implications, restart requirement, and overwrite protection. The remaining gap is what 'slot' identifies and what happens on invalid slot/name.

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 0%, so the description must compensate. The replace parameter is fully explained (updates an existing preset by name, keeps filament id, keeps a backup, never overwrites otherwise), and 'name' is implied to be the preset name, but 'slot' is never clarified—AMS slot index, printer scope, or something else—so a key parameter remains ambiguous.

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+resource: save the filament of a slot with the project's per-slot changes (temperatures, flow ratio, pressure advance, plate temperatures) as a Bambu Studio user preset. It is clearly distinct from save_process_preset, save_printer_preset, and edit_preset/rename_preset.

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?

Explains the two modes explicitly: a new filament (from a Generic preset or another vendor) is saved like Bambu Studio's Create Filament, while changes to a Bambu filament become a variant. It also directs the agent to replace=True when updating an existing preset after a calibration instead of creating a duplicate.

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

save_printer_presetA

Save this project's printer changes (start/end G-code, retraction, printable area...: the set_setting changes that belong to the printer) as a Bambu Studio user printer preset, a child of the project's printer preset. replace=True updates your user preset with that name (a backup copy is kept). It appears after Bambu Studio restarts.

NameRequiredDescriptionDefault
nameYes
replaceNo

TDQS

A4.4/5.0
Behavior4/5

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

No annotations exist, so the description carries the full burden, and it does disclose key side effects: a child preset is created under the project's printer preset, replace=True overwrites the named user preset while keeping a backup copy, and the preset only appears after Bambu Studio restarts. That restart requirement and backup guarantee are exactly the non-obvious traits an agent needs; it stops short of saying what happens if the name already exists with replace=False.

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?

Purpose is front-loaded in the first clause and every sentence adds information (scope, replace semantics, restart caveat). The mid-sentence parenthetical with an embedded line break around 'set_setting changes' is slightly awkward but not wasteful.

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 two-parameter mutation tool with no annotations and no output schema, the description covers what is saved, where it is stored (child of the project's printer preset), overwrite behavior with backup, and the restart requirement. Nothing an agent needs to call it correctly is missing.

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 0%, so the description must compensate, and it does for `replace` (overwrite the named user preset, backup kept) and implies `name` identifies the user preset to create or update. It never states explicitly whether `name` may collide with an existing preset or how it relates to the parent preset's name, leaving a small gap.

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 and resource: save this project's printer-level set_setting changes as a Bambu Studio user printer preset that is a child of the project's printer preset. It enumerates the kinds of settings covered (start/end G-code, retraction, printable area), which lets an agent distinguish it from the sibling save_filament_preset and save_process_preset without opening any schema.

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?

It gives clear context for use: after printer-scoped set_setting changes, save them here, and replace=True to overwrite an existing user preset of that name. It does not explicitly name save_filament_preset / save_process_preset as the alternatives for non-printer settings, so the routing is implied rather than spelled out.

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

save_process_presetA

Save this project's process changes (layer height, walls, infill, speeds, brim, supports, ironing...: the set_setting changes that belong to the process) as a Bambu Studio user process preset, a child of the project's process preset, like Save as in Bambu Studio. replace=True updates your user preset with that name (a backup copy is kept). It appears after Bambu Studio restarts.

NameRequiredDescriptionDefault
nameYes
replaceNo

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and discloses meaningful behavior: this is a mutation that writes a user preset, replace=True keeps a backup copy, and the preset only appears after Bambu Studio restarts. It does not cover failure modes or permission prerequisites, which keeps it from 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?

The description is front-loaded with the core action and scoping, followed by the replace behavior and restart caveat. It is somewhat long and the parenthetical settings list could be trimmed, but every sentence contributes useful context.

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 two-parameter mutation tool with no annotations and no output schema, the description covers what is saved, the child-preset relationship, replace/backup semantics, and the restart caveat. It is nearly complete, missing only explicit name semantics and error behavior.

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 0%, so the description must compensate. It explains the replace flag's effect (updates the user preset with a backup) but does not clarify that 'name' is the preset name or mention the default value of replace=false; the name parameter is only obliquely referenced via 'with that name'.

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 states a specific verb and resource: it saves the project's process changes as a Bambu Studio user process preset, a child of the project's process preset. This clearly distinguishes it from sibling save_filament_preset and save_printer_preset by naming the distinct preset type and scope.

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?

The 'like Save as in Bambu Studio' analogy and the replace=True explanation imply usage, but the description never explicitly states when to use this tool versus save_project, edit_preset, or sync_with_bambu_studio. The guidance is present but only implied rather than prescribed.

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

save_projectA

Write the project as a Bambu Studio .3mf (default folder: the output dir, name from the project). Never overwrites: if the file exists a -2, -3... suffix is added. Optionally open it in Bambu Studio.

NameRequiredDescriptionDefault
pathNo
open_in_bambuNo

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the never-overwrite policy with concrete suffixing behavior, the default location and naming, and the optional side effect of launching Bambu Studio. Only the permission/precondition state (is a project required to be loaded?) is left unstated.

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

Conciseness5/5

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

Three short clauses, front-loaded with the action and format, then the overwrite safety rule, then the optional side effect. Every sentence carries 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 two-parameter write tool with no annotations and no output schema, the description covers format, safety, defaults and side effects. It stops short of stating the precondition (an open project) and the return value, though the latter is minor.

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 0%, so the description must compensate for both parameters. It explains the default path behavior (output dir, name from project) and clarifies open_in_bambu, but it never says whether 'path' is a directory or a full file path, leaving a genuine ambiguity.

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, resource and output format ('Write the project as a Bambu Studio .3mf'), which distinguishes it from export_stl and the save_*_preset siblings. An agent knows exactly what this produces.

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?

Use is strongly implied by the name and the format statement, and 'Optionally open it in Bambu Studio' hints at the open_in_bambu_studio alternative. But there is no explicit when-to-use/when-not guidance versus export_stl or save_filament_preset, and no stated prerequisites such as an active project.

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

search_presetsA

Find presets. kind: filament | process | machine. query: words to match (e.g. 'eSUN PLA+', '0.16mm'). With printer, only presets compatible with it. User presets come first.

NameRequiredDescriptionDefault
kindYes
limitNo
queryNo
printerNo

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden but adds useful behavior: printer compatibility filtering and user-preset-first ordering. It omits other important behavior such as how query matching works beyond examples, what happens with an empty query, and how many results are returned or paginated.

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

Conciseness5/5

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

The description is short, front-loaded with the core action, and uses compact clauses for kind, query, printer behavior, and ordering. Every sentence adds useful information without waste.

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

Completeness3/5

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

For a search tool with no annotations, no output schema, and zero schema description coverage, the description covers the main filtering semantics but leaves the 'limit' parameter and result format unaddressed. It is adequate to invoke correctly in common cases but incomplete.

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 0%, so the description must document all four parameters. It covers 'kind', 'query', and 'printer' meaningfully, but 'limit' is not mentioned at all, leaving one parameter undocumented in both schema and description.

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 and resource ('Find presets') and enumerates the valid 'kind' categories, so the basic action is clear. It does not explicitly distinguish itself from sibling tools like list_user_presets, though 'User presets come first' hints at broader scope.

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?

It implies the tool is for searching presets by kind and optional query/printer filters. However, it does not say when to use this instead of list_user_presets or other preset-related siblings, nor does it state exclusions or prerequisites.

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

send_to_printerA

Make the print file of one plate (.gcode.3mf) and send it. via = auto (Bambu Connect if installed, otherwise Bambu Studio) | bambu_connect | bambu_studio: open it in an official Bambu app, where the user checks printer and AMS mapping and presses Print/Send. via = file: only make the file. via = lan: copy it to the printer on the local network and START PRINTING, for printers in LAN-only mode with Developer Mode (print farms; in cloud mode the printer refuses and the answer says so). Two steps: without confirm nothing is sent, the answer gives the AMS slots it would use and a code; check with the user that the plate is clear, then call again with confirm=. AMS slots: from use_ams_filaments, or ams_slots (one AMS slot per project filament slot, 0 = automatic), or the tray with the same type and the closest color. Tell the user the time, weight and filaments of the plate (and for lan, follow it with printer_status).

NameRequiredDescriptionDefault
viaNoauto
plateNo
confirmNo
ams_slotsNo
timelapseNo
bed_levelingNo

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and discloses important behavior: lan mode starts printing, cloud mode may refuse, file mode only creates the file, and confirmation is required before sending. It does not fully discuss permissions, material consumption, or the exact return shape, but it is substantially transparent.

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

Conciseness5/5

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

The description is long but appropriately dense for a multi-mode tool. The purpose is front-loaded, then the via modes, safety workflow, and AMS resolution are laid out in a structured way with little wasted text.

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 complex printing action with six parameters, no annotations, and no output schema, the description covers most of what an agent needs: mode selection, confirmation semantics, AMS slot resolution, and follow-up guidance. The missing timelapse and bed_leveling explanations keep it from being fully complete.

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 0%, so the description must document parameters, and it does explain via, confirm, ams_slots, and implicitly plate. However, timelapse and bed_leveling are not mentioned at all, leaving two of six parameters without semantic guidance.

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: make the print file for one plate (.gcode.3mf) and send it. It also distinguishes the supported delivery modes, so an agent can tell this apart from slicing-only or preview-only 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 defines when to use each via mode: auto, bambu_connect, bambu_studio, file, and lan. It also states the LAN prerequisites and the two-step confirmation workflow, which is exactly the guidance needed to choose the right path.

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

set_filamentA

Change one filament slot (1-based); a new slot number = add a slot. Leave a field empty to keep it.

NameRequiredDescriptionDefault
slotYes
colorNo
presetNo

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden; it does disclose mutation semantics: existing slot changes, a new slot number adds a slot, and empty fields are left unchanged. It omits whether non-empty fields overwrite without confirmation, how preset values are validated, persistence behavior, and any permission requirements.

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

Conciseness5/5

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

Two short sentences, front-loaded with the action and slot semantics. No redundant restatement of the schema or title.

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

Completeness3/5

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

For a simple three-parameter setter, it covers the core add/update and leave-empty behavior. However, with no annotations, no output schema, and no schema descriptions, it still leaves validation, preset resolution, and result behavior unspecified.

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 0%, so the description adds needed meaning for slot (1-based, new value adds slot) and optional color/preset (empty keeps current). It does not specify color format (hex/name) or what preset strings refer to, leaving the optional parameters only partially explained.

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?

States a concrete verb ('Change') and resource ('filament slot'), and clarifies 1-based indexing plus add-on-new-slot behavior. It is distinguishable from set_object_filament by targeting filament slot definitions rather than object assignments, though it does not name that sibling explicitly.

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?

Explains the add-slot case and the partial-update convention, so an agent knows a new slot number creates one and empty fields preserve values. It does not say when to use this instead of filament_colors, ams_load, or set_object_filament, nor any prerequisites.

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

set_height_rangeA

Settings for a height band of an object, like Bambu Studio's Height range modifier. Heights are mm from the object's bottom. E.g. z_from=0, z_to=5, settings={"sparse_infill_density": "100%"}; {"layer_height": "0.12"} for finer layers there (variable layer height); {"filament": 2} to print that band with another filament slot (a color band). A band with the same z_from and z_to is updated (null removes a key); bands cannot overlap.

NameRequiredDescriptionDefault
z_toYes
objectYes
z_fromYes
settingsYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does well: it gives units, explains update-by-same-z-range semantics, defines null as key removal, and states that bands cannot overlap. It does not mention permission or failure behavior, but the core mutation semantics are disclosed.

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

Conciseness5/5

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

The description is dense but efficient: purpose first, then concrete examples, then update/overlap rules. Every sentence contributes actionable 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?

Given no annotations and no output schema, the description covers the essential mechanics for a mutation tool with a nested settings object. It is close to complete, though it could say more about accepted settings keys or error conditions when bands overlap.

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 0%, so the description must compensate. It explains z_from/z_to as mm from the object bottom and gives meaningful settings examples including infill, layer height, filament slot, and null removal; only the object parameter is left implicit.

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 states a specific verb and resource: setting a height band on an object, with an explicit analogy to Bambu Studio's Height range modifier. It is clearly distinguishable from remove_height_range and from general object-setting tools.

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 examples make the intended use clear: per-band infill, variable layer height, and filament/color bands. However, it does not explicitly name when to choose this over add_modifier or set_object_setting, nor does it state when not to use it.

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

set_object_filamentB

Assign a filament slot to a whole object, or to one of its parts (by part name).

NameRequiredDescriptionDefault
partNo
objectYes
filamentYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden and falls short: it does not say whether assignments overwrite prior ones, whether the filament slot must be loaded/exist, or whether the object must be selected or already on a plate. Only the part-level capability is disclosed beyond the schema.

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?

A single front-loaded sentence with no filler, and the primary object-level behavior leads before the part-level nuance. Brevity is a virtue here, though it borders on under-specification.

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?

A mutation tool with zero annotation coverage, no output schema, and three undocumented parameters warrants more: valid filament indices, part-name resolution, and side effects on existing assignments are all absent.

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 0%, so the description must compensate. It usefully clarifies that 'filament' is a slot identifier and 'part' is a part name, but gives no valid range, index base, or format for either, leaving real gaps.

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?

States a specific verb ('Assign') and resource ('a filament slot'), plus the two scopes it can target: whole object or a named part. This distinguishes it reasonably from the plate/global 'set_filament' sibling by scope, though it never names that sibling explicitly.

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?

The 'or to one of its parts' phrasing implies when to use the optional part parameter, but there is no explicit guidance on when to choose this over set_filament, use_ams_filaments, or set_object_setting, and no prerequisites are stated.

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

set_object_printableA

Keep an object on the plate but leave it out of the print (printable=False), like unticking Printable in Bambu Studio; True puts it back. The other objects slice and print as usual.

NameRequiredDescriptionDefault
objectYes
printableNo

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden and does provide useful context: the object remains on the plate, is excluded from printing, can be restored with True, and other objects still print as usual. It does not disclose return behavior, required permissions, whether re-slicing is needed, or what happens if the object identifier is invalid. These are meaningful gaps for a state-changing tool with no annotation coverage.

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

Conciseness5/5

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

The description is compact and front-loaded: the primary effect is stated first, followed by the Bambu Studio analogy and the True behavior. Every sentence adds useful information, and there is no filler or repetition.

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

Completeness3/5

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

For a simple two-parameter setter with no output schema or annotations, the description covers the main effect and reversibility but omits how to identify the object and what the tool returns. It is adequate for understanding the operation, but not fully complete given the lack of structured documentation for the parameters.

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 0%, so the description must compensate. It explains the printable parameter well by tying False to exclusion from printing and True to restoring it, but it does not clarify the required object parameter, such as whether it expects a name, ID, or handle. It adds meaningful semantics for one parameter while leaving the other underspecified.

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 action and effect: it keeps an object on the plate while excluding it from printing, and restores it when printable is true. It clearly distinguishes this from deleting the object by saying the object stays on the plate and other objects still slice and print normally. It does not explicitly contrast with sibling tools such as skip_objects or delete_object by name, so it falls just short of the top score.

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?

The intended use is implied clearly: exclude one object from the print without removing it from the plate. However, the description does not explicitly say when to choose this over alternatives like delete_object or skip_objects, nor does it list exclusions or prerequisites. The Bambu Studio printable-checkbox analogy helps, but usage guidance remains implicit rather than explicit.

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

set_object_settingB

Per-object print setting (e.g. sparse_infill_density '40%', wall_loops '4', layer_height '0.12'). An empty value removes the override.

NameRequiredDescriptionDefault
keyYes
valueYes
objectYes

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden, and it does deliver one genuinely useful mutation semantic: an empty value deletes the override rather than storing an empty string. That is real added value. It still omits whether the change is scoped to the active plate/profile, whether a re-slice is required, and what happens on an unknown key.

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?

Two tight sentences, with the examples carrying most of the information load and the destructive empty-value behavior surfaced before the agent must call it. Nothing is padded, though a leading verb phrase would make the front-loading stronger.

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 3-parameter mutation tool with zero annotation coverage, no output schema, and 0% schema coverage, the description is too thin. It never says how to address the target object, which keys are valid, or whether slicing or a project context is required — an agent would have to guess or probe other tools before a first successful call.

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 0%, so the schema contributes nothing, but the description partially compensates by giving example key names and value formats (sparse_infill_density -> '40%', wall_loops -> '4', layer_height -> '0.12') and by defining empty-value semantics for 'value'. The 'object' parameter is left completely unexplained — no indication whether it takes a name, index, or ID, which is a significant gap for a required argument.

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 identifies the resource precisely (a per-object print-setting override) and grounds it with concrete key/value examples such as sparse_infill_density '40%' and wall_loops '4'. It implies the write action through the tool name rather than stating a verb, and it never explicitly names the project-level siblings get_setting/set_setting it must be told apart from.

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 by 'per-object' (versus a global setting) and by the note that an empty value removes the override, which tells an agent how to undo. However, there is no explicit when-to-use, no prerequisite (object must already exist, project must be open), and no routing to copy_object_settings, get_setting, or set_setting as alternatives.

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

set_part_typeB

Change what a part of an object is, like Bambu Studio's Change type: 'part' (printed), 'modifier' (its settings apply inside it), 'negative' (cut out, a hole), 'support_blocker' or 'support_enforcer'. An object keeps at least one printed part.

NameRequiredDescriptionDefault
partYes
typeYes
objectYes

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description must carry behavioral context. It usefully explains the effects of the type values and states the constraint that an object keeps at least one printed part, but it does not cover mutation safety, permissions, reversibility, error behavior, or return values.

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

Conciseness5/5

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

The description is two tight sentences, front-loading the core operation and then supplying the type vocabulary. Every element earns its place and there is no redundant restatement of the schema.

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

Completeness3/5

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

For a mutation tool with no annotations and no output schema, the description gives useful type semantics and an important structural constraint. It remains incomplete regarding how to identify objects and parts and what happens on failure or success.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It explains the 'type' values well, but it does not explain what the 'object' and 'part' parameters expect, leaving two of the three required identifiers ambiguous.

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 and resource: changing the type of a part within an object. It enumerates several part types, making the operation concrete, but it does not explicitly distinguish the tool from nearby siblings such as add_modifier or set_object_printable.

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 by explaining what each part type means, especially the distinction between printed parts, modifiers, negative parts, and support blockers/enforcers. However, there is no explicit guidance on when to choose this tool over alternatives like add_modifier or remove_part.

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

set_plate_settingsA

Settings of one plate, like Bambu Studio's plate settings; they win over the project's on that plate. bed_type: Cool Plate, Engineering Plate, High Temp Plate, Textured PEI Plate or Supertack Plate. print_sequence: 'by layer', or 'by object' (each object printed to the end before the next). first_layer_filaments: order of the filament slots on the first layer, e.g. [2, 1]. spiral_vase: 'on' or 'off'. prime_tower: [x, y] in mm, where its corner goes (e.g. between objects). 'global' (or [] for the lists) goes back to the project's choice; empty leaves it as it is.

NameRequiredDescriptionDefault
plateYes
bed_typeNo
prime_towerNo
spiral_vaseNo
print_sequenceNo
first_layer_filamentsNo

TDQS

A3.5/5.0
Behavior3/5

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

No annotations, so the description carries the full burden. It usefully discloses override precedence and the revert/no-op behaviors of empty vs 'global' values, which an agent could not infer from the schema. It omits error behavior, whether a plate must exist, and what happens to unspecified settings beyond the vague 'leaves it as it is'.

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?

Dense, line-per-parameter layout with the precedence rule front-loaded in the first sentence. No filler, though the revert/empty semantics sit at the very end rather than with the fields they modify.

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

Completeness3/5

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

Six parameters at 0% schema coverage, no annotations, no output schema — the description documents five of six fields well but leaves the single required parameter unexplained, and gives no indication of the return value or failure modes.

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 0%, so the description must compensate, and it largely does: enumerated bed types, print_sequence modes with an explanation of 'by object', filament order example [2, 1], spiral_vase on/off, and prime_tower as [x, y] in mm with placement intent. The notable gap is the required 'plate' parameter itself, which is never described (index? name? origin?).

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?

States the resource precisely (settings of one plate) and the key semantic that these are per-plate overrides that 'win over the project's'. That scope distinction separates it from project-level siblings like set_setting without naming them explicitly.

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?

Explains value semantics for reverting ('global' or [] returns to the project's choice; empty leaves it as is), which implies when to pass what. But it never states when to call this versus set_setting or add_plate, nor any prerequisite (e.g. an open project with an existing plate).

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

set_printerB

Switch printer (e.g. P1S -> A1M). Filament presets are swapped for the same filaments on the new printer. With rearrange, objects are re-placed to fit the new bed (extra plates are added if needed).

NameRequiredDescriptionDefault
printerYes
processNo
rearrangeNo

TDQS

B3.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does real work: it discloses two non-obvious cascading effects — filament presets are remapped to equivalents on the new printer, and objects are re-placed on the new bed with extra plates added if needed. It still omits whether the switch is reversible/undoable and whether it affects already-sliced plates.

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?

Three tight sentences, front-loaded with the core action before the side effects. Every sentence adds information; only the parenthetical example is slightly loose.

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

Completeness3/5

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

For a mutation tool with no annotations, no output schema, and zero schema description coverage, the description covers consequences well but is incomplete on the input side — the 'process' parameter and the accepted printer identifier format are unaddressed, and there is no mention of failure modes (e.g. printer not available).

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

Parameters2/5

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

Schema description coverage is 0%, so the description must explain all three parameters. It explains 'rearrange' well (re-place objects, add plates) and hints at 'printer' via the P1S/A1M example, but leaves 'process' completely unexplained and never states whether 'printer' expects a model name, a preset name, or an ID.

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?

States a specific verb and resource ('Switch printer') and anchors it with a concrete example (P1S -> A1M), so the agent knows this changes the active printer profile for the project. It is clearly distinct from list_printers or printer_status, though it never names a sibling to contrast with.

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 only implied: an agent can infer you call this when the project should target a different machine. There is no explicit 'use this when...', no prerequisite (e.g. printer must exist in user presets), and no pointer to list_printers for discovering valid values.

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

set_purge_volumesA

Change the purge (flush) volumes, as in Bambu Studio's Purging volumes dialog. volumes: [{"from": 1, "to": 2, "volume": 350}, ...] mm³ for single changes; matrix: every value at once, rows = from, columns = to (the diagonal is ignored); multiplier: scales all of them (0..3, 1 = as written); reset: back to the values estimated from the colors and multiplier 1. A value set by hand stays while both slots keep their color. Values are 0..900 mm³. Less purge saves filament but the new color can come out mixed at first; to waste less without that, purge into the infill or into an object with set_setting('flush_into_infill', '1') or set_object_setting(object, 'flush_into_objects', '1').

NameRequiredDescriptionDefault
resetNo
matrixNo
volumesNo
multiplierNo

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full load and does well: value ranges (0..900 mm³), multiplier range (0..3, 1 = as written), the diagonal being ignored, reset semantics, and the persistence rule ('a value set by hand stays while both slots keep their color'). It omits any note on the side effect of overwriting existing values globally when 'matrix' is used, and says nothing about what the call returns.

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 action and the dialog analogy, then parameter semantics in order of importance. It is dense — the long sentence bundling all mode descriptions and caveats takes effort to parse — but no sentence is filler, including the filament-saving advice.

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 4-parameter mutation tool with no annotations and no output schema, the description covers inputs, ranges, persistence, trade-offs and mitigations. The remaining gap is small: no pointer to get_purge_volumes for inspecting current values, and no statement about the scope of overwrite when using 'matrix'.

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

Parameters5/5

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

Schema coverage is 0%, so the description must document all four parameters — and it does, in full: 'volumes' gets a literal example with units, 'matrix' gets an orientation and the diagonal caveat, 'multiplier' gets its range and the meaning of 1, and 'reset' gets its resulting state. This is well above what the bare schema offers.

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?

A specific verb (Change) plus a specific resource (purge/flush volumes), anchored to a concrete reference point (Bambu Studio's Purging volumes dialog). It's clearly different from every other sibling, though it never names get_purge_volumes as its read counterpart, which would have made the pairing explicit.

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 description explains each mode's use case (single pair changes via 'volumes', everything at once via 'matrix', global scaling via 'multiplier', 'reset' to estimates) and offers an alternative strategy for wasting filament without mixing colors (flush_into_infill / flush_into_objects). It stops short of an explicit 'use this instead of X when Y' routing statement, but the context is clear.

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

set_settingA

Override a project setting. For filament settings (temperatures, plate temperatures...) slot = filament slot (0 = all slots). Values are Bambu Studio strings, e.g. '0.16', '15%', '65'. Useful keys: layer_height, wall_loops, sparse_infill_density, top_shell_layers, enable_support, brim_type, initial_layer_speed, ironing_type, textured_plate_temp(_initial_layer) for Textured PEI, hot_plate_temp(_initial_layer) for the smooth/High Temp plate, nozzle_temperature(_initial_layer), close_fan_the_first_x_layers, print_sequence ('by object'), curr_bed_type ('Textured PEI Plate').

NameRequiredDescriptionDefault
keyYes
slotNo
valueYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden and does disclose that the action overrides an existing setting and that slot=0 affects all filament slots for filament settings. It does not mention persistence, reversibility, permission prerequisites, side effects, or what an agent should expect after the call, leaving meaningful behavioral gaps for a mutation tool.

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?

The purpose is front-loaded in the first sentence and the rest is dense but mostly relevant. The long semicolon-separated key list is useful but somewhat run-on and could be organized more clearly.

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

Completeness3/5

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

Given no annotations, no output schema, and 0% schema description coverage, the description provides enough to attempt common setting overrides and explains value formats and slot usage. It still leaves out prerequisites, persistence/reversibility behavior, and sibling-tool routing, so it is only minimally complete for a mutation tool.

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 0%, so the description must compensate, and it substantially does: it explains slot semantics for filament settings, gives Bambu Studio value string examples, and lists many useful keys. The key explanation is still a non-exhaustive sample list rather than a complete definition, and non-filament slot behavior is not described.

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?

It states a specific verb+resource: override a project setting, with concrete examples of filament and print settings. However, it does not explicitly distinguish itself from close siblings such as set_object_setting, set_plate_settings, set_filament, or edit_preset.

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 by 'Override a project setting' and by the instruction that filament settings use the slot parameter, with 0 meaning all slots. But there is no explicit when-to-use guidance, no exclusions, and no reference to alternatives like get_setting, reset_setting, or edit_preset.

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

skip_objectsA

Stop printing some objects of the print running now, e.g. a part that came off the plate. It CANNOT be undone. ids: the objects' ids as the printer knows them (identify_id; Bambu Handy's skip list, or printer_status 'skipped_objects'). Do not list every object: to stop the whole print, cancel it on the printer. First call without confirm: nothing is sent, the answer says what would be skipped and the confirm code; tell the user, and only after they agree call again with confirm=. Bambu firmware accepts it only in LAN-only mode with Developer Mode; otherwise use Bambu Handy or the printer.

NameRequiredDescriptionDefault
idsYes
confirmNo

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so: it flags irreversibility in caps, discloses the dry-run/confirm protocol so the agent knows the first call sends nothing, and states the LAN-only + Developer Mode firmware precondition. These are exactly the traits an agent cannot infer from the schema.

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

Conciseness5/5

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

Leading sentence establishes action and irreversibility, followed by parameter semantics, exclusions, workflow, and preconditions in that order. Dense but every line carries operational weight; nothing is redundant.

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?

No output schema exists, yet the description tells the agent what a confirm-less call returns (what would be skipped plus a confirm code). For a destructive two-step printer operation, the agent has everything needed to call it correctly and safely.

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

Parameters5/5

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

Schema coverage is 0%, but the description compensates fully: 'ids' is defined as printer-side object identifiers with sourcing hints (identify_id, Bambu Handy skip list, printer_status 'skipped_objects'), and 'confirm' is explained as the code returned by the first call rather than an opaque string.

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?

States a specific verb+resource: stop printing selected objects on the currently running print, with a concrete example (a part that came off the plate). The 'print running now' scope implicitly separates it from model-side siblings like delete_object and remove_part, though it never names them 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 explicit when-not guidance ('Do not list every object: to stop the whole print, cancel it on the printer'), names alternative venues (Bambu Handy, the printer itself) when firmware preconditions fail, and prescribes the exact two-call sequence the agent must follow, including getting user agreement before confirming.

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

slice_projectA

Slice with Bambu Studio (plate 0 = all). Returns per plate: minutes, grams (total and per filament slot), cost (from the presets' price per kg), filament changes, layers and warnings. The sliced project is saved next to the project file.

NameRequiredDescriptionDefault
plateNo

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose meaningful behavior: the per-plate return payload (minutes, grams, cost, filament changes, layers, warnings) and a real side effect ('saved next to the project file'). However, it omits prerequisites (does Bambu Studio need to be running?), expected runtime, whether the project state is mutated, and failure behavior — significant gaps for a compute-heavy operation.

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?

Three short sentences, front-loaded with the action and the parameter sentinel before the return details. The middle sentence is a dense but scannable enumeration; every clause maps to real information an agent needs.

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

Completeness3/5

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

There is no output schema and no annotations, so the description reasonably takes on describing return values and the file-save side effect. But for an expensive slicing operation with a prerequisite external application, the absence of any runtime, prerequisite, or error-handling context leaves a meaningful 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 coverage is 0% — the single 'plate' parameter has only a type and default, no description. The description compensates directly by defining the sentinel value ('plate 0 = all'), which is exactly the semantic an agent needs and would otherwise get wrong. It's the key insight, though it doesn't say whether plate numbers are 1-indexed or how to discover them.

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 opening verb+resource ('Slice with Bambu Studio') is specific and unique among siblings like preview_plate, check_print_risks, or send_to_printer. The '(plate 0 = all)' parenthetical further narrows the action. It doesn't explicitly contrast itself against the preview/send siblings, so it falls just short of a 5.

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 only implied: an agent can infer this belongs in the slice-then-send pipeline, but nothing states when to slice versus preview_plate or check_print_risks, nor whether slicing is a prerequisite for send_to_printer. No exclusions or alternative-routing guidance is provided.

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

split_objectA

Split an object into its separate pieces, like Bambu Studio's Split: into='objects' makes one object per piece (each part of a multi-part object becomes an object too), into='parts' keeps one object whose parts are the pieces, so each can get its own filament. Pieces stay where they are; painted colors are kept, modifiers and negative parts go with the piece they overlap.

NameRequiredDescriptionDefault
intoNoobjects
objectYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that pieces retain their positions, painted colors are preserved, and modifiers/negative parts follow the piece they overlap. It stops short of stating whether the operation is destructive to the source object, whether it is undoable, or what it returns.

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 action, then mode semantics, then preservation rules — a logical order with no filler. It is dense and parenthetical-heavy, but each clause adds information an agent would otherwise have to guess.

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 two-parameter mutation tool with no annotations and no output schema, the description covers outcome semantics, spatial behavior, and material assignment well. Missing pieces are the fate of the original object and the return value, which an agent would want before calling.

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 0%, so the description must compensate, and it does for 'into' by enumerating both meaningful values and their distinct outcomes. The 'object' parameter is only implied (no indication whether it is a name, index, or id), which is the remaining gap.

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?

States a concrete verb and resource ("Split an object into its separate pieces") and immediately defines the two resulting modes, so the agent knows exactly what transformation happens. It does not explicitly contrast with nearby siblings such as cut_object, boolean_objects, or merge_objects, which keeps it from a 5.

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 description gives clear mode-selection guidance: into='objects' for one object per piece (including multi-part decomposition), into='parts' when each piece needs its own filament. That is real when-to-use context, but there is no guidance on when to prefer this tool over cut_object or boolean_objects, so no exclusions or alternatives are stated.

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

sync_with_bambu_studioA

Re-read the project file after you changed it by hand in Bambu Studio and saved (same file). This also happens automatically on the next command when there are no unsaved changes here; force=True takes the app's version even if there are (they are lost).

NameRequiredDescriptionDefault
forceNo

TDQS

A5/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so well. It discloses automatic synchronization timing and clearly warns that force=True discards unsaved changes by taking the app's version.

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

Conciseness5/5

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

The description is compact and front-loaded with the core action and trigger condition. Every clause adds useful information about automatic behavior or force semantics without repetition.

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 one-parameter synchronization tool with no annotations or output schema, the description provides enough context to call it correctly. It covers purpose, timing, automatic behavior, and the destructive consequence of force=True.

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

Parameters5/5

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

Although schema coverage is 0%, the description fully explains the only parameter: force=True overrides unsaved changes and takes the app's version, causing those changes to be lost. This adds essential meaning beyond the bare boolean 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 the specific action (re-read the project file) and the exact situation (after manual changes in Bambu Studio were saved to the same file). This clearly distinguishes it from sibling project-opening and saving tools by focusing on synchronization of an externally edited file.

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?

Explains when to use it: after editing the file by hand in Bambu Studio and saving. It also describes automatic synchronization when there are no unsaved changes and the special case requiring force=True when unsaved changes exist.

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

transform_objectB

Scale (uniform or per axis) and rotate an object around its center. It stays on the bed.

NameRequiredDescriptionDefault
scaleNo
objectYes
rotate_xNo
rotate_yNo
rotate_zNo
scale_xyzNo

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does contribute two genuinely useful behavioral facts: rotation pivots around the object's center and the object remains on the bed (no Z displacement). However, it says nothing about whether the change is reversible/undoable, whether it requires the object to be selected or printable, or what happens to supports/placement after scaling.

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

Conciseness5/5

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

Two tight sentences, no filler, with the operation stated first and the key constraint (stays on bed) appended. Every sentence earns its place.

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

Completeness3/5

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

For a six-parameter mutating tool with no annotations, no output schema, and zero schema coverage, the description covers purpose and pivot behavior but leaves rotation units, parameter defaults, and any failure/return behavior undocumented. Adequate as a minimum-viable definition, not complete.

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 0% across six parameters, so the description must compensate. It does clarify that scaling can be uniform or per-axis (distinguishing scale from scale_xyz) and that rotation is about the object center, but it omits the critical unit for rotate_x/y/z (degrees vs radians) and gives no hint about defaults or the required object identifier.

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 names a specific verb pair and resource — scale and rotate an object — so the operation is unmistakable. It stops short of differentiating from adjacent siblings such as orient_object or mirror_object, which also manipulate object orientation, so an agent must infer the boundary.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this versus orient_object, move_object, or mirror_object, and no prerequisites are stated. Only the implied 'if you want to scale/rotate, use this' is present, which matches the calibration's no-guidance band.

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

use_ams_filamentsA

Set the project's filament slots from what is loaded in the AMS right now (preset and color), like Bambu Studio's 'sync AMS'. Default: every loaded tray in order (project slot 1 = first loaded tray). ams_slots: pick trays explicitly, e.g. [1, 3] -> project slot 1 = AMS slot 1, project slot 2 = AMS slot 3.

NameRequiredDescriptionDefault
ams_slotsNo

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose the ordering semantics and the implicit overwrite of project slots, but it is silent on side effects agents care about: what happens to slots with no loaded tray, whether a connected printer is required, and whether previous slot configuration is destroyed.

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

Conciseness5/5

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

Two sentences, front-loaded with the primary action, and the second sentence exists solely to disambiguate the optional parameter with a concrete example. Nothing is redundant.

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 one-parameter tool with no output schema and no annotations, the definition covers purpose, default behavior, and parameter mapping. The remaining gap is error/precondition handling (printer must be online, trays empty), which would make it fully self-sufficient.

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 0% for the single parameter, but the description fully compensates: it defines the null/default behavior and gives a concrete mapping example ([1, 3] -> project slot 1 = AMS slot 1, project slot 2 = AMS slot 3). That is more than the schema offers.

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?

States a specific verb and resource — set the project's filament slots from the currently loaded AMS trays — and grounds it with a recognizable analogy ('sync AMS'). It does not explicitly distinguish itself from adjacent siblings like sync_with_bambu_studio or set_filament, which keeps it short of a 5.

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?

The default case ('every loaded tray in order') is spelled out, which implicitly tells the agent when to omit the argument. However, there is no explicit when-to-use/when-not guidance and no comparison to alternatives such as set_filament or ams_load.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 87 tool updatesv0.1.0
    • First observedadd_brim_ears
    • First observedadd_layer_action
    • First observedadd_modifier
    • First observedadd_plate
    • First observedadd_relief
    • First observedadd_shape
    • First observedalign_objects
    • First observedams_load
    • First observedams_unload
    • First observedarrange
    • First observedbambu_status
    • First observedboolean_objects
    • First observedcheck_object
    • First observedcheck_print_risks
    • First observedconvert_units
    • First observedcopy_object_settings
    • First observedcut_object
    • First observeddelete_object
    • First observeddelete_preset
    • First observeddelete_printer_files
    • First observeddownload_printer_file
    • First observedduplicate_object
    • First observededit_preset
    • First observedexport_stl
    • First observedfilament_colors
    • First observedfill_plate
    • First observedget_project
    • First observedget_purge_volumes
    • First observedget_setting
    • First observedimport_model
    • First observedlay_flat
    • First observedlist_printers
    • First observedlist_user_presets
    • First observedmake_first_layer_test
    • First observedmake_flow_test
    • First observedmake_max_flow_test
    • First observedmake_pa_tower
    • First observedmake_retraction_test
    • First observedmake_temperature_tower
    • First observedmake_vfa_test
    • First observedmeasure_between
    • First observedmeasure_object
    • First observedmerge_objects
    • First observedmirror_object
    • First observedmove_object
    • First observednew_project
    • First observedopen_in_bambu_studio
    • First observedopen_project
    • First observedorient_object
    • First observedpaint_object
    • First observedpreview_layer
    • First observedpreview_plate
    • First observedprinter_camera
    • First observedprinter_files
    • First observedprinter_status
    • First observedremove_brim_ears
    • First observedremove_height_range
    • First observedremove_layer_action
    • First observedremove_part
    • First observedremove_plate
    • First observedrename_plate
    • First observedrename_preset
    • First observedreplace_with_stl
    • First observedreprint_objects
    • First observedreset_setting
    • First observedsave_filament_preset
    • First observedsave_printer_preset
    • First observedsave_process_preset
    • First observedsave_project
    • First observedsearch_presets
    • First observedsend_to_printer
    • First observedset_filament
    • First observedset_height_range
    • First observedset_object_filament
    • First observedset_object_printable
    • First observedset_object_setting
    • First observedset_part_type
    • First observedset_plate_settings
    • First observedset_printer
    • First observedset_purge_volumes
    • First observedset_setting
    • First observedskip_objects
    • First observedslice_project
    • First observedsplit_object
    • First observedsync_with_bambu_studio
    • First observedtransform_object
    • First observeduse_ams_filaments

TDQS

B3.3/5.0

Scored across 87 tools

Disambiguation4/5

The tool set is broad, but most tools target a clearly different resource or action, and descriptions explicitly distinguish adjacent operations. Some clusters still require care, such as add_shape/add_relief/add_modifier, set_setting/set_object_setting/set_plate_settings, and the several preset and calibration-test tools.

Naming Consistency4/5

Most names follow a snake_case verb_noun pattern such as open_project, set_filament, add_plate, and preview_plate. There are minor deviations with noun-style read tools like printer_status and filament_colors, plus a bare verb like arrange, but the convention remains readable and predictable.

Tool Count1/5

Eighty-seven tools is far beyond a well-scoped set and bundles project editing, object modeling, slicing, calibration tests, preset management, printer control, AMS handling, and SD-card file management into one server. Even for this broad domain, the surface is extreme and will impose high selection and context costs.

Completeness5/5

Coverage is unusually comprehensive: project lifecycle, plates, objects, parts, settings, presets, slicing, previews, sending, AMS, printer status, camera, printer files, and many calibration workflows are all represented. Only specialized print-job controls such as pause/resume or cancel are not directly present, which is minor relative to the overall surface.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers