Skip to main content
Glama

Bambu Studio Advisor - MCP

An MCP connector that gives Claude access to Bambu Studio and your Bambu Lab printer.

License: MIT Python 3.10+ MCP server

Hand Claude an STL or 3MF file: it analyzes the part, asks which filament you use, slices several variants with the real Bambu Studio engine, compares time and weight, then gives you a .3mf project ready to open and print. Everything runs locally on your PC.

Works with Bambu Lab printers (P1S, P1P, X1 Carbon, A1, A1 mini…): on first use, Claude asks for your printer, build plate and usual filament. Recipes are tuned on a 0.4 mm nozzle.


Contents


Related MCP server: orca-copilot-mcp

What it does

  • First-use setup: your printer, build plate and usual filament, asked once and saved. Build volume, presets and accelerations follow the printer you chose.

  • Part analysis: dimensions, volume, fit on the bed, overhangs and bridges for 6 orientations, best orientation, need for supports or a brim.

  • Real slicing with bambu-studio.exe: time, weight, time per line type, warnings.

  • Recipe comparison in parallel (quality, balanced, speed, strength, light), with the recommended variant and per-plate details.

  • Multi-plate projects: a single result.3mf holds every plate and its G-code.

  • Automatic conversion: a project made for another printer is converted to yours, keeping the author's print settings.

  • Filament swap: applies your filament (temperatures, build plate, flow, cooling) to any project.

  • Checks: volumetric flow and actual speed per line type, layers too thick, cooling, lightning infill, pitfalls per material.

  • Presets: read, compare, create or modify your Bambu Studio presets (with backups).

  • Printer (optional): status over the local network, temperatures, AMS, HMS errors, read-only.

The connector never starts a print: you open the produced 3MF in Bambu Studio and print it yourself.

Example

You: here's my camera case, print it in Bambu PLA Matte black C:\Users\me\Downloads\case.3mf

Claude: analyzes the 4 plates, converts the project (made for an X1C) to your printer, applies the Bambu PLA Matte preset, slices the 6 variants in parallel, then answers:

Variant

Time

Weight

Original

9 h 11

459.3 g

Balanced

9 h 32

454.1 g

Speed

7 h 29

379.4 g

…

Recommendation, things to watch, per-plate details and the path of the result.3mf to open.

This summary comes from the 3d-printing skill shipped with the connector (see step 4).

Requirements

System

Windows 10 or 11

Bambu Studio

Installed (default path: C:\Program Files\Bambu Studio) and launched at least once

Python

3.10 or newer (python.org)

Claude

Claude Code (terminal, desktop app or IDE) or Claude Desktop

Git

To clone the repository (or download the ZIP from GitHub)

Installation

Run the following commands in PowerShell.

1. Get the project

git clone https://github.com/JohanRouyer/BambuStudio-Advisor-MCP.git
cd BambuStudio-Advisor-MCP

Put the folder wherever you like, but do not move it afterwards: Claude starts it by its full path.

2. Create the Python environment

python -m venv .venv
.venv\Scripts\python.exe -m pip install -r requirements.txt

3. Register the connector with Claude

Claude Code: from the project folder, register it for all your projects (--scope user):

claude mcp add --scope user bambu-studio -- "$PWD\.venv\Scripts\python.exe" "$PWD\run_server.py"

Claude Desktop: open Settings → Developer → Edit Config and add the following, replacing the path with your folder's (with doubled backslashes):

{
  "mcpServers": {
    "bambu-studio": {
      "command": "C:\\path\\to\\BambuStudio-Advisor-MCP\\.venv\\Scripts\\python.exe",
      "args": ["C:\\path\\to\\BambuStudio-Advisor-MCP\\run_server.py"]
    }
  }
}

Then restart Claude so it loads the connector.

4. Install the 3d-printing skill (recommended)

The skill tells Claude how to chain the tools as soon as you talk about 3D printing or give an STL / 3MF file: analysis, filament question, slicing, full summary. Without it the tools still work, but you have to ask for them one by one.

New-Item -ItemType Directory -Force "$env:USERPROFILE\.claude\skills" | Out-Null
Copy-Item -Recurse -Force skills\3d-printing "$env:USERPROFILE\.claude\skills\"

The skill is used by Claude Code. To update it after a git pull, run the Copy-Item command again.

5. First use

Give Claude a file, or ask "set up my printer". Since nothing is set yet, it first asks for:

  • your printer (P1S, X1 Carbon, A1, A1 mini… and the nozzle if it is not 0.4 mm);

  • your usual build plate (Textured PEI, Cool Plate, High Temp, Engineering);

  • your usual filament (Bambu PLA Basic, PLA Matte, PETG HF…).

It saves these choices in config.json, then carries on with your request. To change them later, just say so: "I switched to an A1", "my usual plate is the Cool Plate".

To check the installation, ask "show me the bambu-studio connector info": the answer should contain "exists": true for Bambu Studio and the path of your presets.

Configuration

Defaults are set by talking to Claude (see First use): it writes them to config.json, which is not tracked by git. You can also edit that file by hand, starting from the example:

Copy-Item config.example.json config.json

Key

Purpose

Default

default_machine

Printer targeted by every slice (exact machine preset name)

Bambu Lab P1S 0.4 nozzle

default_process

Starting process for an STL without presets (set along with the printer)

0.20mm Standard @BBL X1C

default_bed_type

Build plate used when slicing

the project's

default_filament

Filament offered first, and used for an STL without a specified filament

PLA Basic

output_dir

Results folder

output\ in the project

bambu_studio_dir

Bambu Studio install folder

C:\Program Files\Bambu Studio

bambu_data_dir

Bambu Studio data folder

%APPDATA%\BambuStudio

user_id

Bambu account whose user presets are read

the first account found

printer

Printer connection over the local network (see below)

empty

Bambu's P1S presets reuse the X1C processes: that is why the default process is named @BBL X1C. It is picked automatically when you change printer.

Printer connection (optional)

Only the printer_status tool needs it. In config.json, fill in the printer section:

Key

Where to find it on the printer's screen

host

IP address: Settings → Network

serial

Serial number: Settings → Device

access_code

LAN access code: Settings → Network

The PC and the printer must be on the same network.

Available tools

Tool

Purpose

analyze_model

Geometry of an STL / 3MF: dimensions, volume, overhangs and bridges for 6 orientations, best orientation

inspect_3mf

Summary of a 3MF: presets, objects and their own settings, plates, slicing results

material_guide

Advice per material: preset, build plates and temperatures, lid / door, AMS, nozzle, drying

prepare_print

STL / 3MF → ready project in one call: orientation, material preset, build plate, supports, brim, copies, slice

optimize

The 5 recipes and the original sliced in parallel, with the recommended variant

compare_slices

Your own variants {name: {setting: value}} sliced in parallel

slice_model

A single slice, with presets and settings of your choice

check_settings

Checks a 3MF without slicing: flow, actual speeds, cooling, pitfalls

get_3mf_settings

Every setting of a 3MF project, filterable by keyword

edit_3mf

Edited copy of a 3MF (<name>_claude.3mf), global or per-object settings

list_presets

Process / filament / machine presets compatible with your default printer

get_preset

Settings of a preset, inheritance resolved

compare_presets

Differences between two presets

save_preset

Creates or modifies a user preset (the old one is backed up in backups\)

slice_history

Latest slices: models, presets, settings, time, weight, produced file

printer_status

