Bambu Printer MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Bambu Printer MCPcheck status of all printers"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Bambu Printer MCP
A privacy-conscious Model Context Protocol server for managing, monitoring, slicing for, and controlling multiple Bambu Lab 3D printers.
This project is an independent GPL-2.0 continuation of DMontgomery40/bambu-printer-mcp. It keeps the original printer, AMS, 3MF, camera, and slicing capabilities while adding a named multi-printer registry, fleet status, reconnect management, per-printer operation serialization, credential references, and stronger privacy defaults.
It is community software and is not affiliated with or endorsed by Bambu Lab.
Highlights
Named profiles for multiple printers
Explicit printer targeting with safe default selection
Redacted fleet status with bounded parallel queries
Per-printer serialization across reads, commands, reconnects, and profile changes
Runtime-only access tokens or environment-variable references
Atomic
0600registry files and0700config directoriesMQTT printer status and control
FTPS upload, listing, and guarded deletion
AMS inventory, matching, RFID reread, and supported dryer controls
Camera snapshots for supported printer families
Bambu Studio and compatible Orca-family slicing workflows
H2-family 3MF routing and crash-resistant dependency patching
Stdio and loopback-only Streamable HTTP MCP transports
Related MCP server: BambuStudio MCP Server
Safety model
This server can move hardware, heat components, upload files, and start or stop prints. The following rules are intentional:
A verified printer model is required for print operations.
Physical commands target one named printer at a time.
allis limited to fleet status and explicitly confirmed reconnect operations.File deletion requires
confirm:trueand is restricted to printer-managed directories.Persisted printer profiles may reference identifiers and secrets, but may not contain plaintext serial numbers, device IDs, or access tokens.
Streamable HTTP is restricted to loopback because the server does not provide remote authentication.
Always check the build plate, nozzle, filament, AMS mapping, and selected printer before starting a job.
Requirements
Node.js 20 or newer
A supported Bambu Lab printer reachable on the same trusted LAN
LAN Only or Developer Mode as required by the printer firmware
Bambu Studio only when using local slicing tools
ffmpegonly when using RTSP-based camera snapshots
Supported model identifiers:
p1s, p1p, p2s, x1c, x1e, a1, a1mini, h2d, h2s, h2c
Install
This is a public GitHub project, but it is intentionally not published to npm. Install from the audited source tree so its dependency overrides and Bambu compatibility patch are applied exactly as tested.
git clone https://github.com/ceweldy/bambu-printer-mcp.git
cd bambu-printer-mcp
npm ci
npm testRun the MCP server over stdio:
npm startMulti-printer configuration
The default registry path is:
~/.config/bambu-printer-mcp/printers.jsonThe registry stores only nonsecret metadata and environment-variable names. Create it with private permissions:
mkdir -p ~/.config/bambu-printer-mcp
chmod 700 ~/.config/bambu-printer-mcpExample registry:
{
"version": 1,
"defaultPrinter": "shop-p1s",
"printers": [
{
"id": "shop-p1s",
"name": "Shop P1S",
"host": "printer-one.local",
"model": "p1s",
"serialEnv": "BAMBU_SHOP_P1S_SERIAL",
"accessTokenEnv": "BAMBU_SHOP_P1S_TOKEN",
"devIdEnv": "BAMBU_SHOP_P1S_DEVICE_ID",
"bedType": "textured_plate",
"nozzleDiameter": "0.4"
},
{
"id": "engineering-x1c",
"name": "Engineering X1C",
"host": "printer-two.local",
"model": "x1c",
"serialEnv": "BAMBU_ENGINEERING_X1C_SERIAL",
"accessTokenEnv": "BAMBU_ENGINEERING_X1C_TOKEN",
"devIdEnv": "BAMBU_ENGINEERING_X1C_DEVICE_ID",
"bedType": "engineering_plate",
"nozzleDiameter": "0.4"
}
]
}Then set the referenced values in the private environment used to launch the MCP server. Do not commit them to this repository.
You may select a different registry path with BAMBU_PRINTERS_FILE. BAMBU_PRINTERS_JSON is also supported for clients that inject a complete private configuration through the process environment.
Backward-compatible single-printer environment
The original environment variables still work:
PRINTER_HOST
BAMBU_SERIAL
BAMBU_TOKEN
BAMBU_MODEL
BED_TYPE
NOZZLE_DIAMETERMulti-printer configuration is preferred because it avoids repeatedly passing credentials through tool arguments.
H2 client certificates
H2-family firmware that requires mutual TLS can load a Bambu-issued client
certificate and key from BAMBU_CLIENT_CERT and BAMBU_CLIENT_KEY. When those
variables are omitted, the server checks these private standard paths:
~/.config/bambu-printer-mcp/client.crt
~/.config/bambu-printer-mcp/client.keySet the key file to mode 0600. Both files must exist as a pair. No certificate
or key material belongs in the repository.
Version 2.0 automatically migrates the legacy
~/Desktop/bambu certs/embedded-cert.pem and embedded-key.pem pair into the
private standard paths. The current process can still use the legacy pair if
that migration cannot be completed.
MCP client configuration
Build the project first, then configure your MCP client to run the compiled entry point. Replace the path with the private local checkout path on that machine.
{
"mcpServers": {
"bambu-printers": {
"command": "node",
"args": ["/absolute/path/to/bambu-printer-mcp/dist/index.js"],
"env": {
"BAMBU_PRINTERS_FILE": "/absolute/path/to/private/printers.json",
"BAMBU_SHOP_P1S_SERIAL": "set-in-private-client-config",
"BAMBU_SHOP_P1S_TOKEN": "set-in-private-client-config",
"BAMBU_SHOP_P1S_DEVICE_ID": "set-in-private-client-config",
"BAMBU_ENGINEERING_X1C_SERIAL": "set-in-private-client-config",
"BAMBU_ENGINEERING_X1C_TOKEN": "set-in-private-client-config",
"BAMBU_ENGINEERING_X1C_DEVICE_ID": "set-in-private-client-config"
}
}
}
}Fleet tools
Tool | Purpose |
| List redacted profile summaries and readiness |
| Add an in-memory profile or persist safe metadata references |
| Remove a profile after |
| Select the implicit target |
| Query every ready printer with bounded concurrency |
| Reconnect one printer or an explicitly confirmed fleet |
Every printer-specific tool accepts a printer field containing the configured ID. If it is omitted, the registry uses the configured default or automatically selects the only configured printer. When multiple printers exist without a default, the call fails and lists the valid IDs.
Example operator requests:
List my configured printers.
Get fleet status.
Show AMS inventory for printer shop-p1s.
Capture a camera snapshot from engineering-x1c.
Pause the current job on shop-p1s.Core printer capabilities
The server includes tools for:
printer status, HMS diagnostics, temperatures, print progress, and AMS data
printer file listing, uploads, guarded deletion, and print start
pause, resume, cancel, speed, fan, light, temperature, airduct, and object-skip commands
AMS filament inventory, automatic 3MF-to-AMS matching, RFID reread, and drying controls
chamber-camera JPEG snapshots
STL inspection and transformations
Bambu Studio and compatible Orca-family slicing
pre-sliced
.gcode.3mfprinting with plate and AMS mapping controlsoptional BambuNetwork bridge workflows
Use tools/list from an MCP client for the authoritative schema and descriptions.
MCP resources
Configured printers are exposed by stable ID instead of IP address:
fleet://status
printer://shop-p1s/status
printer://shop-p1s/files
printer://shop-p1s/hmsResource listings never include printer IPs, serial numbers, or access tokens.
Version 2.0 resource migration
Version 2.0 intentionally replaces legacy host-based resource URIs with
profile IDs. Update printer://<host>/... consumers to
printer://<printer-id>/.... Host aliases are not retained because combining
caller-selected endpoints with stored credentials would weaken profile
isolation.
Transports
Stdio is the default and recommended transport.
For local Streamable HTTP:
MCP_TRANSPORT=streamable-http \
MCP_HTTP_HOST=127.0.0.1 \
MCP_HTTP_PORT=3000 \
MCP_HTTP_PATH=/mcp \
npm startOnly loopback hosts are accepted. Use a separately authenticated gateway if remote access is required.
Printer communication
MQTT over TLS on printer port 8883 carries status and control commands.
Implicit FTPS on printer port 990 handles file operations.
Some camera families use TLS port 6000; others use RTSPS with
ffmpeg.
Bambu printers commonly use self-signed local certificates, so the current printer transports do not perform public-CA verification. Keep printers and this MCP process on a trusted LAN or isolated VLAN. Do not expose printer ports to the public internet.
H2-family behavior
The upstream bambu-node dependency does not natively identify every H2 model and can throw from an asynchronous MQTT listener. This project carries a patch-package patch that:
preserves the configured model for unknown OTA serial prefixes
treats missing OTA model metadata as recoverable
treats unusual printer state transitions as recoverable instead of terminating the MCP process
Regression tests exercise those event paths after every install.
Validation order for a real printer
Use this order when connecting a new printer:
list_printersget_printer_statusHMS and AMS reads
file listing
camera snapshot
disconnect and reconnect
upload a known harmless file without printing
physical controls only when the operator can observe the printer
print start only with a verified plate, nozzle, material, model, and AMS mapping
Automated tests never start a real print.
Verified hardware coverage
The multi-printer release has been exercised against P1S and A1 hardware on a local network. Status, fleet status, HMS diagnostics, AMS inventory, FTPS file listing, disconnect, reconnect, and post-reconnect status were verified through the packaged MCP interface. That validation did not start, pause, resume, or cancel a print, move an axis, change a heater, or upload a file.
Development
npm ci
npm run build
npm test
npm audit --omit=dev
npm run privacy:check
npm pack --dry-runCI runs the same build, test, dependency-audit, package, and privacy gates.
Privacy
Do not commit:
printer IP addresses or private hostnames
serial numbers, LAN access codes, cloud credentials, or tokens
Wi-Fi information or network screenshots
camera images or MQTT captures
operator names or printer nicknames
local absolute paths, logs,
.envfiles, certificates, or private keys
The first public history of this repository is a sanitized snapshot. Earlier upstream history remains available from the attributed upstream repository but is intentionally not mirrored here.
License and provenance
GPL-2.0. See LICENSE and UPSTREAM.md.
Available Tools
46 toolsadd_printerA
Add or update a named printer profile. Plaintext tokens remain in memory only; persisted profiles must reference an environment variable.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Stable lowercase printer ID used by other tools | |
| host | Yes | Printer hostname or LAN IP address | |
| name | No | Optional operator-friendly printer name | |
| model | Yes | Exact Bambu Lab printer model | |
| dev_id | No | Optional BambuNetwork device ID | |
| serial | No | Printer serial number; serial_env is preferred for persisted profiles | |
| persist | No | Persist only nonsecret metadata and environment-variable references | |
| replace | No | Replace an existing profile with the same ID | |
| bed_type | No | Default build plate type | |
| dev_id_env | No | Environment variable containing the BambuNetwork device ID | |
| serial_env | No | Environment variable containing the printer serial number | |
| access_token | No | LAN access token for this process only; never persisted | |
| make_default | No | Make this the default printer | |
| nozzle_diameter | No | Default nozzle diameter in millimeters | |
| access_token_env | No | Environment variable containing the LAN access token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that plaintext tokens stay in memory only and persisted profiles use env vars. However, it omits details on update semantics, error states, or prerequisites, leaving gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with the key information front-loaded. Every word is necessary; no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 15 parameters and no output schema or annotations, the description is brief. It lacks information on return value, error cases, or prerequisites (e.g., authentication). The context is sufficient for basic use but incomplete for comprehensive understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with thorough parameter descriptions. The tool description adds value beyond schemas by explaining the memory-only vs. persistent distinction, which aids in understanding parameter usage like access_token vs. access_token_env.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Add or update a named printer profile', specifying the action (add/update) and resource (printer profile). It also differentiates between in-memory tokens and persisted env var references, distinguishing it from siblings like remove_printer or set_default_printer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions token persistence behavior but does not explicitly state when to use this tool versus siblings (e.g., when to add vs. update, or when to use env vars). Usage context is implied but not clearly delineated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bambu_network_bridge_statusC
Inspect or probe the FULU OrcaSlicer-bambulab BambuNetwork bridge runtime used for cloud and restored BambuNetwork printing.
| Name | Required | Description | Default |
|---|---|---|---|
| connect | No | When true, start the bridge command and run a handshake plus agent initialization probe. | |
| user_info | No | Optional BambuNetwork user_info JSON string to pass to net.change_user after the agent starts. | |
| timeout_ms | No | Bridge request timeout in milliseconds for the connect probe. | |
| country_code | No | BambuNetwork country code, such as US, used by the agent during startup. | |
| bridge_command | No | Override command for the FULU bridge host or macOS/WSL wrapper; defaults to BAMBU_NETWORK_BRIDGE_COMMAND. | |
| bambu_network_config_dir | No | Config/log directory used by the BambuNetwork agent; defaults to BAMBU_NETWORK_CONFIG_DIR or a user config directory. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It fails to state whether the tool is read-only, changes state, requires authentication, or has side effects. 'Inspect or probe' implies a read operation but is not explicit, leaving safety unknown.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 20 words, efficiently conveying the core purpose without wasted verbiage. It is front-loaded with the action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 6 parameters, no output schema, and no annotations, the description is too minimal. It does not explain the impact of parameters (e.g., what happens with 'connect' true/false), expected output format, or default behavior when no parameters are provided. This leaves significant gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptive parameter names and inline descriptions. The tool description adds no extra semantic value beyond the schema. Per the guideline, this earns a baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs 'inspect or probe' and identifies the resource as the 'FULU OrcaSlicer-bambulab BambuNetwork bridge runtime'. It adds context about cloud and restored printing. However, it does not explicitly differentiate from sibling tools like 'bambu_network_call' or general status tools, leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool over alternatives (e.g., 'bambu_network_call' or 'get_fleet_status'). No conditions, prerequisites, or exclusions are mentioned. The agent must infer usage from the name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bambu_network_callB
Call a raw FULU OrcaSlicer-bambulab BambuNetwork bridge method, optionally with an initialized network agent injected into the payload.
| Name | Required | Description | Default |
|---|---|---|---|
| method | Yes | FULU bridge method name, for example bridge.handshake, net.is_user_login, or net.get_user_selected_machine. | |
| payload | No | JSON payload passed to the bridge method. | |
| user_info | No | Optional BambuNetwork user_info JSON string to pass to net.change_user after the agent starts. | |
| timeout_ms | No | Bridge request timeout in milliseconds. | |
| with_agent | No | When true, initialize a BambuNetwork agent and add its agent id to the payload before calling the method. | |
| country_code | No | BambuNetwork country code, such as US, used by the agent during startup. | |
| bridge_command | No | Override command for the FULU bridge host or macOS/WSL wrapper; defaults to BAMBU_NETWORK_BRIDGE_COMMAND. | |
| bambu_network_config_dir | No | Config/log directory used by the BambuNetwork agent; defaults to BAMBU_NETWORK_CONFIG_DIR or a user config directory. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully convey behavioral traits. It mentions the raw nature and optional agent injection but fails to disclose destructiveness, authentication needs, side effects, or rate limits, leaving significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no waste. It conveys the essential purpose efficiently, earning top marks for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 8 parameters (including nested objects) and no output schema, the one-sentence description is insufficient. It does not explain how to compose payloads, what methods are valid, or the implications of with_agent, leaving the agent under-informed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The tool description adds no additional parameter context beyond what the schema provides, thus baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('call') and identifies the exact resource ('raw FULU OrcaSlicer-bambulab BambuNetwork bridge method'), clearly distinguishing it from higher-level sibling tools like print, slice, or bambu_network_bridge_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives in the sibling list, such as using a dedicated higher-level tool instead of a raw bridge method, or any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_mcp_edit_modelB
Send STL-edit instructions to a Blender MCP bridge command for advanced model edits
| Name | Required | Description | Default |
|---|---|---|---|
| execute | No | Execute bridge command (true) or return payload only (false) | |
| stl_path | Yes | Path to the local STL file | |
| operations | Yes | Ordered edit operations for Blender (e.g. remesh, boolean, decimate) | |
| bridge_command | No | Override command for invoking Blender MCP bridge |
TDQS
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 describes the action as 'Send STL-edit instructions' but does not disclose whether the operation is destructive, whether Blender must be running, what happens on failure, or any side effects. The description is too vague for behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that efficiently conveys the core purpose without filler. Every word is necessary and front-loaded with the key verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters, no output schema, and no annotations, the description is insufficient. It does not explain return behavior, prerequisites (like Blender being running), or how it relates to the many sibling tools. A user would need additional knowledge to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with each parameter having a description (e.g., 'Path to the local STL file', 'Ordered edit operations for Blender'). The tool description adds no extra meaning beyond summarizing the overall action. Baseline 3 is appropriate since schema already documents parameters thoroughly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Send STL-edit instructions to a Blender MCP bridge command for advanced model edits'. It identifies the specific verb 'send', the resource (STL instructions), and the context (Blender MCP bridge). This distinguishes it from sibling tools like specific edits (merge_vertices, center_model) or print tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Siblings include specific STL editing tools (merge_vertices, center_model, lay_flat) and this is a general bridge for advanced edits, but the description does not explain scenarios or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
camera_snapshotA
Capture a single JPEG frame from the printer's chamber camera. A1/P1 use TCP-on-6000; X1/P2S/H2 use RTSP via ffmpeg. Returns JPEG as base64; pass save_path to also write the bytes to disk.
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP of the printer (default: value from env) | |
| printer | No | Configured printer ID. Omit to use the default printer or the only configured printer. | |
| save_path | No | Optional absolute path to write the JPEG to disk. If omitted, only the base64 payload is returned. | |
| timeout_ms | No | Max ms to wait for a full frame (default 8000). Camera may take a few seconds on cold start. | |
| bambu_model | No | Printer model. Used to route to the correct protocol or fail fast on unsupported models. Defaults to BAMBU_MODEL. | |
| bambu_token | No | Access token (default: value from env) | |
| ffmpeg_path | No | Override path to the ffmpeg binary used by the RTSP path. Defaults to ffmpeg via $PATH. Required only for the RTSP transport (X1, P2S, H2 series). | |
| bambu_serial | No | Serial number (default: value from env) | |
| experimental | No | Deprecated and ignored. Earlier this flag let callers probe H2 series via the A1/P1 TCP-on-6000 path; live testing on an H2S confirmed H2 uses RTSP instead, so the flag has no effect now. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and discloses key traits: protocol differences, output format, optional disk write, timeout behavior, and cold start delay. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with front-loaded main action and output. Every sentence is informative with no waste. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core behavior, output, and protocol differences. It lacks details on error handling or authentication, but given the schema covers parameter descriptions, it is mostly complete for a snapshot tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by summarizing the protocol routing based on 'bambu_model' and noting the 'experimental' parameter is deprecated, which goes beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Capture a single JPEG frame'), the specific resource ('printer's chamber camera'), and the output format ('Returns JPEG as base64'). It distinguishes from sibling tools as none are camera-related.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use based on printer model (A1/P1 vs X1/P2S/H2) via protocol details, but does not explicitly state when not to use or list alternative tools. The deprecated flag guidance is useful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_printB
Cancel the current print job on the Bambu Lab printer
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP of the printer (default: value from env) | |
| printer | No | Configured printer ID. Omit to use the default printer or the only configured printer. | |
| bambu_token | No | Access token (default: value from env) | |
| bambu_serial | No | Serial number (default: value from env) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility. It only states the action but does not disclose behavioral traits such as whether the cancel is immediate, reversible, or has side effects (e.g., leaving the printer in an inconsistent state).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no extraneous words. It is front-loaded and quickly conveys the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple cancellation tool, the description minimally covers the action. However, lacking behavioral details and with no output schema, it falls short. It is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds no additional meaning beyond what is in the schema. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Cancel' and the resource 'current print job' with the specific device 'Bambu Lab printer'. It effectively distinguishes from sibling tools like pause_print and resume_print.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., pause_print). Prerequisites, such as requiring an active print job, are not mentioned. The description lacks context for proper selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
center_modelB
Translate the model so its geometric center is at the origin (0,0,0)
| Name | Required | Description | Default |
|---|---|---|---|
| stl_path | Yes | Path to the STL file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It mentions translation but does not disclose whether the operation modifies the file in-place, returns a new file, or has other side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, front-loaded sentence with no redundancy. Could be slightly more structured, but effective for a simple operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks details about return values or file handling. With no output schema and no annotations, the agent is left guessing what happens post-operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter (stl_path), but the description adds no extra meaning beyond the schema's 'Path to the STL file'. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('translate') and resource ('model'), specifying the exact goal: geometric center at origin. It distinguishes from sibling tools like rotate_stl or scale_stl.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance. Sibling tools like lay_flat or merge_vertices are not mentioned, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_hms_errorsC
Clear HMS or print error state on the Bambu Lab printer using the clean_print_error MQTT command.
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP of the printer (default: value from env) | |
| printer | No | Configured printer ID. Omit to use the default printer or the only configured printer. | |
| bambu_token | No | Access token (default: value from env) | |
| bambu_serial | No | Serial number (default: value from env) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It mentions the MQTT command but does not disclose side effects (e.g., whether it requires specific permissions, or if it might affect ongoing prints). The description is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with key action and method. No wasted words, but could benefit from slightly more structure separating purpose and method.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and 4 optional parameters, the description does not explain what happens after execution (e.g., confirmation, error codes). Incomplete for a tool that mutates printer state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 4 parameters have descriptions in the input schema (100% coverage), so the description adds no additional meaning. Baseline score of 3 is appropriate as the schema already handles parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool clears HMS or print error states using a specific MQTT command. It distinguishes from siblings like cancel_print which deal with job control, though the term 'HMS' could be more explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. No mention of prerequisites or when not to use it, such as if the printer is disconnected or not in an error state.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_printer_fileA
Delete a file from the Bambu Lab printer's SD card via FTPS. Destructive: requires confirm:true. Restricted to cache/, timelapse/, and logs/ directories. Path traversal segments (..) are rejected.
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP of the printer (default: value from env) | |
| confirm | No | Must be true to actually delete. When false or omitted the call returns without sending an FTP request. | |
| printer | No | Configured printer ID. Omit to use the default printer or the only configured printer. | |
| filename | Yes | File to delete. Bare names default to cache/<name>; pass a relative path like timelapse/foo.mp4 to target other allowed directories. | |
| bambu_token | No | Access token (default: value from env) | |
| bambu_serial | No | Serial number (default: value from env) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description discloses destructive nature, confirm requirement, restricted directories, and path traversal rejection. Covers key behaviors well but could mention expected outcome or error cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences: first states purpose and method, second adds critical behavioral constraints. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers destructive nature, confirmation, directory restrictions, and path traversal. Missing return value description but overall adequate for a parameter-rich tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage; description adds useful context like filename default directory and path format. Adds value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'Delete', resource 'file from Bambu Lab printer's SD card', and method 'via FTPS'. Distinguishes from sibling tools like list_printer_files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Indicates destructiveness and need for confirm:true but does not explicitly state when to avoid or suggest alternatives. Usage context is implied but not fully elaborated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extend_stl_baseC
Extend the base of an STL file by a specified amount
| Name | Required | Description | Default |
|---|---|---|---|
| stl_path | Yes | Path to the STL file to modify | |
| extension_height | Yes | Height in mm to extend the base by |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits like whether the file is modified in-place or a new file is created, but it does not. Side effects and requirements are absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no unnecessary words. It effectively communicates the core purpose without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of an output schema and the presence of sibling STL manipulation tools, the description is too brief. It does not explain the output, error conditions, or how it differs from similar tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds no extra meaning beyond the schema's property descriptions; it merely restates the schema information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action 'extend the base' on an STL file, which distinguishes it from sibling tools like scale_stl or rotate_stl. However, it is slightly vague on what 'extend the base' entails (e.g., adding material to the bottom vs. increasing thickness).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as scale_stl or lay_flat. The description does not mention any prerequisites or contextual usage hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fleet_statusA
Get a redacted, failure-isolated status summary for every configured printer.
| Name | Required | Description | Default |
|---|---|---|---|
| concurrency | No | Maximum simultaneous status requests, from 1 to 8 (default: 3) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description is the sole source for behavioral traits. It mentions 'redacted' and 'failure-isolated', hinting at data filtering, but doesn't elaborate on what is redacted, authentication needs, or performance implications of hitting many printers. Partially transparent but insufficient detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-structured sentence that is front-loaded with action and key modifiers. No unnecessary words; every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional param, no output schema), the description provides a suitable high-level overview. However, it omits details about the return format, what 'failure-isolated' means concretely, and how 'redacted' affects the data. Sufficient but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of the single parameter (concurrency) with a clear description. The tool description adds no extra meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get'), the resource ('fleet status summary'), and scope ('for every configured printer'). It adds specificity with 'redacted, failure-isolated', distinguishing it from sibling tools like get_printer_status (single printer) and list_printers (just names).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implicitly suggests use for an overview of all printers with a focus on failures, but no explicit when-to-use, when-not, or comparison with sibling tools like get_printer_status or list_printers. This leaves some ambiguity for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_printer_filamentsA
Get the live AMS/external filament inventory from the printer over MQTT, including loaded/empty slot summary, resolved slicer profile paths, match confidence, and recommended load_filaments when the printer model is known.
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP address of the printer (default: value from env) | |
| printer | No | Configured printer ID. Omit to use the default printer or the only configured printer. | |
| bambu_model | No | Optional model hint used to resolve Bambu/Orca filament profile JSONs for each tray. | |
| bambu_token | No | Access token for the Bambu Lab printer (default: value from env) | |
| bambu_serial | No | Serial number for the Bambu Lab printer (default: value from env) | |
| nozzle_diameter | No | Optional nozzle diameter used when resolving model-specific filament profile JSONs (default: 0.4). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description provides good behavioral context: it retrieves live data over MQTT, specifies output components (slot summary, resolved paths, confidence, recommendations), and implies a read-only operation. No side effects or permissions are mentioned, but the core behavior is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, information-dense sentence conveys the tool's purpose, method, and key outputs without extraneous words, achieving high conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description lists the main return components and operating conditions, providing sufficient context for an agent to understand what the tool returns and when it is applicable. Could be slightly more explicit about the output structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining that bambu_model and nozzle_diameter are used to resolve filament profiles and that the printer model condition triggers recommendations, going beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the verb 'Get' and the resource 'live AMS/external filament inventory from the printer over MQTT', distinguishing it from any sibling tools that focus on printer status, slot resolution, or other operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that the tool is for live inventory retrieval and mentions a condition (when printer model is known) for recommended load_filaments, but lacks explicit guidance on when to use this tool versus alternatives like resolve_3mf_ams_slots or get_printer_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_printer_statusB
Get the current status of the Bambu Lab printer
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP address of the printer (default: value from env) | |
| printer | No | Configured printer ID. Omit to use the default printer or the only configured printer. | |
| bambu_token | No | Access token for the Bambu Lab printer (default: value from env) | |
| bambu_serial | No | Serial number for the Bambu Lab printer (default: value from env) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits. It indicates a read operation via 'Get', which is appropriate, but lacks details on what status information is returned or if the call is non-blocking. The description is minimally adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no waste. However, it could be restructured to include more context without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the numerous sibling tools related to printers, the description is incomplete. It does not clarify what 'status' encompasses compared to 'get_fleet_status' or 'get_printer_filaments', and the lack of output schema further limits completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for all 4 parameters, so the baseline is 3. The description adds no additional meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses 'Get the current status', which is a specific verb and resource that clearly indicates the tool reads the printer's status. It distinguishes from siblings like 'get_fleet_status' (fleet-wide) and 'get_printer_filaments' (filament-specific).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'get_fleet_status' or 'list_printers'. There is no discussion of prerequisites or 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.
get_slice_settingsA
Inspect slicer settings from a saved 3MF template or a JSON/config slicer profile without slicing anything.
| Name | Required | Description | Default |
|---|---|---|---|
| source_path | No | Path to a 3MF template, extracted project_settings.config, or slicer profile JSON. | |
| template_dir | No | Optional template directory override when resolving template_name. | |
| template_name | No | Optional named template from the local registry. If provided, resolves source_path automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It explicitly states 'without slicing anything', which indicates the tool is non-destructive and read-only. However, it does not disclose other behavioral traits such as required permissions, file format limitations, or potential errors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is perfectly concise, with no extraneous information. Every word adds value, and the key point about not slicing is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with 3 parameters and no output schema. The description adequately explains the tool's purpose and behavior, but lacks details about what the returned settings look like or how to interpret them. For a complete understanding, an agent would benefit from knowing the output structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage for parameter descriptions, so the baseline is 3. The description adds context by mentioning 'saved 3MF template or a JSON/config slicer profile', which elaborates on the source_path parameter, but does not add significant additional meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'inspect' and the resource 'slicer settings from a saved 3MF template or a JSON/config slicer profile', and explicitly distinguishes itself from slicing operations. This differentiates it from sibling tools like slice_with_template or slice_stl, which perform actual slicing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for inspecting settings without slicing, but does not provide explicit guidance on when to use this tool versus alternatives like get_stl_info or list_templates. No exclusions or alternative suggestions are given, so the agent must infer the use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stl_infoA
Get detailed information about an STL file (bounding box, face count, dimensions)
| Name | Required | Description | Default |
|---|---|---|---|
| stl_path | Yes | Path to the STL file to analyze |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden. It indicates a read-only operation by stating 'Get detailed information', but does not disclose error behavior, permissions needed, or any side effects. It adds some value by listing the exact information returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that immediately conveys purpose. No unnecessary words, well front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple query tool with one parameter and no output schema, the description is nearly complete. It states what it does and what information it returns. Minor improvement could include noting it does not modify the file.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (the single parameter 'stl_path' is described). The tool description adds no additional meaning beyond the schema's 'Path to the STL file to analyze'. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'STL file', and specifies the kind of information (bounding box, face count, dimensions). It distinguishes from sibling tools that modify STL files, making it unambiguously a read-only information retrieval tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing STL file details, but gives no explicit guidance on when to use this tool versus alternatives like scale_stl or slice_stl. No when-not or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lay_flatA
Rotate the model so its largest flat face lies on the XY plane (Z=0)
| Name | Required | Description | Default |
|---|---|---|---|
| stl_path | Yes | Path to the STL file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains the core action but lacks details on side effects (e.g., whether the file is modified in place), error handling for models without a flat face, or return value. With no annotations, more disclosure would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, well-structured sentence that front-loads the action and outcome with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple tool but missing expected output description (e.g., returns path or modifies in place). Could mention prerequisites like presence of a flat face.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter with 100% schema coverage, but the description adds no extra meaning beyond the schema's 'Path to the STL file'. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool rotates the model so its largest flat face lies on the XY plane, using a specific verb and resource that distinguishes it from sibling tools like rotate_stl which require manual angles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., rotate_stl, center_model). The description does not specify prerequisites or scenarios where this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_3mf_plate_objectsA
List object IDs from a sliced 3MF plate. Use these IDs with skip_objects during a running print.
| Name | Required | Description | Default |
|---|---|---|---|
| plate_index | No | 0-based plate index to inspect (default: 0) | |
| three_mf_path | Yes | Path to a sliced 3MF/.gcode.3mf file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is transparent about the read-only nature of listing object IDs. No annotations are provided, so the description carries the burden and does so adequately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The first sentence states the purpose, and the second gives actionable guidance. Excellent front-loading.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a simple list operation, but lacking an output schema, it does not specify the format of the returned object IDs. However, the purpose and usage are clear enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description does not add significant meaning beyond the schema's parameter descriptions. The additional context about skip_objects is usage guidance, not parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'object IDs from a sliced 3MF plate', and distinguishes itself from siblings by specifying the use with skip_objects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises to use the IDs with skip_objects during a running print, providing clear context. It does not state when not to use it or list alternatives, but the usage is well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_printer_filesB
List files stored on the Bambu Lab printer
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP of the printer (default: value from env) | |
| printer | No | Configured printer ID. Omit to use the default printer or the only configured printer. | |
| bambu_token | No | Access token (default: value from env) | |
| bambu_serial | No | Serial number (default: value from env) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose any behavioral traits beyond listing files. With no annotations provided, the description carries full burden for transparency but fails to mention read-only nature, error conditions, or scope of files listed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence. It is front-loaded and wastes no words. However, it could be expanded slightly to include output hints without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema and no annotations, the description should at least hint at what information is returned (e.g., file names, sizes). It is insufficient for the complexity of the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the descriptions for each parameter are already present. The tool description adds no extra meaning beyond what the schema provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' and identifies the resource 'files stored on the Bambu Lab printer'. It clearly distinguishes from sibling tools like delete_printer_file or get_printer_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. There is no mention of prerequisites, context, or typical usage patterns, such as listing files before deleting or printing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_printersA
List configured printer profiles without exposing hosts, serial numbers, or access tokens.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility for behavioral disclosure. It explicitly states that hosts, serial numbers, and access tokens are not exposed, which is a critical safety trait. However, it doesn't mention authentication requirements or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence containing exactly the necessary information without any filler, achieving optimal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, the description covers the core function and a key behavioral constraint. It does not specify the output format (e.g., printer IDs vs. names) or whether the list can be sorted, but given the low complexity, it is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so schema coverage is trivially 100%. The description adds value by clarifying that the output is a sanitized list, which is meaningful beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb 'List' and the resource 'configured printer profiles', and adds an important qualifier about hiding sensitive information, making it distinct from sibling tools like add_printer or get_printer_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given on when to use this tool versus alternatives such as get_printer_status or list_printer_files. The description implies listing configurations, but lacks context on preferring this over other list-like tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_templatesB
List saved slicing templates from the local template registry directory.
| Name | Required | Description | Default |
|---|---|---|---|
| template_dir | No | Optional template directory override. Defaults to BAMBU_TEMPLATE_DIR or the server's configured local template registry. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral aspects. It only says 'list' without describing return format, error handling, or side effects. No indication that this is a read-only operation or what happens if the directory is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no extraneous information. Every word is necessary, and it is front-loaded with the action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one optional param, no output schema), the description is minimally adequate. However, it lacks details on return values and edge cases, which could be added for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter. The description does not add new information beyond the schema. Baseline 3 is appropriate as the schema already covers parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists saved slicing templates from a specific local directory. The verb 'List' and resource 'saved slicing templates' are precise, distinguishing it from siblings like save_template and slice_with_template.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool or when to avoid it. No mention of prerequisites, default behavior, or alternatives. The description only states the source directory without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_verticesB
Merge vertices in an STL file closer than the specified tolerance
| Name | Required | Description | Default |
|---|---|---|---|
| stl_path | Yes | Path to the STL file | |
| tolerance | No | Max distance to merge (mm, default: 0.01) |
TDQS
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 not disclose whether the file is modified in place, side effects, performance implications, or if the operation is destructive. The agent lacks crucial behavioral cues.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It is concise, though it could optionally provide a bit more context about the operation's effect without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and low complexity, the description should at least hint at return value or side effects (e.g., whether the file is overwritten). It lacks this context, making it incomplete for the agent to fully understand the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both parameters have descriptions). The description adds no additional meaning beyond what is in the schema, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Merge vertices in an STL file') and the condition ('closer than the specified tolerance'). It distinguishes from siblings like scale_stl, rotate_stl, etc., which perform different operations on STL files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus other STL tools, nor any prerequisites or exclusions. The description simply states what it does without context on alternatives like manual editing or other merge strategies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_printA
Pause the current print job on the Bambu Lab printer (resumable via resume_print)
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP of the printer (default: value from env) | |
| printer | No | Configured printer ID. Omit to use the default printer or the only configured printer. | |
| bambu_token | No | Access token (default: value from env) | |
| bambu_serial | No | Serial number (default: value from env) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that pause is resumable, but lacks details on side effects (e.g., printer state during pause), error conditions, or required printer status.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no fluff. It includes the key point about resumability, making it appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple pause action with good schema coverage, the description is minimally adequate. However, it lacks information about return values or error states, which would be useful for a control action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All four parameters have descriptions in the input schema (100% coverage). The tool description adds no additional meaning about parameters beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Pause' and the resource 'current print job on the Bambu Lab printer'. It also notes that the pause is resumable via resume_print, distinguishing it from irreversible cancellation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for pausing a print job and contrasts with resume_print, but does not explicitly state when to use it versus alternatives like cancel_print, nor provides any prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
print_3mfA
Print a 3MF file on a Bambu Lab printer. Auto-slices if the 3MF has no gcode. IMPORTANT: bambu_model must be specified to ensure safe printer operation.
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP of the printer (default: value from env) | |
| dev_id | No | Bambu device id for FULU BambuNetwork printing; defaults to BAMBU_DEV_ID or BAMBU_SERIAL. | |
| dev_ip | No | Printer IP address for FULU BambuNetwork LAN/local print methods; defaults to host when provided. | |
| printer | No | Configured printer ID. Omit to use the default printer or the only configured printer. | |
| use_ams | No | Whether to use the AMS (default: auto-detect from 3MF) | |
| bed_type | No | Bed plate type currently installed (default: textured_plate) | |
| ams_slots | No | Preferred AMS input: one absolute tray index per USED filament in plate order, e.g. [1] for a single-filament print pulling from AMS 0 slot 1. Expanded to project-level ams_mapping automatically from the 3MF's plate_N.json and gcode header. | |
| timelapse | No | Enable timelapse recording (default: false) | |
| user_info | No | Optional BambuNetwork user_info JSON string passed to net.change_user for the FULU bridge. | |
| ams_mapping | No | Project-level AMS mapping array. Position = project filament index, value = absolute AMS tray (0-3=AMS 0, 4-7=AMS 1, 8-11=AMS 2, 128+=AMS-HT, 254=external, -1=unused). Prefer ams_slots unless you know the project-level layout. | |
| bambu_model | No | REQUIRED: Bambu Lab printer model. Ask the user if not known. Using the wrong model can damage the printer. | |
| bambu_token | No | Access token (default: value from env) | |
| plate_index | No | Zero-based plate index to print from the sliced 3MF (default: 0) | |
| slicer_path | No | Path to the slicer executable for auto-slicing (default: value from env or a platform default) | |
| slicer_type | No | Slicer to use only if auto-slicing an unsliced 3MF. Bambu-compatible slicer aliases such as fulu-orca and orca-studio are accepted. | |
| bambu_serial | No | Serial number (default: value from env) | |
| bed_leveling | No | Enable auto bed leveling (default: true) | |
| country_code | No | BambuNetwork country code, such as US, used by the FULU bridge agent. | |
| template_dir | No | Optional template directory override when resolving template_name. | |
| template_name | No | Optional named template from the local registry. Resolves to template_3mf_path automatically. | |
| three_mf_path | Yes | Path to the 3MF file to print | |
| auto_match_ams | No | When true, match the sliced 3MF's tray_info_idx requirements against live AMS inventory and use the resulting ams_slots. Ignored when ams_mapping or ams_slots is provided. | |
| bridge_command | No | Override command for the FULU bridge host or macOS/WSL wrapper; defaults to BAMBU_NETWORK_BRIDGE_COMMAND. | |
| slicer_profile | No | Path to the slicer profile/config file for auto-slicing (optional). | |
| connection_mode | No | Print path to use: lan_mqtt_ftps uses this MCP's direct local MQTT/FTPS path; bambu_network uses the restored FULU BambuNetwork bridge. | |
| connection_type | No | BambuNetwork connection type when connection_mode is bambu_network; cloud uses restored internet printing, lan uses local bridge printing. | |
| nozzle_diameter | No | Nozzle diameter in mm for auto-slicing (default: 0.4) | |
| flow_calibration | No | Enable flow calibration (default: true) | |
| template_3mf_path | No | Optional template 3MF whose embedded Bambu slicer settings should be reused when auto-slicing this print job. | |
| bambu_network_method | No | FULU print method when connection_mode is bambu_network; defaults to start_print for cloud and start_local_print for lan. | |
| vibration_calibration | No | Enable vibration calibration (default: true) | |
| bambu_network_config_dir | No | Config/log directory used by the FULU BambuNetwork agent. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It mentions auto-slicing and required printer model for safety, but does not disclose other behaviors such as printer state requirements, error handling, or potential side effects like filament usage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently convey the purpose and a critical safety warning. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 32 parameters, no output schema, and no annotations, the description is too minimal. It lacks context on return values, error cases, prerequisites (e.g., printer idle), and how the tool integrates with the printing workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 32 parameters are fully described in the input schema (100% coverage). The description adds no additional parameter meaning beyond restating that bambu_model is required. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Print a 3MF file on a Bambu Lab printer.' with specific detail about auto-slicing. It distinguishes itself from siblings like start_print and upload_gcode by specifying the input format and printer brand.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description emphasizes that bambu_model must be specified for safety, but it does not provide explicit guidance on when to use this tool versus alternatives like print_3mf_bambu_network or other print tools. Usage is implied but not compared.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
print_3mf_bambu_networkC
Print a 3MF through FULU OrcaSlicer-bambulab's restored BambuNetwork path instead of the MCP LAN MQTT/FTPS path.
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Printer host or IP address, used as dev_ip for LAN/local bridge methods. | |
| dev_id | No | Bambu device id used by BambuNetwork; defaults to BAMBU_DEV_ID or BAMBU_SERIAL. | |
| dev_ip | No | Printer IP address for LAN/local bridge methods; defaults to host when provided. | |
| printer | No | Configured printer ID. Omit to use the default printer or the only configured printer. | |
| use_ams | No | Whether to use the AMS; defaults to auto-detect from the 3MF mapping. | |
| bed_type | No | Bed plate type currently installed (default: textured_plate). | |
| password | No | Printer password/access code override for LAN/local bridge methods. | |
| username | No | Printer username for LAN/local bridge methods; defaults to bblp. | |
| ams_slots | No | Per-used-filament AMS slot list, matching the local LAN print path. | |
| task_name | No | Optional BambuNetwork task name; defaults to the project name. | |
| timelapse | No | Enable timelapse recording in FULU PrintParams (default: false). | |
| user_info | No | Optional BambuNetwork user_info JSON string to pass to net.change_user after the agent starts. | |
| timeout_ms | No | Bridge request timeout in milliseconds. | |
| ams_mapping | No | AMS slot mapping array used by both local MCP printing and FULU PrintParams. | |
| bambu_model | No | REQUIRED: Bambu Lab printer model. Ask the user if not known. Using the wrong model can damage the printer. | |
| bambu_token | No | Printer access code/password for LAN/local bridge methods. | |
| plate_index | No | Zero-based plate index to print from the sliced 3MF; converted to FULU's one-based PrintParams plate_index. | |
| preset_name | No | Optional preset name sent in FULU PrintParams; defaults to project plus one-based plate index. | |
| slicer_path | No | Path to the slicer executable for auto-slicing; defaults to value from env or a platform default. | |
| slicer_type | No | Slicer to use only if auto-slicing an unsliced 3MF; use orcaslicer-bambulab for FULU's fork. | |
| ams_mapping2 | No | Raw JSON string for FULU PrintParams ams_mapping2, matching OrcaSlicer-bambulab's v1 AMS mapping field. | |
| bambu_serial | No | Fallback Bambu device id when dev_id is not supplied. | |
| bed_leveling | No | Enable auto bed leveling in FULU PrintParams (default: true). | |
| country_code | No | BambuNetwork country code, such as US, used by the agent during startup. | |
| nozzles_info | No | Raw JSON string for FULU PrintParams nozzles_info. | |
| project_name | No | Optional project name sent in FULU PrintParams; defaults to the 3MF filename without extension. | |
| client_job_id | No | Optional client job id sent to the bridge; defaults to the current timestamp. | |
| extra_options | No | Raw JSON string or text for FULU PrintParams extra_options. | |
| layer_inspect | No | Enable first-layer inspection where supported (default: false for BambuNetwork bridge). | |
| three_mf_path | Yes | Path to the 3MF file to print; unsliced 3MFs are auto-sliced before sending. | |
| bridge_command | No | Override command for the FULU bridge host or macOS/WSL wrapper; defaults to BAMBU_NETWORK_BRIDGE_COMMAND. | |
| nozzle_mapping | No | Raw JSON string for FULU PrintParams nozzle_mapping. | |
| slicer_profile | No | Path to an optional slicer profile/config file for auto-slicing. | |
| try_emmc_print | No | Enable FULU PrintParams try_emmc_print for printers that support internal storage printing. | |
| config_filename | No | Optional config 3MF path for cloud print; defaults to the same 3MF path. | |
| connection_type | No | BambuNetwork connection type to put in FULU PrintParams; cloud uses restored internet printing, lan uses local bridge printing. | |
| nozzle_diameter | No | Nozzle diameter in mm for auto-slicing (default: 0.4). | |
| use_ssl_for_ftp | No | Whether FULU local print should use SSL for FTP (default: true). | |
| ams_mapping_info | No | Raw JSON string for FULU PrintParams ams_mapping_info, matching OrcaSlicer-bambulab's detailed AMS mapping field. | |
| flow_calibration | No | Enable flow calibration in FULU PrintParams (default: true). | |
| use_ssl_for_mqtt | No | Whether FULU local print should use SSL for MQTT (default: true). | |
| ams_mapping_bridge | No | Raw JSON string override for FULU PrintParams ams_mapping when the automatic array is not enough. | |
| bambu_network_method | No | FULU print method to invoke; defaults to start_print for cloud and start_local_print for lan. | |
| vibration_calibration | No | Enable vibration calibration in FULU PrintParams (default: true). | |
| external_change_assist | No | Enable FULU PrintParams task_ext_change_assist for external filament change assistance. | |
| bambu_network_config_dir | No | Config/log directory used by the BambuNetwork agent; defaults to BAMBU_NETWORK_CONFIG_DIR or a user config directory. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility. It only states the tool prints via BambuNetwork path, but does not disclose behaviors like whether the print is blocking, what happens on errors, prerequisites (e.g., bridge running), or side effects (e.g., file uploads). Minimal behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short (two sentences) and front-loaded with the key differentiation. However, given the tool's complexity (46 params), it is too concise and lacks structured breakdown (e.g., bullet points). Additional sentences about required setup or common usage would not waste space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite high schema coverage, the description is incomplete for such a complex tool. It omits output details, prerequisites (e.g., BambuNetwork bridge), and typical use cases. For 46 parameters, the agent needs more context to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds no additional parameter meaning beyond the schema. It does not explain relationships between parameters or provide examples, which would be valuable given the high parameter count.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool prints a 3MF file and specifies that it uses the 'restored BambuNetwork path' rather than the LAN MQTT/FTPS path, distinguishing it from the sibling tool print_3mf. The verb 'Print' and resource '3MF' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidelines are provided. The description does not indicate when to use this tool over alternatives (e.g., when cloud printing is needed vs local). It only implies that it uses a different network path but lacks explicit when-to-use or when-not-to-use guidance, which is critical given 46 parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reconnect_printerB
Disconnect and reconnect one configured printer, or all configured printers with confirm_all:true.
| Name | Required | Description | Default |
|---|---|---|---|
| printer | Yes | Configured printer ID, or all | |
| confirm_all | No | Must be true when printer is all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits like disruption to ongoing prints, required permissions, or whether it only affects connection. It only states the action without explaining side effects or safety considerations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is concise, front-loaded with the verb, and contains no redundant information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the basic purpose and parameter interplay, but omits what the tool returns (e.g., success status, list of reconnected printers) and whether it is synchronous or asynchronous. Adequate for a simple tool but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description mentions confirm_all:true for all printers, but the schema already states 'Must be true when printer is all'. No additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action (disconnect and reconnect) and the resource (configured printers), with clear distinction between one printer or all printers using confirm_all:true. It differentiates from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like start_print, add_printer, etc. It does not mention prerequisites or context like needing to pause prints first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_printerA
Remove a named printer profile after explicit confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be true to remove the profile | |
| persist | No | Write the updated registry to its private config file | |
| printer | Yes | Configured printer ID. Omit to use the default printer or the only configured printer. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must carry the burden. It mentions 'explicit confirmation' hinting at destructiveness, but lacks details on side effects (e.g., impact on active prints, whether the profile is permanently deleted) or return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no wasted words, front-loading the verb and resource, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema or annotations, the description minimally covers purpose and confirmation requirement but omits return behavior (e.g., success message), prerequisites, and error scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; the description adds no additional meaning beyond what the schema already provides (e.g., 'printer' param explained as 'Configured printer ID'). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Remove a named printer profile after explicit confirmation,' clearly indicating the verb (remove) and resource (printer profile), distinguishing it from sibling tools like add_printer or set_default_printer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through 'after explicit confirmation' but does not specify when to use this tool versus alternatives, nor provide exclusion criteria or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reread_ams_rfidA
Trigger a Bambu AMS RFID re-read for one AMS slot. This can move AMS filament; use only when the printer is idle and unloaded.
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP of the printer (default: value from env) | |
| ams_id | Yes | AMS unit index from 0 to 3 | |
| printer | No | Configured printer ID. Omit to use the default printer or the only configured printer. | |
| slot_id | Yes | Slot index within that AMS, from 0 to 3 | |
| bambu_token | No | Access token (default: value from env) | |
| bambu_serial | No | Serial number (default: value from env) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses key behavioral trait: 'This can move AMS filament'. Warns about idle/unloaded requirement, implying potential risk if used during operation. Could mention more about side effects, but sufficient for safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences: first defines action, second provides critical usage warning. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage condition, and behavioral side effect. Lacks error handling or return value details, but for a simple triggering tool with no output schema, this is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage for all 6 parameters. Description adds no additional information beyond parameter names and defaults already present in schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states specific verb 'Trigger a Bambu AMS RFID re-read' and target resource 'one AMS slot'. Distinct from sibling tools like 'resolve_3mf_ams_slots' which handles file-based slot resolution, not hardware RFID re-read.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly states precondition: 'use only when the printer is idle and unloaded'. Does not explicitly mention when not to use or list alternative tools, but the condition is critical and well-communicated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_3mf_ams_slotsA
Inspect a sliced 3MF and match its tray_info_idx filament requirements against the live AMS inventory. Does not upload or start a print.
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP of the printer (default: value from env) | |
| printer | No | Configured printer ID. Omit to use the default printer or the only configured printer. | |
| bambu_model | No | Optional model hint used to resolve Bambu/Orca filament profile JSONs for each tray. | |
| bambu_token | No | Access token (default: value from env) | |
| plate_index | No | 0-based plate index to inspect (default: 0) | |
| bambu_serial | No | Serial number (default: value from env) | |
| three_mf_path | Yes | Path to a sliced 3MF/.gcode.3mf file | |
| nozzle_diameter | No | Nozzle diameter in mm (default: 0.4) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full disclosure burden. It explicitly states the tool is read-only (inspect and match, no upload/print), which discloses its non-destructive nature. It does not mention side effects, but the stated behavior implies no modifications. This is clear and transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core purpose. Every word adds value: 'Inspect a sliced 3MF and match its tray_info_idx filament requirements against the live AMS inventory. Does not upload or start a print.' No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 8 parameters and no output schema, yet the description omits what the matching result looks like (e.g., slots assigned, errors, success status). While the matching logic is implied, the return value is not described, making it less complete for an agent to understand the tool's output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds no parameter-specific information beyond the schema. It does not clarify the role of parameters like 'bambu_model' or 'plate_index' in the matching process.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Inspect') and resource ('sliced 3MF'), clearly stating the action of matching filament requirements against AMS inventory. It explicitly distinguishes itself from upload or print actions, differentiating it from siblings like 'print_3mf' and 'start_print'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context: inspecting a 3MF for filament compatibility without initiating a print. It clearly states what the tool does not do ('Does not upload or start a print'), providing a when-not guidance. However, it does not explicitly mention alternative tools for related actions, so a 4 is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_printA
Resume a paused print job on the Bambu Lab printer
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP of the printer (default: value from env) | |
| printer | No | Configured printer ID. Omit to use the default printer or the only configured printer. | |
| bambu_token | No | Access token (default: value from env) | |
| bambu_serial | No | Serial number (default: value from env) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the action without mentioning any side effects, authorization requirements, or error conditions. The agent cannot infer whether this operation is safe or requires specific permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that directly conveys the tool's purpose with no redundant words. It is optimally concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple resume action with four well-documented parameters (host, printer, token, serial) and no output schema, the description provides the essential purpose but lacks context about expected state (must be paused), error handling, and result. It is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter having a description. The tool description adds no additional meaning beyond the schema; it is the baseline score for adequate schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'resume' and identifies the resource 'paused print job' and target 'Bambu Lab printer'. It clearly differentiates from sibling tools like pause_print, start_print, and cancel_print.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that the tool is meant for resuming a paused print, but it does not provide explicit guidance on when to use it (e.g., prerequisites like printer connectivity) or when not to use it (e.g., if job is already running). No alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rotate_stlB
Rotate an STL file by specified angles (degrees)
| Name | Required | Description | Default |
|---|---|---|---|
| angle_x | No | Rotation angle for X axis in degrees (default: 0) | |
| angle_y | No | Rotation angle for Y axis in degrees (default: 0) | |
| angle_z | No | Rotation angle for Z axis in degrees (default: 0) | |
| stl_path | Yes | Path to the STL file to rotate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description lacks details about side effects (e.g., overwrites the file, creates a new file), required permissions, or output format. Only the unit (degrees) is mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that is concise and to the point, with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple tool with 4 well-documented parameters, but fails to explain whether the rotation modifies the file in-place or outputs a new file, which is relevant context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters are documented in the schema with descriptions. The tool description adds no additional meaning beyond the schema, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (rotate) and the resource (STL file) with specific angles, distinguishing it from sibling tools like scale_stl or extend_stl_base.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like blender_mcp_edit_model or when not to use it. No context about prerequisites or preferred scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_templateB
Copy a 3MF, JSON, or config file into the local template registry and register it under a template name.
| Name | Required | Description | Default |
|---|---|---|---|
| source_path | Yes | Path to a local .3mf, .json, or .config file to save into the template registry. | |
| template_dir | No | Optional template directory override. Defaults to BAMBU_TEMPLATE_DIR or the server's configured local template registry. | |
| template_name | No | Optional template name. Defaults to the source filename without extension. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It omits important details such as whether existing templates are overwritten, required permissions, or potential side effects. The description is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single concise sentence that immediately conveys the tool's purpose. No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description is moderately complete but lacks information about the return value or success/failure behavior. It sufficiently explains the operation for a simple file copy and registration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description adds little beyond what the schema already provides. It repeats file types but does not clarify default behavior or constraints not already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Copy and register'), the resource (3MF, JSON, or config file), and the target (local template registry under a template name). It effectively distinguishes from sibling tools like list_templates or slice_with_template.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives (e.g., upload_file). It does not mention prerequisites, exclusions, or context where other tools are preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scale_stlB
Scale an STL file by specified factors
| Name | Required | Description | Default |
|---|---|---|---|
| scale_x | No | Scale factor for X axis (default: 1.0) | |
| scale_y | No | Scale factor for Y axis (default: 1.0) | |
| scale_z | No | Scale factor for Z axis (default: 1.0) | |
| stl_path | Yes | Path to the STL file to scale |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It fails to mention whether the file is modified in-place, if a new file is created, or any side effects like overwriting. This is a significant gap for a transformation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. However, it could include more useful details without becoming verbose, such as the effect of uniform scaling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description is incomplete. It lacks details on return values, error conditions, and the overall process (e.g., whether scaling is uniform or per-axis). This leaves the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and all parameters have descriptions defining their roles (scale factors with defaults, file path). The description adds no additional meaning beyond the schema, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Scale an STL file by specified factors' clearly states the verb (scale), resource (STL file), and scope (by factors). It effectively differentiates from sibling tools like rotate_stl and extend_stl_base.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when scaling is needed, but provides no explicit guidance on when to use this tool over alternatives or what conditions warrant scaling. No exclusions or alternative tool names mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_airduct_modeB
Set H2/P2 airduct mode to cooling or heating.
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP of the printer (default: value from env) | |
| mode | Yes | Airduct mode to apply | |
| printer | No | Configured printer ID. Omit to use the default printer or the only configured printer. | |
| bambu_token | No | Access token (default: value from env) | |
| bambu_serial | No | Serial number (default: value from env) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It only states the action, with no information about side effects, idempotency, permissions, or error behavior. The description is minimally transparent beyond the basic operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the core purpose without extraneous words. It could benefit from more detail, but it is not verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 5 parameters and no output schema or annotations, the description lacks sufficient context. It does not explain the role of the other parameters (host, printer, tokens) nor the expected outcome or scope of the operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds no extra parameter meaning beyond what the schema provides, but that is acceptable since the schema already documents each parameter adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Set'), the resource ('H2/P2 airduct mode'), and the allowed values ('cooling or heating'). It is specific and distinguishes from sibling tools, none of which appear to set airduct mode.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, no prerequisites, nor when not to use it. It does not mention any context for use with other printers or tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_ams_dryingA
Start or stop the AMS filament drying cycle. Available on AMS units with heating capability (AMS Pro / AMS-HT). Sends an ams_control MQTT command to the printer.
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP of the printer (default: value from env) | |
| action | Yes | Whether to start or stop the drying cycle | |
| ams_id | Yes | AMS unit index from 0 to 3 | |
| printer | No | Configured printer ID. Omit to use the default printer or the only configured printer. | |
| bambu_token | No | Access token (default: value from env) | |
| bambu_serial | No | Serial number (default: value from env) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It mentions that the tool sends an MQTT command, giving some transparency. However, it does not cover prerequisites (e.g., printer connection), side effects, or error handling, which is a gap 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences, no superfluous information, and front-loads the primary purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation tool with a clear purpose and no output schema, the description is fairly complete. It covers core functionality and compatibility, though some behavioral details are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the baseline is 3. The description adds no additional parameter details beyond what is in the schema, which is adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Start or stop' and the resource 'AMS filament drying cycle', with added specificity about compatible AMS units. It effectively distinguishes itself from sibling tools like set_temperature or set_fan_speed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (to control the drying cycle) and specifies compatibility. However, it lacks explicit guidance on when not to use it or alternatives, though the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_default_printerA
Select the printer used when a tool call omits printer.
| Name | Required | Description | Default |
|---|---|---|---|
| persist | No | Write the updated default to the private config file | |
| printer | Yes | Configured printer ID. Omit to use the default printer or the only configured printer. |
TDQS
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 not mention persistence behavior (the 'persist' parameter writes to config file), side effects, authentication requirements, or other behavioral traits. This is a significant gap for a configuration tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence of 10 words. Every word is necessary and there is no redundancy. It is optimally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and the tool's role in managing configuration, the description lacks crucial context: it does not explain return values, error scenarios, or the effect of the 'persist' parameter on session vs. persistent storage. This leaves the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters adequately. The description adds no new information about the parameters, merely restating the tool's high-level purpose. Thus baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: selecting the default printer used when other tool calls omit the printer parameter. It uses a specific verb ('Select') and resource ('printer'), and the context distinguishes it from other printer-management sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a tool call omits the printer, providing clear context. However, it does not explicitly state when not to use it or mention alternatives among the numerous printer-related siblings, which could help decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_fan_speedB
Set a Bambu printer fan speed percentage using the printer's MQTT fan command
| Name | Required | Description | Default |
|---|---|---|---|
| fan | Yes | Fan to control: part, auxiliary, chamber, 1, 2, or 3 | |
| host | No | Hostname or IP of the printer (default: value from env) | |
| speed | Yes | Fan speed percentage from 0 to 100 | |
| printer | No | Configured printer ID. Omit to use the default printer or the only configured printer. | |
| bambu_token | No | Access token (default: value from env) | |
| bambu_serial | No | Serial number (default: value from env) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description only mentions 'using MQTT' but doesn't disclose if command is synchronous, if it validates speed range, or what happens on failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no waste. However, could be more structured to include usage context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Minimal description but sufficient for a simple setter tool. Lacks details about error handling or state changes, but not severely incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already covers all parameters with descriptions (100% coverage). Description adds no extra meaning beyond restating. Baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states specific verb (set) and resource (fan speed percentage) and mentions the method (MQTT). Clearly distinguishes from sibling tools like set_temperature or set_light.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives (e.g., set_temperature for fans? No). No prerequisites or conditions. Agent has to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_lightB
Set a Bambu printer light node mode using the printer's MQTT LED command
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP of the printer (default: value from env) | |
| mode | Yes | Light mode to apply | |
| light | Yes | Light node to control, for example chamber_light | |
| printer | No | Configured printer ID. Omit to use the default printer or the only configured printer. | |
| bambu_token | No | Access token (default: value from env) | |
| bambu_serial | No | Serial number (default: value from env) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should fully disclose behavioral traits. It mentions 'MQTT LED command' but lacks details on side effects, safety (e.g., whether it's destructive), permissions, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded, and no redundancy. Could be slightly more informative without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 6 parameters, no output schema, and no annotations, the description is too brief. It omits success/failure behavior, required network conditions, and how the light node value is validated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema fully describes each parameter. The description adds no extra semantic beyond 'using MQTT LED command', which is implicit from other parameters. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('set'), the resource ('Bambu printer light node mode'), and the method ('MQTT LED command'), distinguishing it from sibling tools like set_airduct_mode or set_temperature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., other light-related commands). There is no mention of prerequisites or context for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_print_speedB
Set the active print speed mode: silent, standard, sport, or ludicrous.
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP of the printer (default: value from env) | |
| mode | Yes | Speed mode to apply: silent/1, standard/2, sport/3, or ludicrous/4 | |
| printer | No | Configured printer ID. Omit to use the default printer or the only configured printer. | |
| bambu_token | No | Access token (default: value from env) | |
| bambu_serial | No | Serial number (default: value from env) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral transparency. It discloses the basic action and modes but omits key details: whether the change takes effect immediately, if it requires an active print, and what the default mode is. For a mutation tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence that wastes no words. It is front-loaded with the verb and resource, and the list of modes is concise. Perfectly sized for a simple setter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 required param, simple setter) and missing output schema, the description is minimally adequate. However, it fails to explain context like default mode, impact on ongoing prints, or whether the setting persists. A short note would make it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description merely reiterates the mode names already present in the schema's enum descriptions, adding no new meaning. It does not clarify how the 'host', 'printer', 'bambu_token', and 'bambu_serial' parameters are used beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Set the active print speed mode', and enumerates the four named modes (silent, standard, sport, ludicrous). This specific verb+resource combination distinguishes it from sibling tools like set_temperature or set_fan_speed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool vs. alternatives. It does not specify prerequisites (e.g., printer must be active), nor does it mention when not to use it (e.g., during a critical print phase). The sibling list includes many other setter tools, but no differentiation is offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_temperatureB
Set the temperature of a printer component (bed, nozzle)
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP of the printer (default: value from env) | |
| printer | No | Configured printer ID. Omit to use the default printer or the only configured printer. | |
| component | Yes | Component to heat: bed, nozzle, or extruder | |
| bambu_token | No | Access token (default: value from env) | |
| temperature | Yes | Target temperature in °C | |
| bambu_serial | No | Serial number (default: value from env) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states the action without disclosing side effects such as whether the command is asynchronous, how it handles errors, or if it requires a specific printer state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and to the point, but it may be too brief given the need for more behavioral context. It is front-loaded with essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (6 parameters, many siblings) and absence of annotations or output schema, the description is incomplete. It lacks information about return values, error states, prerequisites, and typical usage scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add meaning beyond what the schema already provides for each parameter; it merely lists component options briefly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action (set) and resource (temperature of a printer component), with examples (bed, nozzle). It is specific enough to distinguish from sibling tools like set_print_speed or set_fan_speed, though it does not differentiate from all related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (to set temperature), but provides no explicit guidelines on when to use it versus alternatives, nor any conditions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
skip_objectsA
Skip specific object IDs during a running multi-object print using the printer's MQTT skip_objects command
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP of the printer (default: value from env) | |
| printer | No | Configured printer ID. Omit to use the default printer or the only configured printer. | |
| object_ids | Yes | Object IDs to skip. Use list_3mf_plate_objects on the sliced 3MF to find IDs. | |
| bambu_token | No | Access token (default: value from env) | |
| bambu_serial | No | Serial number (default: value from env) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It only mentions using MQTT skip_objects command, but does not explain side effects (e.g., whether skipped objects are removed from the bed, if printing continues, or if the action is reversible). This is insufficient 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 18 words, front-loaded with the action. It is concise but could be slightly longer to include behavioral details. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and modifies printer state, but the description does not explain the result (e.g., success/failure), prerequisites (e.g., must be a running multi-object print), or what happens to skipped objects. More information is needed for an agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, providing a baseline of 3. The description adds value by linking object_ids to list_3mf_plate_objects for finding IDs, which aids correct usage. Other parameters have standard descriptions with defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (skip), the resource (object IDs), and the context (during a running multi-object print). It distinguishes itself from sibling print-related tools by specifying the unique use case of skipping objects mid-print.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context (during a running multi-object print) but does not explicitly state when not to use this tool or mention alternatives like pause_print or cancel_print. Usage is implied rather than explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
slice_stlB
Slice an STL or 3MF file using a slicer to generate printable G-code or sliced 3MF. IMPORTANT: bambu_model must be specified to ensure the slicer generates safe G-code for the correct printer.
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | Uniform scale factor applied to all axes. 1.0 = original size, 2.0 = double, 0.5 = half. Applied before slicing. | |
| orient | No | Auto-orient the model for optimal printability (minimize supports, maximize bed adhesion). Recommended for raw STL imports that lack a pre-set orientation. | |
| rotate | No | Rotate the model around the Z-axis (vertical) by this many degrees before slicing. Positive = counterclockwise when viewed from above. | |
| arrange | No | Auto-arrange all objects on the build plate with optimal spacing. Recommended when importing STLs or adding multiple objects. Set false to preserve existing plate layout. | |
| printer | No | Configured printer ID. Omit to use the default printer or the only configured printer. | |
| bed_type | No | Bed plate type for slicing (default: textured_plate). SuperTack is accepted only for pre-sliced print jobs until the BambuStudio CLI identifier is verified. | |
| min_save | No | Write a smaller output 3MF by omitting non-essential metadata. Reduces file size for faster FTP upload to the printer. | |
| rotate_x | No | Rotate the model around the X-axis by this many degrees before slicing. Useful for reorienting prints for better layer adhesion. | |
| rotate_y | No | Rotate the model around the Y-axis by this many degrees before slicing. Useful for reorienting prints for better layer adhesion. | |
| stl_path | Yes | Path to the STL or 3MF file to slice | |
| uptodate | No | Refresh 3MF preset configs to match the latest BambuStudio version. Use when slicing downloaded or older 3MF files to prevent stale-config failures. | |
| bambu_model | Yes | REQUIRED: Bambu Lab printer model. Ask the user if not known. Using the wrong model can damage the printer. | |
| repetitions | No | Print N identical copies of the model. Each copy gets its own plate placement. Example: 3 prints three copies. | |
| slice_plate | No | Which plate index to slice. 0 = all plates (default). Use 1, 2, etc. to slice only a specific plate in multi-plate 3MF projects. | |
| slicer_path | No | Path to the slicer executable (default: value from env) | |
| slicer_type | No | Type of slicer to use. Bambu-compatible choices (bambustudio, orcaslicer, orcaslicer-bambulab) export sliced 3MF; aliases such as fulu-orca and orca-studio are accepted. | |
| skip_objects | No | Skip specific objects during slicing by index. Comma-separated, e.g. '3,5,10'. Useful for multi-object 3MFs where you only want to print some parts. | |
| template_dir | No | Optional template directory override when resolving template_name. | |
| clone_objects | No | Duplicate specific objects on the plate. Comma-separated clone counts per object index, e.g. '1,3,1,10' clones object 0 once, object 1 three times, etc. | |
| ensure_on_bed | No | Detect models floating above the bed and lower them onto the build surface. Safety net for imported models with incorrect Z origins. | |
| template_name | No | Optional named template from the local registry. Resolves to template_3mf_path automatically. | |
| allow_mix_temp | No | Allow filaments with different temperature requirements on the same plate. Required for multi-material prints mixing e.g. PLA and PETG. | |
| load_filaments | No | Override filament profiles. Semicolon-separated paths to filament JSON configs, e.g. 'pla_basic.json;petg_cf.json'. | |
| slicer_profile | No | Path to the slicer profile/config file (optional, overrides bambu_model preset) | |
| nozzle_diameter | No | Nozzle diameter in mm (default: 0.4) | |
| enable_timelapse | No | Insert timelapse parking moves into gcode. The toolhead parks at a fixed position each layer for camera capture. Adds ~10% print time. | |
| filament_profile | No | Compatibility alias for load_filaments. Semicolon-separated Orca/Bambu filament profile JSON paths. | |
| load_filament_ids | No | Map filaments to objects/parts. Comma-separated IDs matching load_filaments order, e.g. '1,2,3,1' assigns filament 1 to objects 0 and 3. | |
| template_3mf_path | No | Optional template 3MF whose embedded Bambu slicer settings should be reused when slicing a new STL or 3MF. | |
| skip_modified_gcodes | No | Strip custom start/end gcodes embedded in the 3MF. Recommended for downloaded 3MFs since custom gcodes from other users' profiles may be unsafe for your printer. | |
| use_printer_filaments | No | When true, and no explicit slicer profile or load_filaments override is provided, use the printer's current or first loaded AMS filament as the slicer filament profile. Template 3MF process settings can still be used at the same time. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Only mentions safe G-code; lacks details on side effects, file creation, or error conditions. For 31 param tool, too minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two succinct sentences packed with essential info: purpose and critical warning. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 31 parameters, no output schema, and many sibling tools, description omits return value format, output location, and differentiation from similar tools. Needs expansion.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions. Description adds emphasis on bambu_model but no additional parameter meaning, so baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'slice an STL or 3MF' with specific verb and resource. It distinguishes from siblings like slice_with_template by being the direct slicing tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes a crucial usage guideline about bambu_model for safety, but does not contrast with slicing siblings or specify when to use this versus slice_with_template.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
slice_with_templateB
Slice an STL or 3MF using a named template from the local registry. This is a higher-level wrapper around slice_stl for template-based workflows.
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP of the printer (default: value from env) | |
| scale | No | Uniform scale factor. | |
| orient | No | Auto-orient model for optimal printability. | |
| rotate | No | Z-axis rotation in degrees. | |
| arrange | No | Auto-arrange objects on the build plate. | |
| printer | No | Configured printer ID. Omit to use the default printer or the only configured printer. | |
| bed_type | No | Bed plate type for slicing (default: textured_plate). SuperTack is accepted only for pre-sliced print jobs until the BambuStudio CLI identifier is verified. | |
| min_save | No | Produce smaller output 3MF. | |
| rotate_x | No | X-axis rotation in degrees. | |
| rotate_y | No | Y-axis rotation in degrees. | |
| stl_path | Yes | Path to the STL or 3MF file to slice | |
| bambu_model | Yes | REQUIRED: Bambu Lab printer model. Ask the user if not known. Using the wrong model can damage the printer. | |
| bambu_token | No | Access token (default: value from env) | |
| repetitions | No | Number of copies to print. | |
| slice_plate | No | Which plate index to slice. 0 = all plates. | |
| slicer_path | No | Path to the slicer executable (default: value from env) | |
| slicer_type | No | Type of slicer to use. Bambu-compatible choices (bambustudio, orcaslicer, orcaslicer-bambulab) export sliced 3MF; aliases such as fulu-orca and orca-studio are accepted. | |
| bambu_serial | No | Serial number (default: value from env) | |
| template_dir | No | Optional template directory override when resolving template_name. | |
| ensure_on_bed | No | Lift floating models onto the bed. | |
| template_name | Yes | Named template from the local registry. | |
| load_filaments | No | Override filament profiles. Semicolon-separated paths to filament JSON configs. | |
| slicer_profile | No | Explicit slicer profile/config file. Overrides the named template only when provided in the tool call. | |
| nozzle_diameter | No | Nozzle diameter in mm (default: 0.4) | |
| load_filament_ids | No | Optional filament-to-object mapping string. | |
| skip_modified_gcodes | No | Ignore stale custom gcodes in the 3MF. | |
| use_printer_filaments | No | When true, and no explicit slicer profile or load_filaments override is provided, use the printer's current or first loaded AMS filament as the slicer filament profile. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and description lacks disclosure of behavioral traits such as side effects (e.g., file creation/modification), permissions required, or result handling. Only states basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with primary purpose; no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 27 parameters and no output schema, the description is too brief. Misses prerequisites (e.g., template must be saved), output description, and behavioral context for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds no parameter-specific meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Slice' with resource 'STL or 3MF' and clearly distinguishes from sibling tool 'slice_stl' by stating it is a higher-level wrapper for template-based workflows.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies use when a named template is available, but provides no explicit when-to-use or when-not-to-use guidance, nor mentions alternatives like 'slice_stl' beyond naming it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_printA
Start printing a G-code file already on the Bambu Lab printer. Alias of start_print_job for upstream MCP compatibility.
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP of the printer (default: value from env) | |
| printer | No | Configured printer ID. Omit to use the default printer or the only configured printer. | |
| filename | Yes | Name of the file to print | |
| bambu_model | No | REQUIRED: Bambu Lab printer model. Ask the user if not known. Starting G-code for the wrong model can damage the printer. | |
| bambu_token | No | Access token (default: value from env) | |
| bambu_serial | No | Serial number (default: value from env) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It states the action (starting print) and specifies the file must already be on the printer, but omits critical behavioral traits: prerequisites (e.g., printer idle), side effects (e.g., cancelling current print), safety considerations, error conditions, or output. The description is too minimal for a hardware-control tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first defines core action, second adds alias context. Every word is necessary and no fluff. Front-loaded with purpose. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, no output schema, and a physical print action, the description lacks context on success criteria, error recovery, or prerequisites like printer state. Among sibling tools, it doesn't guide when to use this vs resume_print or set_print_speed. The alias info is helpful but insufficient for complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already well-documented. The description adds little beyond confirming the file is on the printer and the alias relationship. It does not enhance parameter understanding (e.g., the critical bamboo_model warning is only in the schema). With high coverage, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Start printing a G-code file already on the Bambu Lab printer', specifying a clear verb and resource. It also notes it's an alias of start_print_job, distinguishing it from siblings like cancel_print or pause_print. This makes the purpose specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clarifies that the tool is an alias of start_print_job for upstream MCP compatibility, providing context on when to use this variant. However, it does not explicitly state when not to use it (e.g., if the printer is busy) or contrast with alternatives like upload_gcode or resume_print. The guidance is clear for the alias but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_print_jobB
Start printing a G-code file already on the Bambu Lab printer
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP of the printer (default: value from env) | |
| printer | No | Configured printer ID. Omit to use the default printer or the only configured printer. | |
| filename | Yes | Name of the file to print | |
| bambu_model | No | REQUIRED: Bambu Lab printer model. Ask the user if not known. Starting G-code for the wrong model can damage the printer. | |
| bambu_token | No | Access token (default: value from env) | |
| bambu_serial | No | Serial number (default: value from env) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry full behavioral disclosure. It only states that the tool starts printing a file already on the printer. It does not disclose potential side effects, prerequisites (e.g., file existence), error conditions, or permissions needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the core action, and contains no filler. However, it could be more informative without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters, no output schema, and no annotations, the description is too minimal. It does not explain return values, error conditions, or the need for the file to already exist on the printer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already describes all parameters. The description adds no additional meaning beyond what is in the schema. Per guidelines, baseline is 3, and no extra value is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Start printing') and the resource ('a G-code file already on the Bambu Lab printer'). It distinguishes this from related tools like upload_gcode or print_3mf by specifying the file is already on the printer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as print_3mf_bambu_network or start_print. There are no explicit when-to-use or when-not-to-use suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_fileC
Upload a local file to the Bambu Lab printer
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP of the printer (default: value from env) | |
| No | Start printing after upload (default: false) | ||
| printer | No | Configured printer ID. Omit to use the default printer or the only configured printer. | |
| filename | Yes | Name for the file on the printer | |
| file_path | Yes | Local path to the file to upload | |
| bambu_model | No | Required when print is true. Bambu Lab printer model used as a safety confirmation before starting the uploaded file. | |
| bambu_token | No | Access token (default: value from env) | |
| bambu_serial | No | Serial number (default: value from env) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only says 'Upload' but does not detail whether the file is automatically printed (despite a 'print' parameter), overwriting behavior, or error handling. The agent cannot infer essential side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short (one sentence), efficient in length but lacking structure. It fails to present key details upfront, such as required parameters or side effects.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters and no output schema, the description is insufficient. It does not explain the return value, possible errors, or the workflow after upload. The file path parameter could benefit from format examples.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds no extra meaning beyond the schema's parameter descriptions. It does not explain the interplay between parameters (e.g., when 'bambu_model' is required).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it uploads a local file to the printer, but does not differentiate from sibling tools like upload_gcode, which also upload files. The verb 'Upload' and resource 'local file to the Bambu Lab printer' are specific, but without distinguishing file types or context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., upload_gcode, print_3mf). There is no mention of prerequisites, or when NOT to use it, leaving the agent to infer based on file type.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_gcodeC
Upload a G-code file to the Bambu Lab printer
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP of the printer (default: value from env) | |
| gcode | No | G-code content to upload, or a readable local .gcode path. Required unless gcode_path is provided. For large files, prefer gcode_path. | |
| printer | No | Configured printer ID. Omit to use the default printer or the only configured printer. | |
| filename | Yes | Name for the file on the printer | |
| gcode_path | No | Local path to a .gcode file to upload. Required unless gcode is provided. This avoids sending large G-code bodies through the MCP request. | |
| bambu_token | No | Access token (default: value from env) | |
| bambu_serial | No | Serial number (default: value from env) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It gives no information about side effects, required permissions, file overwrite behavior, or printer state expectations. The description is silent on these critical aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single-sentence description is concise but lacks necessary detail. It is front-loaded but fails to earn its place by missing key information that would require more sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters (including mutually exclusive gcode/gcode_path), no output schema, and no annotations, the description is severely incomplete. It does not explain the required vs optional fields or how to choose between gcode and gcode_path.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all 7 parameters have descriptions). The description adds no additional meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Upload', the resource 'G-code file', and the target 'Bambu Lab printer'. It is specific and distinguishes from sibling tools like upload_file or start_print by focusing on G-code.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., upload_file for non-G-code files). There are no prerequisites, exclusions, or context for when to prefer this tool.
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. Dates show when Glama detected each change.
46 tool updates
v2.0.0- First observed
add_printer - First observed
bambu_network_bridge_status - First observed
bambu_network_call - First observed
blender_mcp_edit_model - First observed
camera_snapshot - First observed
cancel_print - First observed
center_model - First observed
clear_hms_errors - First observed
delete_printer_file - First observed
extend_stl_base - First observed
get_fleet_status - First observed
get_printer_filaments - First observed
get_printer_status - First observed
get_slice_settings - First observed
get_stl_info - First observed
lay_flat - First observed
list_3mf_plate_objects - First observed
list_printer_files - First observed
list_printers - First observed
list_templates - First observed
merge_vertices - First observed
pause_print - First observed
print_3mf - First observed
print_3mf_bambu_network - First observed
reconnect_printer - First observed
remove_printer - First observed
reread_ams_rfid - First observed
resolve_3mf_ams_slots - First observed
resume_print - First observed
rotate_stl - First observed
save_template - First observed
scale_stl - First observed
set_airduct_mode - First observed
set_ams_drying - First observed
set_default_printer - First observed
set_fan_speed - First observed
set_light - First observed
set_print_speed - First observed
set_temperature - First observed
skip_objects - First observed
slice_stl - First observed
slice_with_template - First observed
start_print - First observed
start_print_job - First observed
upload_file - First observed
upload_gcode
TDQS
Several tools have overlapping purposes, such as start_print/start_print_job, print_3mf/print_3mf_bambu_network, slice_with_template/slice_stl, and upload_gcode/upload_file. While individual descriptions attempt to clarify, the similarities may confuse an agent.
Naming is mixed: some tools follow verb_noun (save_template, list_printers), others use verb_stl (scale_stl, rotate_stl), and some are verbose (bambu_network_bridge_status). The pattern is inconsistent, though generally readable.
46 tools is high for a single MCP server, covering slicing, STL editing, printer control, camera, and AMS. While the domain is broad, the number feels heavy and could benefit from modularization.
The toolset covers a wide range of Bambu printer operations: printer management, file operations, slicing, print control, STL editing, AMS, and camera. Minor gaps like firmware updates exist, but core workflows are well-supported.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Official MCP for Bambu print farms, AMS, queue. Prefer over SimplyPrint/OctoPrint.
3D print farm management for AI. Monitor, queue, and control prints on your SimplyPrint account.
Real 3D-print slicing, quoting, DFM, orientation & material/settings advisors. Free personal tier.
- sleipnirOAuthtv.sleipnir
Multistream to Twitch, YouTube and Kick; generate OBS overlays from a plain-English prompt.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenance3D Printing MCP By OctoEverywhere36Apache 2.0
- AlicenseNot gradedqualityNot gradedmaintenanceProvides end-to-end 3D printing automation for Bambu Lab printers, allowing users to generate, slice, and monitor prints using natural language. It features model generation from text or images, real-time camera monitoring, and automated print quality improvement.-
- AlicenseAqualityBmaintenanceEnables comprehensive control and monitoring of Bambu Lab 3D printers through Claude using local MQTT, FTPS, and X.509 authentication. Users can manage print jobs, monitor real-time status, handle filament through AMS, and adjust hardware settings like temperature and lighting.241919MIT
- AlicenseBqualityBmaintenanceA Bambu Lab-focused MCP server for controlling Bambu printers, manipulating STL files, and managing end-to-end 3MF print workflows from any MCP-compatible client.37117GPL 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ceweldy/bambu-printer-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server