Printer status: print job, temperatures, AMS, HMS errors (read-only)

setup_defaults

Default printer, build plate and filament: read, available choices, save

connector_info

Paths used, configuration status, whether first-use setup is needed

How it works

Recipes

They apply on top of the project's settings. On a Bambu project, everything else (supports, brims, the author's per-object settings) is kept.

Recipe

Layer

Walls

Infill

Top / bottom

Accelerations

quality

0.16 mm

project's

project's

project's

gentle: wall 3,000, top 1,500

balanced

0.20 mm

project's

project's

project's

standard: 10,000, wall 5,000, top 2,000

speed

0.28 mm

2

adaptive cubic 12 %

4 / 3

brisk: 14,000, wall 7,000

strength

0.20 mm

4

gyroid 25 %

5 / 4

project's

light

0.24 mm

2

adaptive cubic 10 %

4 / 3

12,000, wall 6,000

A few deliberate choices:

  • No lightning infill: it leaves top layers bridging over large gaps. Adaptive cubic keeps most of the weight saving without that flaw.

  • Little room on speeds: in PLA, the filament's max flow (15 to 22 mm³/s) already caps speeds. Recipes therefore play on accelerations, brought down to 75 % of your printer's maximum when needed (9,000 mm/s² on an A1, which tops out at 12,000).

Filament

With the skill, Claude always asks for your filament before slicing, even if the file has one, offering your usual filament first. Presets follow your printer (Bambu PLA Basic @BBL A1 on an A1, for example). On a 3MF project, the chosen preset replaces the project's filament in every slot, and the author's print settings are kept.

Printer

Every slice targets your default printer. A project made for another model is converted before slicing: only the printer part changes (start and end G-code, model, nozzle). An STL without presets gets your printer, its standard process and your usual filament. The part analysis uses your printer's build volume (180 × 180 × 180 mm for an A1 mini, for example).

Output files

output/
├── <project>/
│   ├── original/<timestamp>/result.3mf
│   ├── balanced/<timestamp>/result.3mf
│   └── …
├── .cache/          slices already done (delete the folder to clear it)
└── history.jsonl    one line per slice
  • One result.3mf per variant, with every plate and its G-code.

  • Cache: an identical slice (same models, settings, presets and Bambu Studio version) comes back instantly.

  • Parallelism: one Bambu Studio per two cores (6 on a 12-core CPU).

  • Retry: if Bambu Studio hangs (rare), the slice is retried once, then dropped with a clear message.

Safety

  • No print is ever started: printer_status is read-only.

  • Original files are never modified: results go to output\, and edit_3mf writes a copy (unless given the same path as output; a .backup copy is then made).

  • save_preset backs up the old preset in backups\ before writing. Restart Bambu Studio so it sees a modified preset.

  • The printer's access code gives local control of it: config.json must stay on your PC (it is excluded from git).

Known limitations

  • Windows only for now (Windows paths, taskkill, tasklist).

  • Recipes and material advice are tuned on a 0.4 mm nozzle (on a P1S): they remain valid on other Bambu printers, but have not been fine-tuned there.

  • .step and .obj files are not read: open them in Bambu Studio and save them as 3MF.

  • The overhang analysis is a geometric estimate: the slicer's warnings are the reference.

  • Filament color is not set: map the AMS slot when opening the file in Bambu Studio.

Troubleshooting

Problem

Fix

Bambu Studio not found

Install Bambu Studio, or set its folder in bambu_studio_dir

The tools do not show up in Claude

Check both paths in the registration (step 3), then restart Claude

… preset not found

Launch Bambu Studio once, sign in to your account, then try again (close names are suggested)

A slice hangs

Close any bambu-studio.exe left running in Task Manager

printer_status fails

Check the IP, the access code, LAN mode and that the PC is on the same network

A code change is not picked up

Restart Claude: the server is loaded at startup

Development

.venv\Scripts\python.exe -m pip install -r requirements-dev.txt
.venv\Scripts\python.exe -m pytest tests
.venv\Scripts\python.exe -m pyflakes bambu_mcp tests

Unit tests (geometry, checks, cache, history) take under a second. Integration tests slice real models with Bambu Studio (about 20 s) and are skipped if it is not installed. Test models are generated on the fly: no file to provide.

bambu_mcp/
├── server.py      MCP tools exposed to Claude
├── slicer.py      Bambu Studio CLI calls, recipes, comparisons, cache
├── prepare.py     end-to-end preparation of an STL / 3MF
├── threemf.py     reading and editing 3MF projects
├── presets.py     system and user presets, inheritance, writing
├── geometry.py    geometric analysis and orientation
├── analysis.py    settings checks
├── materials.py   advice per material
├── defaults.py    default printer, build plate and filament
├── printer.py     printer status (MQTT, read-only)
├── history.py     slice history
└── config.py      paths and config.json
skills/3d-printing/SKILL.md   Claude Code skill

License

MIT: free to use, modify and share, including commercially, as long as the copyright notice is kept.

Available Tools

18 tools
analyze_modelAnalyze geometryA
Read-onlyIdempotent

Analyze the geometry of an STL or 3MF: dimensions, volume, whether it fits the default printer's bed, footprint, overhangs and bridges for 6 orientations, the best orientation and support/brim advice. Read-only and fast (no slicing). Use it first on any model; STEP and OBJ files are not supported.

NameRequiredDescriptionDefault
pathYesAbsolute path of an STL or 3MF file.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, yet the description still adds real value: it is fast because it performs no slicing, it computes overhangs across six orientations, and it returns advice rather than raw numbers. That is meaningful behavioral context an agent cannot get from the annotations alone.

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

Conciseness5/5

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

Two sentences, both front-loaded: the first enumerates what is computed, the second gives the usage directive and the format limitation. Every clause carries information; nothing is padded.

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

Completeness5/5

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

There is no output schema, so the description compensates by listing the returned measurements and recommendations in detail. Combined with the format restriction and the performance note, an agent has everything needed to select and invoke it correctly.

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

Parameters4/5

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

With a single required parameter at 100% schema coverage, the schema already documents `path` as an absolute STL/3MF path. The description reinforces the same format restriction (STL/3MF, not STEP/OBJ), adding modest corroboration rather than new semantics.

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

Purpose5/5

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

States a specific verb (analyze) and resource (model geometry) and then enumerates the concrete outputs: dimensions, volume, bed fit, footprint, overhangs/bridges across 6 orientations, best orientation, and support/brim advice. The format scope (STL/3MF only) further distinguishes it from sibling tools like slice_model and inspect_3mf.

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

Usage Guidelines4/5

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

"Use it first on any model" gives an explicit sequencing directive, and "STEP and OBJ files are not supported" sets a clear eligibility boundary. "No slicing" implicitly contrasts with slice_model, but no sibling is named directly, which keeps it just short of a 5.

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

check_settingsCheck project settingsA
Read-onlyIdempotent

Check a 3MF project's settings without slicing: volumetric flow per line type against the filament's max flow (and the speed actually reached when capped), speeds above the machine's limits, cooling and per-material pitfalls. Read-only. Use it before slicing a project; slice_model reports the same checks on its result.

NameRequiredDescriptionDefault
pathYesAbsolute path of a Bambu 3MF project.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the description need not argue safety; it adds genuine context by clarifying that no slicing occurs and specifying what is compared and reported (flow per line type against max flow, the speed actually reached when capped). It does not describe auth requirements, performance cost, or the shape of the returned findings, which keeps it short of a 5.

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

Conciseness5/5

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

Two compact sentences, front-loaded with the purpose and the 'without slicing' qualifier before the detail list and the usage routing. No padding; the only near-waste is the two-word 'Read-only' sentence that duplicates the annotations.

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

Completeness4/5

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

For a one-parameter read-only tool with rich annotations this is nearly complete: the agent knows what is inspected and when to call it. Since there is no output schema, the description would ideally say a bit more about how findings are returned (list of issues vs summary), which it only hints at by naming the checks.

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

Parameters3/5

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

Schema coverage is 100% with a single required 'path' parameter whose description already pins it to an absolute Bambu 3MF path, so the schema carries the parameter burden. The description adds only the contextual fact that the file is read without slicing, not any format or constraint detail beyond the schema.

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

Purpose5/5

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

'Check a 3MF project's settings without slicing' gives a specific verb and resource, and the following clause enumerates exactly what is validated (volumetric flow vs filament max, machine speed limits, cooling, per-material pitfalls). It also names slice_model as the sibling that reports the same checks, so the agent can separate the two without opening either schema.

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

Usage Guidelines5/5

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

'Use it before slicing a project' gives an explicit trigger condition, and 'slice_model reports the same checks on its result' supplies the alternative and the condition under which this tool is unnecessary. Both when-to-use and the competing option are stated outright.

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

compare_presetsCompare two presetsA
Read-onlyIdempotent

Compare two presets of the same type and return only the settings whose values differ (setting, value in A, value in B), inheritance resolved. Read-only. Use it to see what a user preset changes from a Bambu preset, or how two profiles differ; use get_preset to read one preset in full. Fails if either name is unknown.

NameRequiredDescriptionDefault
kindYesPreset type: "process" (print settings), "filament" or "machine" (printer).
preset_aYesExact name of the first preset.
preset_bYesExact name of the second preset, of the same type.

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare read-only and idempotent, so the safety bar is low. The description adds valuable context: inheritance is resolved, only differing settings are returned, and unknown names cause failure. It does not describe pagination or limits, but the output schema exists.

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

Conciseness5/5

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

Three tight sentences with the core behavior front-loaded, followed by usage guidance and a failure note. No wasted wording.

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

Completeness5/5

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

With an output schema present and annotations covering safety, the description provides everything an agent needs: scope, return behavior, usage routing, and failure mode.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds meaning beyond the schema by enforcing that the two presets must be the same type and that unknown names cause failure, which shapes correct invocation.

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

Purpose5/5

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

States a specific verb (compare), resource (presets), scope (same type, only differing settings), and return shape (setting, value A, value B). Clearly distinct from get_preset, which is named as the read-one alternative.

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

Usage Guidelines5/5

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

Explicitly names use cases (see what a user preset changes from a Bambu preset, how two profiles differ) and routes the agent to get_preset for full reads. Also states the failure condition when a name is unknown.

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

compare_slicesCompare setting variantsA
Idempotent

Slice several setting variants in parallel in one call and compare them: time, weight (total and per plate), % difference from the original and checks for each. Results are written under output/; the original is never modified. Use it to test your own settings; use optimize for the 5 ready-made goals and slice_model for a single slice.

NameRequiredDescriptionDefault
plateNoPlate number to slice; 0 = every plate in a single result.3mf.
modelsYesAbsolute paths of the STL or 3MF files to slice together.
machineNoMachine preset name, e.g. "Bambu Lab P1S 0.4 nozzle". Omit to keep a 3MF project's own settings or use the defaults.
processNoProcess preset name, e.g. "0.20mm Standard @BBL X1C". Needs `machine`.
bed_typeNoBuild plate, e.g. "Textured PEI Plate", "Cool Plate", "High Temp Plate". Omit for the usual plate when the filament suits it.
variantsYesVariants to slice: {"variant name": {"setting": "value"}}, e.g. {"thin walls": {"wall_loops": "2"}, "strong": {"wall_loops": "4"}}.
filamentsNoFilament preset names, one per slot (e.g. "Bambu PLA Matte @BBL P1S 0.4 nozzle"). Alone on a 3MF project, replaces its filament.
include_originalNoAlso slice the unchanged model as the reference.

TDQS

A4.4/5.0
Behavior4/5

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

Adds genuinely non-obvious behavior beyond the annotations: results are written under output/ and the original is never modified, which tells the agent this is a non-destructive write with a known artifact location. It also discloses the parallel batching. It does not say what happens if one variant fails or roughly how long a batch takes.

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

Conciseness5/5

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

Three sentences, each carrying a distinct load: what it does, what it produces and its side effects, and when to prefer a sibling. The core action is front-loaded and nothing is padded.

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

Completeness4/5

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

With no output schema, the description usefully enumerates the returned comparison metrics (time, weight total and per plate, % difference from the original, checks) and the output location. The remaining gap is failure semantics for a multi-variant batch, which matters for an 8-parameter mutation tool.

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

Parameters3/5

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

Schema coverage is 100% and each parameter (plate, models, machine, process, variants, filaments, include_original) is already documented in the schema with examples. The description adds no parsing or formatting detail for the nested variants object beyond what the schema example provides, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Slice several setting variants in parallel in one call and compare them') with the exact comparison dimensions enumerated. It is immediately distinguishable from slice_model (single slice) and optimize (ready-made goals) without reading the schemas.

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

Usage Guidelines5/5

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

Explicitly names both alternatives and the conditions that select them: 'use optimize for the 5 ready-made goals and slice_model for a single slice', contrasted with 'use it to test your own settings'. Nothing is left to inference.

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

connector_infoConnector infoA
Read-onlyIdempotent

Return the connector's status: whether first-use setup is needed, the saved defaults, the Bambu Studio and preset paths, the output folder, and whether the printer is configured. Read-only. Call it first in a session: if setup_needed is true, ask the user for their printer, build plate and filament, then call setup_defaults.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false. The description is consistent with those and adds useful behavioral context about detecting first-use setup and the required follow-up flow, though it does not elaborate on error behavior or response details.

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

Conciseness5/5

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

Two compact sentences front-load what the tool returns and follow with the key session-start workflow. Every sentence carries useful information, and there is no repetition beyond the brief read-only confirmation.

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

Completeness5/5

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

For a zero-parameter, read-only info tool with no output schema, the description sufficiently explains the returned status fields and the conditional setup workflow. An agent has enough context to call it first and know what to do if setup_needed is true.

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

Parameters4/5

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

The tool has zero parameters, so there is no parameter semantics to clarify. The baseline for a no-parameter tool is 4.

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

Purpose5/5

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

The description states a specific verb and resource: return the connector's status. It enumerates the status contents (setup_needed, saved defaults, Bambu Studio and preset paths, output folder, printer configured) and connects to the sibling setup_defaults, so an agent can distinguish it from tools like printer_status or list_presets.

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

Usage Guidelines4/5

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

It gives clear usage guidance: call it first in a session, then if setup_needed is true ask the user for printer/build plate/filament and call setup_defaults. The next-step routing is explicit, though it does not state when not to use the tool.

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

edit_3mfWrite an edited 3MF copyA
Idempotent

Write a copy of a 3MF project with changed settings, without slicing. The original is left untouched unless output_path is its own path. Use it to hand the user an edited project; to measure the effect of settings, use slice_model or compare_slices instead (they never modify the original).

NameRequiredDescriptionDefault
pathYesAbsolute path of a Bambu 3MF project.
settingsNoProject settings to change, as Bambu strings: {"wall_loops": "3"}.
output_pathNoWhere to write the copy. Default: <name>_claude.3mf next to the original. Passing the original's path replaces it: only with the user's agreement.
object_settingsNoPer-object settings: {"object name or id": {"setting": "value"}}.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare non-read-only, idempotent, non-destructive, but the description adds the crucial nuance that the source is modified only when output_path points at it, and that no slicing occurs. It doesn't cover failure modes (invalid settings keys, missing file) or what the tool reports back, which keeps it short of a 5.

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

Conciseness5/5

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

Two sentences, zero filler, with the scope constraint front-loaded before the alternative-tool routing. Every clause carries decision-relevant information.

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

Completeness4/5

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

With no output schema, the description covers the mutation semantics, the no-slicing behavior, and the original-file safety rule, which is nearly everything an agent needs. A minor gap remains around the return value (e.g. the written path) and error behavior, but the core contract is complete.

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

Parameters3/5

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

Schema description coverage is 100%: path, settings format, default output naming, and the replacement caveat are all documented in the schema. The description reinforces the settings-editing intent and the output_path overwrite risk but adds no syntax or format detail beyond what the schema already states, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ("Write a copy of a 3MF project with changed settings, without slicing") and immediately frames the exact scope: the original stays untouched. That scope statement separates it cleanly from the slicing siblings without the agent opening any schema.

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

Usage Guidelines5/5

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

Explicitly names the intended use ("hand the user an edited project") and the alternative path for a different goal ("to measure the effect of settings, use slice_model or compare_slices instead"). It even gives the reason the alternatives are preferred (they never modify the original), which is exactly the when/when-not guidance an agent needs.

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

get_3mf_settingsRead 3MF project settingsA
Read-onlyIdempotent

Read the print settings stored in a Bambu 3MF project (project_settings.config), as Bambu strings. Read-only. Use it to see the values a project will print with; use inspect_3mf for a summary and check_settings for problems. Fails on a 3MF without Bambu settings.

NameRequiredDescriptionDefault
pathYesAbsolute path of a Bambu 3MF project.
key_filterNoKeywords of setting names to keep, e.g. "wall infill". Omit for all.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered; the description adds the source file inside the archive, the return type ('as Bambu strings'), and a concrete failure mode ('Fails on a 3MF without Bambu settings'). It stops short of describing output structure or how missing keys behave under a filter.

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

Conciseness5/5

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

Three short sentences: what it reads, the safety/format note, then disambiguation and failure mode. Front-loaded and every clause carries information.

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

Completeness4/5

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

With no output schema, the description still signals the return type (Bambu setting strings) and the error condition, which is the key operational fact for a read-only lookup. Minor gap: it doesn't say what the filtered result looks like when nothing matches.

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

Parameters3/5

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

Schema coverage is 100% and both parameters (path, key_filter) are documented there, including an example. The description adds no parameter-level detail beyond what the schema already provides, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Read the print settings stored in a Bambu 3MF project (project_settings.config)') and explicitly distinguishes itself from inspect_3mf (summary) and check_settings (problems). An agent can pick it without opening the schema.

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

Usage Guidelines5/5

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

Gives the selecting condition ('see the values a project will print with') and names both alternatives with their distinct roles. Nothing is left to inference about when to choose this tool.

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

get_presetRead a presetA
Read-onlyIdempotent

Read the settings of one preset, with inheritance resolved (values as Bambu strings). Read-only. Use it to inspect a single preset; use compare_presets to see only the differences between two, and get_3mf_settings for the settings stored in a 3MF project. Fails if the name is unknown and lists close names.

NameRequiredDescriptionDefault
kindYesPreset type: "process" (print settings), "filament" or "machine" (printer).
nameYesExact preset name, as returned by list_presets.
key_filterNoKeywords of setting names to keep, e.g. "speed accel". Omit for all settings.
only_overridesNoTrue: only the settings this preset changes from its parent.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so safety is covered. The description still adds real context beyond them: inheritance is resolved before return, values are Bambu-format strings, and behavior on an unknown name (error plus close-name suggestions) is disclosed. It stops short of describing output shape or size, but that is a minor gap.

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

Conciseness5/5

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

Three short sentences, front-loaded with what it returns, then sibling routing, then failure behavior. "Read-only" is mildly redundant with annotations but costs almost nothing and the rest is waste-free.

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

Completeness4/5

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

For a 4-param read tool with full schema coverage and no output schema, the description covers scope, value format, resolution behavior and error handling. Only the concrete shape of the returned setting collection is left implicit, which keeps it just below a 5.

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

Parameters3/5

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

Schema coverage is 100% with enum and per-parameter descriptions, so the schema does the heavy lifting. The description's mention of resolved inheritance loosely relates to only_overrides but does not explain key_filter or the override semantics beyond what the schema already states, so baseline 3 applies.

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

Purpose5/5

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

Specific verb+resource: "Read the settings of one preset" with the key qualifier that inheritance is resolved and values are Bambu strings. It explicitly distinguishes itself from compare_presets and get_3mf_settings, so an agent can route between the three without opening schemas.

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

Usage Guidelines5/5

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

Gives an explicit positive case (inspect a single preset) and names two alternatives with the conditions that select them: compare_presets for diffs only, get_3mf_settings for 3MF-stored settings. Prerequisite naming also points to list_presets for valid names.

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

inspect_3mfInspect a 3MF fileA
Read-onlyIdempotent

Summarize a 3MF file: whether it is a full Bambu project or geometry only, the printer and presets it was made with, its objects and their own settings, its plates, and slicing results if it has any. Read-only. Use it first on any 3MF; use get_3mf_settings for the full list of project settings and analyze_model for the geometry.

NameRequiredDescriptionDefault
pathYesAbsolute path of a .3mf file.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so 'Read-only' adds nothing new. What does add value is the disclosure that output varies by file — full Bambu project vs geometry only, and slicing results only 'if it has any' — which prepares the agent for conditional fields. It stops short of describing failure modes for malformed or non-3MF files.

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

Conciseness5/5

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

Three sentences, each earning its place: what it returns, its safety profile, and its routing role. The routing instruction is front-loaded after the output summary, and there is no filler.

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

Completeness5/5

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

With no output schema, the description compensates by enumerating the summary's contents, and the single-parameter schema is fully documented. An agent knows what it will get, when to call it first, and where to go next.

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

Parameters3/5

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

There is a single parameter with 100% schema description coverage ('Absolute path of a .3mf file'), so the schema already carries the semantics. The description adds no path format, extension, or permission detail beyond it — baseline 3.

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

Purpose5/5

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

Specific verb 'Summarize' plus resource '3MF file', with an enumeration of exactly what is reported (project vs geometry-only, printer/presets, objects and their settings, plates, slicing results). It also explicitly distinguishes itself from get_3mf_settings and analyze_model, so an agent can pick it without opening either schema.

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

Usage Guidelines5/5

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

'Use it first on any 3MF' gives an explicit entry-point rule, and the sentence names two alternatives with the conditions that select them: get_3mf_settings for the full project settings list, analyze_model for geometry. Both when-to-use and when-to-use-something-else are covered.

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

list_presetsList presetsA
Read-onlyIdempotent

List Bambu Studio presets of one type, with their source and parent. Read-only. Use it to find an exact preset name before get_preset, compare_presets or slicing; use material_guide instead to get the recommended filament preset for a material.

NameRequiredDescriptionDefault
kindYesPreset type: "process" (print settings), "filament" or "machine" (printer).
searchNoWords that must all appear in the preset name, e.g. "PLA Matte".
sourceNo"user" (presets the user saved), "system" (Bambu presets) or "all".user
printer_nameNoKeep only presets compatible with this machine preset; "default" = the user's default printer, null = every printer.default

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the "Read-only" sentence restates structured data. The only added context is that results carry source and parent, which is return-value information the output schema already covers; nothing is said about result size or ordering.

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

Conciseness5/5

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

Two short sentences, zero filler, with the scope constraint front-loaded before the routing to alternatives.

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

Completeness4/5

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

With annotations covering safety, an output schema covering returns, and full parameter documentation, the description supplies what is needed to select and call the tool. Minor gaps such as result ordering or limits are not essential to invocation.

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

Parameters3/5

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

Schema description coverage is 100% with two enums, so the schema fully documents kind, search, source and printer_name. The description adds no syntax or default behavior beyond that, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ("List Bambu Studio presets of one type") plus the returned fields (source and parent), and explicitly marks it read-only. It is clearly distinguishable from get_preset, which fetches a single preset.

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

Usage Guidelines5/5

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

Names the downstream tools this enables (get_preset, compare_presets, slicing) and the condition to use it (finding an exact preset name). It also names an alternative, material_guide, and the situation that selects it.

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

material_guideMaterial guideA
Read-onlyIdempotent

Give printing advice for a material on the default printer: the filament preset to use, suitable build plates and temperatures, enclosure (lid/door), AMS compatibility, nozzle and drying notes. Read-only. Use it to pick the filament preset passed to slicing tools; use list_presets to search for a specific brand.

NameRequiredDescriptionDefault
filamentNoExact filament preset to describe instead of the material's default one.
materialNoMaterial name: "PLA", "PLA Matte", "PETG", "ABS", "ASA", "PC", "TPU", "PA-CF"... Omit to list the materials.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare read-only/idempotent/non-destructive, and the description's "Read-only" merely mirrors that. It does add real context beyond the annotations: the advice is scoped to the default printer, and it discloses the shape of the returned guidance (plates, temps, enclosure, AMS, drying), which matters since there is no output schema.

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

Conciseness4/5

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

Front-loads purpose in the first clause, then the returned-content list, then the usage routing. Dense and mostly waste-free, though the enumeration of advice categories is slightly list-heavy for a two-parameter tool.

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

Completeness5/5

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

With no output schema, the description carries the return-value burden and does so by naming every category of advice returned. It also flags the default-printer scope, which conditions the results. Nothing needed to invoke it correctly is missing.

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

Parameters3/5

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

Schema coverage is 100%, so both parameters are already documented in detail, including the "Omit to list the materials" behavior. The description adds the downstream use of the filament parameter (it is the preset passed to slicing tools), but no syntax or format guidance beyond the schema. Baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ("Give printing advice for a material") and enumerates exactly what the advice covers: filament preset, build plates, temperatures, enclosure, AMS, nozzle, drying. It is clearly distinguishable from siblings like list_presets or get_preset, which the description names.

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

Usage Guidelines5/5

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

Explicitly gives when-to-use ("pick the filament preset passed to slicing tools") and routes the alternative case to list_presets for brand searches. The choice between this tool and its closest sibling is fully resolved in the description.

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

optimizeOptimize for a goalA
Idempotent

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

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

TDQS

A4.5/5.0
Behavior4/5

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

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

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

Conciseness4/5

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

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

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

Completeness4/5

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

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

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

Parameters4/5

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

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

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

Purpose5/5

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

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

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

Usage Guidelines5/5

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

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

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

prepare_printPrepare a printA
Idempotent

Turn an STL (or geometry-only 3MF) into a print-ready Bambu project in one call: analysis, best orientation, material presets, build plate, supports and brim when needed, copies arranged, then slice. Returns time, weight, the decisions made, warnings and the result.3mf (under output/). Use it for raw models; for a complete Bambu project use optimize or slice_model instead.

NameRequiredDescriptionDefault
goalNoPrint goal for the settings.balanced
copiesNoNumber of copies of each model, arranged on the plate.
modelsYesAbsolute paths of the STL or 3MF files.
bed_typeNoBuild plate, e.g. "Textured PEI Plate", "Cool Plate", "High Temp Plate". Omit for the usual plate when the filament suits it.
filamentNoExact filament preset chosen by the user; overrides the material's default.
materialNoMaterial name, e.g. "PLA", "PETG".PLA
supportsNo"auto": supports only when overhangs need them.auto
orientationNo"auto": best orientation from analyze_model; "as_is": keep the file's.auto
extra_settingsNoExtra print settings, as Bambu strings: {"brim_type": "no_brim"}.

TDQS

A4.4/5.0
Behavior4/5

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

Goes well beyond the annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=true) by listing the automatic decisions taken, the artifacts produced (result.3mf under output/), and the returned time, weight, decisions and warnings. It stops short of noting runtime cost of slicing or whether a re-run overwrites prior outputs, which is what keeps it off a 5.

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

Conciseness4/5

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

Front-loaded with the core transformation, then the pipeline list, then the output and the sibling routing — a sensible order with little waste. Minor blemishes: the run-on enumeration and a missing space in "result.3mf" slightly hurt readability.

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

Completeness5/5

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

With no output schema, the description carries the return-value burden itself and does so (time, weight, decisions, warnings, the result.3mf path). Combined with the alternative routing and default-behavior notes, an agent has everything needed to call it and interpret the result.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all nine parameters, including enum meanings for goal, supports and orientation. The description adds a pipeline narrative that maps loosely onto copies/supports/orientation/bed_type, but it adds no new per-parameter meaning — notably it never explains the filament-overrides-material precedence that the schema hints at.

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

Purpose5/5

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

States a concrete verb and resource (turn an STL/geometry-only 3MF into a print-ready Bambu project) and enumerates exactly what the pipeline does: analysis, orientation, material presets, plate, supports/brim, copies, slice. It also explicitly disambiguates from siblings by naming optimize and slice_model for complete Bambu projects, so an agent can route without opening a schema.

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

Usage Guidelines5/5

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

Gives both the when (raw models) and the when-not with named alternatives ("for a complete Bambu project use optimize or slice_model instead"). That is an explicit routing rule rather than an implied one.

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

printer_statusPrinter statusA
Read-onlyIdempotent

Read the printer's live status over the local network (MQTT): print job and progress, temperatures, fans, AMS trays and loaded filaments, HMS errors. Strictly read-only: it never sends commands. Needs the printer's host, serial and access code in config.json (see connector_info); fails if they are missing or the printer is off.

NameRequiredDescriptionDefault
include_rawNoAlso return the printer's raw MQTT report.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly/destructive/idempotent, but the description adds real context beyond them: the transport (local MQTT), the guarantee that it never sends commands, and the two concrete failure modes (missing credentials, printer powered off). A small credit deduction only because it says nothing about latency or how the live snapshot is timed.

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

Conciseness5/5

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

Three tight sentences: what it reads and how, the read-only guarantee, then prerequisites and failure modes. Purpose is front-loaded and every clause carries information an agent needs before calling.

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

Completeness5/5

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

With no output schema, the description compensates by listing exactly what the response contains (job state, temps, fans, AMS, HMS errors). Combined with the documented prerequisites and failure conditions, an agent has everything needed to invoke it correctly or to decide it cannot.

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

Parameters3/5

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

The single optional 'include_raw' parameter is fully documented in the schema (100% coverage), so the schema carries the semantics. The description never mentions it, adding no meaning beyond the structured field — the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Read the printer's live status over the local network (MQTT)') and then enumerates the data returned: job progress, temperatures, fans, AMS trays, filaments, HMS errors. None of the sibling tools (3MF/preset/slicing) overlap, so an agent can immediately tell this is the hardware-state tool.

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

Usage Guidelines4/5

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

Gives concrete preconditions and failure conditions: host, serial and access code must be in config.json, and it fails if they are missing or the printer is off, with a pointer to connector_info for that setup. It omits an explicit 'do not use when...' clause, but there is no competing status tool among the siblings, so the gap is minor.

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

save_presetSave a user presetA
DestructiveIdempotent

Create or update a user preset in Bambu Studio's user folder. Overwrites the existing user preset of that name; the previous file is backed up in backups/ first. Only call it once the user has agreed to the changes, after slicing to compare them (compare_slices). Bambu Studio must be restarted to show the change.

NameRequiredDescriptionDefault
kindYesPreset type: "process" (print settings), "filament" or "machine" (printer).
nameYesName of the user preset to create or update.
parentNoPreset to inherit from when creating a new one (e.g. a system preset). Omit to update an existing user preset.
settingsYesSettings to write, as Bambu strings: {"layer_height": "0.16", "sparse_infill_density": "15%"}. Unknown setting names are rejected.

TDQS

A4.5/5.0
Behavior5/5

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

Beyond annotations (destructive=true, idempotent=true), it explains that an existing preset of that name is overwritten, that the previous file is backed up in backups/ first, and that Bambu Studio must be restarted to see the change. This adds real behavioral context about destructiveness and recovery.

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

Conciseness5/5

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

Four short sentences, each doing distinct work: purpose, overwrite/backup behavior, call precondition, and restart requirement. The important scoping and safety facts are front-loaded.

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

Completeness5/5

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

For a destructive mutation tool with no output schema, the description covers what is overwritten, how the prior state is preserved, when it is safe to call, and what the user must do afterward. Annotations plus this text give the agent enough to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents kind, name, parent, and settings. The description does not add parameter-level detail beyond what the schema provides, such as parent inheritance behavior or settings syntax.

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

Purpose4/5

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

The description states a specific verb and resource: 'Create or update a user preset in Bambu Studio's user folder.' It is clear which operation is performed, though it does not explicitly contrast itself with sibling tools like compare_presets or get_preset.

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

Usage Guidelines5/5

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

It gives an explicit precondition: 'Only call it once the user has agreed to the changes, after slicing to compare them (compare_slices).' This tells the agent both when to invoke it and which sibling tool to use first, plus a post-call restart requirement.

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

setup_defaultsSet up defaultsA
Idempotent

Read or save the user's default printer, build plate and filament (stored in config.json). Without arguments: returns the current values and the available choices. With arguments: validates them and saves only those given. Call it on first use (connector_info.setup_needed) or when the user changes printer, plate or usual filament.

NameRequiredDescriptionDefault
machineNoExact machine preset, e.g. "Bambu Lab A1 0.4 nozzle"; its standard process follows.
bed_typeNoUsual build plate, e.g. "Textured PEI Plate".
filamentNoUsual filament: a preset or a material name such as "PLA Matte", adapted to the printer.

TDQS

A4.1/5.0
Behavior4/5

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

With annotations already declaring non-destructive, idempotent behavior, the description adds useful context: storage in config.json, validation of provided values, and saving only the values given. It stops short of describing error behavior or the exact return shape beyond current values and available choices.

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

Conciseness5/5

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

Three sentences, front-loaded with the core purpose and immediately followed by the no-argument/argument behavior and trigger conditions. No wasted text.

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

Completeness4/5

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

Complete enough for a three-optional-parameter, dual-mode tool with full schema coverage and no output schema. The description covers first-use triggering, validation, partial saves and what the no-argument call returns, though it could say more about failure handling.

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

Parameters4/5

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

Schema description coverage is 100%, so the schema already carries parameter examples and meanings. The description adds meaningful semantics by stating that supplied values are validated and only those given are saved, implying partial updates for the optional machine, bed_type and filament parameters.

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

Purpose4/5

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

The description states a specific dual-purpose verb and resource: read or save the user's default printer, build plate and filament. It is clear what the tool operates on, though it does not explicitly differentiate itself from siblings such as save_preset or get_preset.

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

Usage Guidelines4/5

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

It gives clear usage contexts: call on first use via connector_info.setup_needed, or when the user changes printer, plate or usual filament. It also explains the no-argument versus argument behavior. It does not name alternatives or state when not to use it.

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

slice_historySlice historyA
Read-onlyIdempotent

List previous slices, newest first: models, presets, changed settings, time, weight, number of checks and the result.3mf path. Read-only. Use it to find an earlier result again instead of slicing anew.

NameRequiredDescriptionDefault
limitNoMaximum number of slices to return.
searchNoWords from the model name or variant label to filter on.

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds useful context such as newest-first ordering and returned fields, but it does not disclose pagination behavior or other operational details beyond what annotations and the output schema provide.

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

Conciseness5/5

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

The description is two compact sentences with the core purpose and use case front-loaded. Every clause contributes information about ordering, returned fields, safety, or usage, with no waste.

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

Completeness4/5

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

With an output schema, complete parameter descriptions, and annotations covering safety, the description is nearly complete for this tool. It could mention the search and limit behavior explicitly, but those are already well covered by the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so both the limit and search parameters are already documented in the schema. The description does not add parameter-specific meaning beyond what the schema provides, which is the baseline expectation at full coverage.

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

Purpose5/5

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

The description states a specific verb and resource: list previous slices, with scope ('newest first'), returned fields, and a use case. It clearly distinguishes itself from slice_model by saying to use it to find an earlier result instead of slicing anew.

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

Usage Guidelines4/5

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

The description gives explicit guidance: use this to find an earlier result again instead of slicing anew, naming the alternative behavior. It does not explicitly state exclusions or compare against sibling tools like compare_slices, but the usage context is clear.

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

slice_modelSlice a modelA
Idempotent

Slice once with the real Bambu Studio engine and return print time, filament weight, time per line type, warnings and the path of the sliced result.3mf (written under output/; originals are never modified). An identical slice comes back from the cache. A Bambu 3MF keeps its own settings (moved to the default printer if made for another); an STL gets machine/process/filaments or the user's defaults. Use compare_slices to try several settings at once, optimize for ready-made goals, prepare_print to go from a raw STL to a project.

NameRequiredDescriptionDefault
plateNoPlate number to slice; 0 = every plate in a single result.3mf.
modelsYesAbsolute paths of the STL or 3MF files to slice together.
orientNoLet Bambu Studio auto-orient the objects.
arrangeNoLet Bambu Studio auto-arrange the objects.
machineNoMachine preset name, e.g. "Bambu Lab P1S 0.4 nozzle". Omit to keep a 3MF project's own settings or use the defaults.
processNoProcess preset name, e.g. "0.20mm Standard @BBL X1C". Needs `machine`.
bed_typeNoBuild plate, e.g. "Textured PEI Plate", "Cool Plate", "High Temp Plate". Omit for the usual plate when the filament suits it.
filamentsNoFilament preset names, one per slot (e.g. "Bambu PLA Matte @BBL P1S 0.4 nozzle"). Alone on a 3MF project, replaces its filament.
process_overridesNoPrint settings to change for this slice: {"layer_height": "0.16"}.
filament_overridesNoFilament settings to change: {"nozzle_temperature": "225"}.

TDQS

A4.6/5.0
Behavior4/5

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

Adds substantial context beyond the annotations: the result.3mf is written under output/, originals are never modified, and an identical slice is served from cache. Those details explain why readOnlyHint=false coexists with destructiveHint=false and idempotentHint=true. It stops short of noting runtime cost or how cache identity is determined.

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

Conciseness4/5

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

Front-loaded with the action and its outputs before side effects and sibling routing; three sentences, no filler. Minor cost: dense packing and awkward rendering ('result.3mf' with a missing space) briefly slow parsing.

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

Completeness5/5

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

For a 10-parameter tool with no output schema, it covers everything an agent needs: return values ($-described inline), file side effects, caching, and how preset omission is resolved. Nothing material is left to inference.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description earns credit by explaining preset resolution: a Bambu 3MF keeps its own settings and is moved to the default printer if made for another, while an STL takes machine/process/filaments or the user's defaults. That is meaning the schema only gestures at.

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

Purpose5/5

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

States a concrete verb and resource ('slice once with the real Bambu Studio engine') and enumerates what comes back: print time, filament weight, per-line-type time, warnings, and the result .3mf path. That output list makes it immediately distinguishable from siblings like compare_slices or prepare_print.

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

Usage Guidelines5/5

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

Explicitly routes the agent to alternatives with the condition that selects each: compare_slices for trying several settings at once, optimize for ready-made goals, prepare_print for raw STL to project. It also explains input-dependent behavior (3MF keeps own settings vs STL needs machine/process/filaments), so the caller knows which path applies.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 17 tool updatesv1.0.1
    • Changedanalyze_model1 field changed
      • addedInput schema / properties / path / description
        Added value: +"Absolute path of an STL or 3MF file."
    • Changedcheck_settings1 field changed
      • addedInput schema / properties / path / description
        Added value: +"Absolute path of a Bambu 3MF project."
    • Changedcompare_presets3 fields changed
      • addedInput schema / properties / kind / description
        Added value: +"Preset type: \"process\" (print settings), \"filament\" or \"machine\" (printer)."
      • addedInput schema / properties / preset_a / description
        Added value: +"Exact name of the first preset."
      • addedInput schema / properties / preset_b / description
        Added value: +"Exact name of the second preset, of the same type."
    • Changedcompare_slices9 fields changed
      • addedInput schema / properties / bed_type / description
        Added value: +"Build plate, e.g. \"Textured PEI Plate\", \"Cool Plate\", \"High Temp Plate\". Omit for the usual plate when the filament suits it."
      • addedInput schema / properties / filaments / description
        Added value: +"Filament preset names, one per slot (e.g. \"Bambu PLA Matte @BBL P1S 0.4 nozzle\"). Alone on a 3MF project, replaces its filament."
      • addedInput schema / properties / include_original / description
        Added value: +"Also slice the unchanged model as the reference."
      • addedInput schema / properties / machine / description
        Added value: +"Machine preset name, e.g. \"Bambu Lab P1S 0.4 nozzle\". Omit to keep a 3MF project's own settings or use the defaults."
      • addedInput schema / properties / models / description
        Added value: +"Absolute paths of the STL or 3MF files to slice together."
      • addedInput schema / properties / plate / description
        Added value: +"Plate number to slice; 0 = every plate in a single result.3mf."
      • addedInput schema / properties / plate / minimum
        Added value: +0
      • addedInput schema / properties / process / description
        Added value: +"Process preset name, e.g. \"0.20mm Standard @BBL X1C\". Needs `machine`."
      • addedInput schema / properties / variants / description
        Added value: +"Variants to slice: {\"variant name\": {\"setting\": \"value\"}}, e.g. {\"thin walls\": {\"wall_loops\": \"2\"}, \"strong\": {\"wall_loops\": \"4\"}}."
    • Changededit_3mf4 fields changed
      • addedInput schema / properties / object_settings / description
        Added value: +"Per-object settings: {\"object name or id\": {\"setting\": \"value\"}}."
      • addedInput schema / properties / output_path / description
        Added value: +"Where to write the copy. Default: <name>_claude.3mf next to the original. Passing the original's path replaces it: only with the user's agreement."
      • addedInput schema / properties / path / description
        Added value: +"Absolute path of a Bambu 3MF project."
      • addedInput schema / properties / settings / description
        Added value: +"Project settings to change, as Bambu strings: {\"wall_loops\": \"3\"}."
    • Changedget_3mf_settings2 fields changed
      • addedInput schema / properties / key_filter / description
        Added value: +"Keywords of setting names to keep, e.g. \"wall infill\". Omit for all."
      • addedInput schema / properties / path / description
        Added value: +"Absolute path of a Bambu 3MF project."
    • Changedget_preset4 fields changed
      • addedInput schema / properties / key_filter / description
        Added value: +"Keywords of setting names to keep, e.g. \"speed accel\". Omit for all settings."
      • addedInput schema / properties / kind / description
        Added value: +"Preset type: \"process\" (print settings), \"filament\" or \"machine\" (printer)."
      • addedInput schema / properties / name / description
        Added value: +"Exact preset name, as returned by list_presets."
      • addedInput schema / properties / only_overrides / description
        Added value: +"True: only the settings this preset changes from its parent."
    • Changedinspect_3mf1 field changed
      • addedInput schema / properties / path / description
        Added value: +"Absolute path of a .3mf file."
    • Changedlist_presets4 fields changed
      • addedInput schema / properties / kind / description
        Added value: +"Preset type: \"process\" (print settings), \"filament\" or \"machine\" (printer)."
      • addedInput schema / properties / printer_name / description
        Added value: +"Keep only presets compatible with this machine preset; \"default\" = the user's default printer, null = every printer."
      • addedInput schema / properties / search / description
        Added value: +"Words that must all appear in the preset name, e.g. \"PLA Matte\"."
      • addedInput schema / properties / source / description
        Added value: +"\"user\" (presets the user saved), \"system\" (Bambu presets) or \"all\"."
    • Changedmaterial_guide2 fields changed
      • addedInput schema / properties / filament / description
        Added value: +"Exact filament preset to describe instead of the material's default one."
      • addedInput schema / properties / material / description
        Added value: +"Material name: \"PLA\", \"PLA Matte\", \"PETG\", \"ABS\", \"ASA\", \"PC\", \"TPU\", \"PA-CF\"... Omit to list the materials."
    • Changedoptimize9 fields changed
      • addedInput schema / properties / bed_type / description
        Added value: +"Build plate, e.g. \"Textured PEI Plate\", \"Cool Plate\", \"High Temp Plate\". Omit for the usual plate when the filament suits it."
      • addedInput schema / properties / compare_all / description
        Added value: +"True: slice all 5 goals for comparison; false: only the original and `goal`."
      • addedInput schema / properties / filaments / description
        Added value: +"Filament preset names, one per slot (e.g. \"Bambu PLA Matte @BBL P1S 0.4 nozzle\"). Alone on a 3MF project, replaces its filament."
      • addedInput schema / properties / goal / description
        Added value: +"\"quality\" (fine layers, slower walls), \"balanced\", \"speed\", \"strength\" (more walls and infill) or \"light\" (least filament)."
      • addedInput schema / properties / machine / description
        Added value: +"Machine preset name, e.g. \"Bambu Lab P1S 0.4 nozzle\". Omit to keep a 3MF project's own settings or use the defaults."
      • addedInput schema / properties / models / description
        Added value: +"Absolute paths of the STL or 3MF files to slice together."
      • addedInput schema / properties / plate / description
        Added value: +"Plate number to slice; 0 = every plate in a single result.3mf."
      • addedInput schema / properties / plate / minimum
        Added value: +0
      • addedInput schema / properties / process / description
        Added value: +"Process preset name, e.g. \"0.20mm Standard @BBL X1C\". Needs `machine`."
    • Changedprepare_print10 fields changed
      • addedInput schema / properties / bed_type / description
        Added value: +"Build plate, e.g. \"Textured PEI Plate\", \"Cool Plate\", \"High Temp Plate\". Omit for the usual plate when the filament suits it."
      • addedInput schema / properties / copies / description
        Added value: +"Number of copies of each model, arranged on the plate."
      • addedInput schema / properties / copies / minimum
        Added value: +1
      • addedInput schema / properties / extra_settings / description
        Added value: +"Extra print settings, as Bambu strings: {\"brim_type\": \"no_brim\"}."
      • addedInput schema / properties / filament / description
        Added value: +"Exact filament preset chosen by the user; overrides the material's default."
      • addedInput schema / properties / goal / description
        Added value: +"Print goal for the settings."
      • addedInput schema / properties / material / description
        Added value: +"Material name, e.g. \"PLA\", \"PETG\"."
      • addedInput schema / properties / models / description
        Added value: +"Absolute paths of the STL or 3MF files."
      • addedInput schema / properties / orientation / description
        Added value: +"\"auto\": best orientation from analyze_model; \"as_is\": keep the file's."
      • addedInput schema / properties / supports / description
        Added value: +"\"auto\": supports only when overhangs need them."
    • Changedprinter_status1 field changed
      • addedInput schema / properties / include_raw / description
        Added value: +"Also return the printer's raw MQTT report."
    • Changedsave_preset4 fields changed
      • addedInput schema / properties / kind / description
        Added value: +"Preset type: \"process\" (print settings), \"filament\" or \"machine\" (printer)."
      • addedInput schema / properties / name / description
        Added value: +"Name of the user preset to create or update."
      • addedInput schema / properties / parent / description
        Added value: +"Preset to inherit from when creating a new one (e.g. a system preset). Omit to update an existing user preset."
      • addedInput schema / properties / settings / description
        Added value: +"Settings to write, as Bambu strings: {\"layer_height\": \"0.16\", \"sparse_infill_density\": \"15%\"}. Unknown setting names are rejected."
    • Changedsetup_defaults3 fields changed
      • addedInput schema / properties / bed_type / description
        Added value: +"Usual build plate, e.g. \"Textured PEI Plate\"."
      • addedInput schema / properties / filament / description
        Added value: +"Usual filament: a preset or a material name such as \"PLA Matte\", adapted to the printer."
      • addedInput schema / properties / machine / description
        Added value: +"Exact machine preset, e.g. \"Bambu Lab A1 0.4 nozzle\"; its standard process follows."
    • Changedslice_history3 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of slices to return."
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • addedInput schema / properties / search / description
        Added value: +"Words from the model name or variant label to filter on."
    • Changedslice_model11 fields changed
      • addedInput schema / properties / arrange / description
        Added value: +"Let Bambu Studio auto-arrange the objects."
      • addedInput schema / properties / bed_type / description
        Added value: +"Build plate, e.g. \"Textured PEI Plate\", \"Cool Plate\", \"High Temp Plate\". Omit for the usual plate when the filament suits it."
      • addedInput schema / properties / filament_overrides / description
        Added value: +"Filament settings to change: {\"nozzle_temperature\": \"225\"}."
      • addedInput schema / properties / filaments / description
        Added value: +"Filament preset names, one per slot (e.g. \"Bambu PLA Matte @BBL P1S 0.4 nozzle\"). Alone on a 3MF project, replaces its filament."
      • addedInput schema / properties / machine / description
        Added value: +"Machine preset name, e.g. \"Bambu Lab P1S 0.4 nozzle\". Omit to keep a 3MF project's own settings or use the defaults."
      • addedInput schema / properties / models / description
        Added value: +"Absolute paths of the STL or 3MF files to slice together."
      • addedInput schema / properties / orient / description
        Added value: +"Let Bambu Studio auto-orient the objects."
      • addedInput schema / properties / plate / description
        Added value: +"Plate number to slice; 0 = every plate in a single result.3mf."
      • addedInput schema / properties / plate / minimum
        Added value: +0
      • addedInput schema / properties / process / description
        Added value: +"Process preset name, e.g. \"0.20mm Standard @BBL X1C\". Needs `machine`."
      • addedInput schema / properties / process_overrides / description
        Added value: +"Print settings to change for this slice: {\"layer_height\": \"0.16\"}."
  2. 18 tool updatesv1.0.0
    • First observedanalyze_model
    • First observedcheck_settings
    • First observedcompare_presets
    • First observedcompare_slices
    • First observedconnector_info
    • First observededit_3mf
    • First observedget_3mf_settings
    • First observedget_preset
    • First observedinspect_3mf
    • First observedlist_presets
    • First observedmaterial_guide
    • First observedoptimize
    • First observedprepare_print
    • First observedprinter_status
    • First observedsave_preset
    • First observedsetup_defaults
    • First observedslice_history
    • First observedslice_model

TDQS

A4.1/5.0

Scored across 18 tools

Disambiguation4/5

Most tools target distinct resources or workflow stages, and descriptions explicitly route between similar options (e.g. inspect_3mf vs get_3mf_settings vs check_settings). The main ambiguity is the slicing family: slice_model, compare_slices, optimize, and prepare_print all overlap, though their descriptions clarify when to use each.

Naming Consistency4/5

The set is predominantly snake_case with predictable verb_noun names such as list_presets, get_3mf_settings, compare_slices, and setup_defaults. Minor deviations like optimize (bare verb) and noun-first names like material_guide, printer_status, and connector_info are still readable and not confusing.

Tool Count3/5

At 18 tools, the server is on the heavy side for the domain, with several closely related slicing and inspection entry points. Each tool has a plausible role, but the surface feels broad enough that a user or agent must learn routing rules rather than intuit the set.

Completeness4/5

Coverage is strong: preset read/list/compare/save, 3MF inspect/edit/settings checks, slicing, optimization, model analysis, material guidance, printer status, history, and setup defaults. Minor gaps exist, such as no explicit delete_preset operation and no direct creation of a new 3MF except via prepare_print from STL/geometry-only input.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables 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.
    24
    11 npm
    23
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables Claude Code sessions to read and edit OrcaSlicer presets, clone profiles, inspect saved plates, and search the OrcaSlicer wiki, all without OrcaSlicer running.
    14
    AGPL 3.0
  • F
    license
    A
    quality
    C
    maintenance
    Integrates Bambu Studio and Bambu Lab 3D printers with Claude, enabling printer status checks, print control, file management, and slicing via natural language.
    9
    -
  • A
    license
    A
    quality
    B
    maintenance
    Enables LAN-based monitoring and control of Bambu Lab P2S/P1S printers, including confirm-gated print, pause, resume, stop, file upload, and slicing workflows.
    10
    11 npm
    MIT