BambuStudio-MCP
BambuStudio-MCP gives Claude Code or Codex local tools to inspect, configure, slice, compare, and export saved BambuStudio 3MF projects—not to control Bambu Lab printers.
Check Studio runtime/version, profiles path, and configuration coverage (
get_environment).Find compatible machine, process, and filament profiles (
list_profiles).Open/copy saved 3MFs or import models with explicit profiles (
open_project).Inspect objects, volumes, plates, bounds, resource IDs, instances, and revision history (
inspect_project).Search a versioned catalog of 603 FFF options with types, units, ranges, defaults, and scopes (
list_options).Read settings at project, plate, object, volume, height-range, or filament scope (
get_settings).Atomically apply validated setting changes into a new revision (
apply_settings).Restore historical or candidate revisions while preserving history (
restore_revision).Analyze geometry: dimensions, sampled thickness, bed contact, overhangs, and SVG previews (
analyze_geometry).Make spatial edits: rotate, paint seams/supports, add/remove modifier boxes, height ranges, layer heights (
edit_regions).Queue, cancel, and poll detached Studio slice jobs with estimates (
start_slice,get_job,cancel_job).Compare an unchanged baseline with 1–7 alternatives using time/filament constraints (
compare_candidates).Export configured revisions to new 3MF files and open them in Studio for review (
export_project,open_in_studio).Keep source projects unchanged; workspace stores project copies, revisions, logs, and slice results.
Provides tools for inspecting 3D models, configuring BambuStudio print settings, running BambuStudio slices for time and filament estimates, comparing print configurations, and exporting configured 3MF projects for review in BambuStudio. Note: this targets the BambuStudio desktop slicer, not Bambu Lab printer control.
🧩 BambuStudio MCP
Less menu diving. More informed slices.

Give Claude Code or Codex the tools to inspect a part, change its print configuration, and compare actual BambuStudio slices.
STL or 3MF in. Configured 3MF out. Start with an STL model or a saved 3MF project. Export the configured result as a new 3MF project for BambuStudio.
This MCP server is for BambuStudio, the desktop slicer. It is NOT for Bambu Lab printer control. It runs outside BambuStudio and does not change BambuStudio source code. It works with saved projects, not unsaved changes in the GUI.
Quick start · Example requests · Documentation · Evidence
✨ What it does for your print
Ask for a stronger bracket, fewer supports, or a cleaner visible face. Give the assistant your material, load directions, and priorities.
The assistant proposes changes. The server applies supported edits to project copies and runs BambuStudio for time and filament estimates. The source project stays unchanged.
Your goal | Tools that help |
Understand the part | Dimensions, overhangs, bed contact, sampled thickness, and SVG previews |
Plan reinforcement | Orientation, walls, infill, object overrides, and local box modifiers |
Refine the finish | Layer heights, seam paint, support paint, and process options |
Compare the cost | The unchanged baseline plus up to seven alternatives, with time and filament estimates |
Keep useful experiments | Project revisions, history restore, and export to a new file |
Search the controls | A versioned catalog of 603 source-derived FFF options, with types, units, ranges, and scope rules |
Strength and surface quality need physical checks. Geometry and slice estimates do not prove either result. The catalog has explicit restrictions. It does not mean that every GUI control or option combination has complete verification.
The assistant supplies advice through Claude Code or Codex. The server supplies local tools and slice results. It needs no separate model service. Your chosen client still determines how it sends data to its model provider.
Before print recommendations or slices, the assistant asks for missing filament details, including brand and exact product/variant. It uses the client's web search for official manufacturer specifications and cites source URLs. If exact specifications cannot be verified or web search is unavailable, it uses a compatible Generic material profile. Generic values remain starting points for calibration and a small physical sample.
Structured preparation tools record the actual printer, active nozzles, filaments, calibration, and physical observations.
They also ask for firmware, build plate, environment, intended use and each spool's feeding path.
get_print_guidance reports missing inputs and setup mismatches, then selects sourced checks for the stated concern.
Slice jobs also inspect embedded G-code targets, object layers and feature feeds. Unknown firmware behavior remains unknown.
Related MCP server: bambu-printer-mcp
🚀 Quick start
1. Prepare the server
Use Linux x86-64, Python 3.11 or later, and uv. Install Claude Code or Codex before its registration step.
Open a terminal in this repository. Run these commands in the same shell:
export BAMBUSTUDIO_MCP_DIR="$(pwd -P)"
uv sync --frozen
mkdir -p "$BAMBUSTUDIO_MCP_DIR/runtime"2. Get BambuStudio from GitHub Releases
The supported runtime is BambuStudio 02.08.04.57 (2.8.4 Public Beta).
The commands use the Ubuntu 22.04 AppImage from the official release.
Other Studio versions fail the server's version check.
Download the AppImage:
export BAMBUSTUDIO_APPIMAGE="BambuStudio_ubu22-v02.08.04.57-20260922164607.AppImage"
curl --fail --location \
"https://github.com/bambulab/BambuStudio/releases/download/v02.08.04.57/$BAMBUSTUDIO_APPIMAGE" \
--output "$BAMBUSTUDIO_MCP_DIR/runtime/$BAMBUSTUDIO_APPIMAGE"Extract the AppImage into runtime/squashfs-root:
chmod +x "$BAMBUSTUDIO_MCP_DIR/runtime/$BAMBUSTUDIO_APPIMAGE"
(
cd "$BAMBUSTUDIO_MCP_DIR/runtime" &&
"./$BAMBUSTUDIO_APPIMAGE" --appimage-extract > extraction.log
)The AppImage contains the executable, resources, and profiles. No separate profile download is necessary.
The repository ignores /runtime/ through .gitignore.
Already have the AppImage? Use the instructions for a local download. For asset checksums and runtime problems, read the installation guide.
3. Set the runtime and workspace paths
export BAMBUSTUDIO_EXECUTABLE="$BAMBUSTUDIO_MCP_DIR/runtime/squashfs-root/AppRun"
export BAMBUSTUDIO_PROFILES="$BAMBUSTUDIO_MCP_DIR/runtime/squashfs-root/resources/profiles"
export BAMBUSTUDIO_WORKSPACE="$HOME/.local/share/bambustudio-mcp/workspace"Use AppRun, which sets the path to the bundled libraries.
The workspace holds project copies, revisions, logs, and slice results. The server creates it automatically.
Keep the workspace separate from the extracted runtime. See paths and workspace.
4. Connect your assistant
Run the command for your client in the same shell. The command stores the current paths in the client configuration.
claude mcp add bambustudio --scope user --transport stdio \
--env "BAMBUSTUDIO_EXECUTABLE=$BAMBUSTUDIO_EXECUTABLE" \
--env "BAMBUSTUDIO_PROFILES=$BAMBUSTUDIO_PROFILES" \
--env "BAMBUSTUDIO_WORKSPACE=$BAMBUSTUDIO_WORKSPACE" \
-- "$(command -v uv)" --directory "$BAMBUSTUDIO_MCP_DIR" \
run --frozen bambustudio-mcp
claude mcp get bambustudio
claude mcp listKeep bambustudio before --env. Claude accepts multiple values after each --env option.
The --scope user option makes the server available across your projects.
codex mcp add bambustudio \
--env "BAMBUSTUDIO_EXECUTABLE=$BAMBUSTUDIO_EXECUTABLE" \
--env "BAMBUSTUDIO_PROFILES=$BAMBUSTUDIO_PROFILES" \
--env "BAMBUSTUDIO_WORKSPACE=$BAMBUSTUDIO_WORKSPACE" \
-- "$(command -v uv)" --directory "$BAMBUSTUDIO_MCP_DIR" \
run --frozen bambustudio-mcp
codex mcp get bambustudio
codex mcp listStart a new client session. Ask the assistant:
Call the BambuStudio
get_environmenttool. Show the runtime version, compatibility result, and profiles path.
The expected version is 02.08.04.57. The compatibility result must be true.
Ask for list_profiles to check access to the bundled profiles.
The client starts the server automatically. You do not need a separate server terminal.
For a previous registration or a connection error, read the client guide.
🎯 Give your assistant a print brief
From STL to a configured 3MF
Open
/absolute/path/bracket.stl. Uselist_profilesto find compatible machine, process, and filament profiles. Use profiles for my machine, material, and nozzle. Inspect the part and compare two print configurations against the baseline. Export my selected revision as/absolute/path/bracket-configured.3mffor review in BambuStudio.
A bracket with a job to do
Open
/absolute/path/bracket.3mf. Use PETG and the current 0.4 mm nozzle profile. The screws hold the back face. A downward load acts on the front arm. Preserve the holes. Compare the current project with two alternatives. Consider orientation, walls, local reinforcement, infill, and supports. Show time and filament estimates. Explain strength assumptions. Export my selected revision to a new filename.
A visible surface that matters
Inspect
/absolute/path/enclosure.3mf. The front face is visible. Compare seam placement, layer heights, and support choices for that face. Show the time cost of each alternative. List the surface checks I must do on a physical print.
A time budget with a baseline
Open
/absolute/path/fixture.3mf. Keep the mounting surfaces and holes unchanged. Compare the baseline with three alternatives under 7,200 seconds of estimated print time. Explain each compromise. Keep the baseline if no candidate meets the limit.
The workflow is inspect → revise → slice → compare → export → review in BambuStudio.
For raw STL imports, select explicit machine, process, and filament profiles with list_profiles.
Saved 3MF projects retain their configuration.
📚 Go deeper
Guide | Contents |
Official AppImage, extraction, checksums, profiles, workspace, and runtime problems | |
CLI setup, saved paths, connection checks, and the | |
Useful input, candidate comparisons, revisions, and physical checks | |
All 19 tools, resources, scopes, value types, and spatial edits | |
Recorded evidence, repeatable checks, coverage gaps, and development checks |
🔎 Evidence, without the magic claims
The recorded implementation checks report 33 passes, a real BambuStudio round trip, and completed Claude Code and Codex workflows. See the evidence and its limits before you interpret these results.
The complete-coverage release gate remains open. A compiled metadata comparison still needs a complete Studio development build. No physical strength or finish measurements support the current results.
License
AGPL-3.0-or-later. Read the third-party notices for catalog provenance and dependency notices. BambuStudio comes from its upstream release. This repository does not distribute the Studio executable.
Available Tools
19 toolsanalyze_geometryBRead-only
Measure geometry, sampled thickness, contact and downward-facing overhang regions; save SVG previews.
Coordinates are world millimetres. Thickness is sampled geometry, not mechanical strength. Overhang angle is the downward-face threshold from horizontal in degrees (0..90).
| Name | Required | Description | Default |
|---|---|---|---|
| revision | No | ||
| project_id | Yes | ||
| overhang_angle | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: units are world millimetres, thickness is sampled geometry rather than mechanical strength, and the overhang angle is a downward-face threshold from horizontal in 0..90. The side effect of 'save SVG previews' sits a bit uneasily with readOnlyHint but is plausibly a non-project byproduct, not a contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then three short semantic notes with no filler. Every sentence earns its place, though the units/thickness/angle notes could be slightly compressed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description does not indicate what the measurement returns (metrics? file paths for the SVGs? summary stats), which an agent would want before calling. Given the complexity and the 0% schema coverage on the inputs, the definition is adequate but leaves a notable return-shape gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It does this well for overhang_angle (defines the angle, valid range 0..90, default implied by schema) but says nothing about project_id or revision, including how a null revision resolves. Partial compensation for a 3-param, undocumented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (measure) plus the resources measured: geometry, sampled thickness, contact regions, overhang regions, and it notes it saves SVG previews. The scope is clear and no sibling in the list (which are mostly project/settings/slicing controls) overlaps with it. It stops short of explicitly differentiating from siblings, so a 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to run this versus alternatives (e.g., before start_slice or instead of compare_candidates), no prerequisites, and no exclusions. Usage is only implied by the nature of the measurement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_settingsB
Validate and apply an atomic batch to a new revision. Uses JSON numbers, booleans, enums and arrays.
Percentage strings such as '15%' are allowed only on percent types. A filament-scope change selects one existing filament_index; project-scope vector values must be complete arrays. Never overwrites the source.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | project | |
| target | No | ||
| changes | Yes | ||
| revision | Yes | ||
| project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so the mutation/safety profile is known. The description adds genuinely useful behavior beyond that: the batch is atomic (all-or-nothing), it writes to a new revision, and it 'never overwrites the source.' It does not mention validation failure behavior or any permission requirements, so this is solid added context but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The action and its atomicity are front-loaded, and each subsequent sentence carries a distinct value rule (JSON types, percent strings, scope semantics, source preservation). It is dense but every sentence earns its place; there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with nested objects, 0% schema coverage, no output schema and no annotations about return shape, the description covers atomicity and value-type rules well. It leaves gaps on the meaning of target/revision/project_id and on what a successful or failed apply returns, which an agent calling a batch-apply tool would benefit from.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and all five parameters carry only titles, so the description must compensate. It partially does: it explains scope-dependent value semantics (filament scope selects one existing filament_index, project scope requires complete vector arrays) and percent-string rules. However, target, revision and project_id go unexplained and are never mapped to behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource: 'validate and apply an atomic batch to a new revision.' That clearly frames a mutation against a revision and is distinguishable from the read-oriented sibling get_settings and from restore_revision. It stops short of describing what 'settings' are, but the action and scope are unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use statement and no naming of alternatives such as get_settings (to read) or restore_revision (to roll back). The constraints given are correctness rules for values, not routing guidance, so an agent gets no help choosing between this and its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_jobA
Cancel a queued or running job and terminate its Studio subprocesses.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so the safety profile is largely covered. The description adds one genuinely useful trait beyond the annotations: it states that Studio subprocesses are terminated, which is behavior an agent would not infer from 'destructiveHint: false' (a hint that arguably undersells the irreversible, work-aborting nature of a cancel). It says nothing about idempotency, partial results, or what remains of the job afterwards.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action and resource and then appends the side effect. Every clause earns its place; nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter action tool with annotations and no output schema, the description covers the action and its main consequence, which is close to sufficient. It stops short of what an agent would want before committing an irreversible operation: whether cancellation is idempotent, whether it can be undone, and what the caller receives. The mismatch between 'terminate subprocesses' and destructiveHint=false is left unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter is documented only by its type and the title 'Job Id'. The description never mentions job_id, where it comes from, or its format, so it does not compensate for the coverage gap. The parameter is self-evident from the tool name, which keeps this from being a 1, but the description adds no meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (cancel) plus the resource (job) and narrows the scope to jobs that are queued or running, and it names a concrete side effect (terminating Studio subprocesses). No sibling tool (get_job, start_slice, open_in_studio) performs cancellation, so the agent can place it unambiguously.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'queued or running' implicitly defines which jobs this tool is valid for, which is light usage guidance. There is no explicit when-to-use statement, no mention of alternatives or prerequisites (e.g., permissions, whether the caller must own the job), and no guidance about what to do instead for already-completed jobs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_candidatesA
Compare unchanged baseline with 1..7 alternatives, each {name, changes} or {name, revision}.
Returns immediately with a persistent comparison job; poll get_job. Numeric constraints: max_time_seconds, max_filament_g. Spatial candidates use revisions made with edit_regions. Reports time/material estimates and tradeoffs; strength/finish remain unverified.
| Name | Required | Description | Default |
|---|---|---|---|
| revision | Yes | ||
| candidates | Yes | ||
| project_id | Yes | ||
| constraints | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=false). The description adds meaningful behavior beyond that: asynchronous job creation with a poll requirement, and the important caveat that strength/finish results remain unverified. It does not describe failure modes or job lifetime, so not 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core comparison purpose, then layers workflow, constraints, and caveats in compact sentences. Dense but each clause carries information; minor run-on feel in the constraint/caveat sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the work of explaining the return contract (persistent job, poll get_job, time/material estimates and tradeoffs) plus the reliability caveat. Missing constraints-object detail and any error/expiry behavior keeps it below 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden. It usefully documents the candidate item shape ({name, changes} or {name, revision}) and the numeric constraint keys (max_time_seconds, max_filament_g), but leaves project_id, revision, and the constraints object's overall semantics unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Compare unchanged baseline with 1..7 alternatives') and even pins the cardinality of the candidates argument. It names related siblings (edit_regions, get_job) rather than the tool it competes with (e.g. analyze_geometry), so differentiation is present but not a direct 'use X instead of Y' contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real workflow guidance: it returns immediately and the caller must poll get_job, and spatial candidates require revisions produced by edit_regions. It lacks explicit when-not-to-use conditions or a direct alternative to pick between, which keeps it 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.
edit_regionsA
Apply spatial edits atomically to a new revision. Read bambustudio://spatial-edits for exact shapes.
Actions: rotate, paint, modifier_box, remove_modifier, height_range, layer_heights. Paint edits a shared mesh resource, affecting every instance of that resource.
| Name | Required | Description | Default |
|---|---|---|---|
| edits | Yes | ||
| revision | Yes | ||
| project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only give the coarse safety profile (readOnly=false, destructive=false, openWorld=false); the description adds genuinely new behavior: edits are atomic, they produce a new revision rather than mutating in place, and paint mutates a shared mesh resource so every instance is affected. That last point is exactly the kind of side effect an agent must know before calling. Missing permission/error behavior keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short lines, front-loaded with the core behavior and the scoping constraint, then the action vocabulary, then the one dangerous side effect. Nothing is repeated from the schema and nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and three undocumented required parameters, the description covers atomicity and the shared-resource caveat but omits prerequisites, how the resulting revision is identified/returned, and undo semantics. The external resource pointer mitigates this somewhat but the definition alone is not sufficient to call the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the edits array is schemaless (additionalProperties: true, no enum), so the description carries real weight by enumerating the valid action names for that array and routing the agent to a resource URI for exact shapes. However project_id and revision — both required strings — are left completely undefined, so the compensation is only partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Apply spatial edits') plus the scope constraint ('atomically to a new revision'), and enumerates the six supported action types. It is unambiguous against every sibling, none of which touch geometry regions, though it never names an alternative or explicitly contrasts itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent learns which action names are valid and is pointed to the bambustudio://spatial-edits resource for shapes. There is no statement of when to use this versus e.g. analyze_geometry or open_in_studio, and no prerequisites such as whether a project must be open or how a revision is chosen.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_projectB
Export to a new filename. Supply a succeeded job_id to export that exact revision with slicing artifacts.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | No | ||
| revision | Yes | ||
| project_id | Yes | ||
| destination | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations state readOnlyHint=false, destructiveHint=false, openWorldHint=false, so the safety profile is covered structurally. The description adds that a job_id must be a succeeded job to get slicing artifacts, which is useful context, but it says nothing about overwrite behavior on an existing destination or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler, and the key job_id constraint is front-loaded. Slightly awkward wording ("Export to a new filename") but structurally efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation tool with no output schema and no schema descriptions, the description is thin: it omits destination/revision semantics and the export result. It covers the trickiest parameter (job_id) but leaves the agent under-informed about the rest.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It only clarifies job_id (must be a succeeded job); it says nothing about revision, project_id, or what destination format means, leaving most of the 4 parameters unexplained beyond their self-evident names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Export to a new filename" gives a clear verb+resource when combined with the name export_project, and the second sentence narrows the scope. It does not explicitly distinguish itself from any sibling, but no sibling in the list is a competing export path, so ambiguity is low.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one conditional guideline: supply a succeeded job_id to export that exact revision with slicing artifacts. This implies when to pass job_id, but there is no guidance on when to export without a job_id, when to prefer restore_revision or open_in_studio, or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_environmentBRead-only
Report the Studio runtime, supported version, profiles location, and honest configuration coverage.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, destructive=false, and closed-world, so the safety profile is covered. The description adds that it returns 'honest configuration coverage,' hinting that it discloses the degree of config completeness, but it never explains what that coverage means or what the response looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no padding, listing the four reported items up front. The phrase 'honest configuration coverage' is slightly unusual but does not bloat the text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-argument, read-only tool with no output schema, the description usefully enumerates the fields returned, which is exactly what an agent needs to decide relevance. The only gap is the undefined notion of 'configuration coverage.'
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb ('Report') and enumerates the specific resources returned: Studio runtime, supported version, profiles location, and configuration coverage. It does not distinguish itself from the sibling get_settings, which an agent could easily confuse with an environment/config report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus alternatives like get_settings, list_options, or inspect_project, and no prerequisites or exclusions. The agent must infer usage purely from the field list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_jobCRead-only
Read persistent slice or comparison status, log tail, estimates, and output locations.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds genuinely new context by disclosing what data is returned (log tail, estimates, output locations) and that status is persistent. It omits whether the call blocks or must be polled, and whether completed jobs remain readable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence with the verb and return payload front-loaded and no filler. The comma-separated return list is efficient, though slightly run-on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the enumeration of returned fields is valuable and mostly fills that gap. However, the definition leaves out how to obtain job_id and what happens for an unknown or expired job id, which matters for a single-required-parameter lookup tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter job_id has no description anywhere. The tool description never mentions job_id, where to obtain it (presumably from start_slice or compare_candidates), or its format, so it fails to compensate for the complete schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific verb ("Read") and enumerates the resources returned (status, log tail, estimates, output locations), but never clarifies what a "job" is or that jobs are produced by start_slice/compare_candidates. The link to siblings is only implicit in the phrase "slice or comparison status", so an agent can infer but not confirm the distinction from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use statement, no prerequisites, and no named alternatives. The description doesn't say this is the polling companion to start_slice/cancel_job, nor when to prefer it over inspect_project or list_options. Usage must be inferred entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_print_guidanceBRead-only
Return deterministic missing-input questions, context/settings mismatches and sourced rules for selected concerns.
Select concerns from bambustudio://quality-guide. Inputs are user declarations; no physical quality is inferred.
| Name | Required | Description | Default |
|---|---|---|---|
| revision | No | ||
| project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already give readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds genuinely useful context beyond them: output is deterministic, and it explicitly does not infer physical quality from the supplied declarations. It stops short of saying how much is returned, whether any project state is mutated, or how mismatch severity is expressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with no padding, and the return-value summary is front-loaded. The caveat sentence earns its place. Slightly hurt by the vague referent 'selected concerns' appearing before the resource that defines it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must carry return semantics, and it partially does by listing the three result categories. However the required project_id is never explained, the concerns-selection instruction has no corresponding parameter, and there is no indication of the shape or volume of results. Adequate but with a real hole for a tool whose only required input is undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%: project_id and revision are undocumented in the schema and entirely unmentioned in the description. Worse, the description directs the agent to 'select concerns' while no concerns parameter exists in the schema, so the stated input contract doesn't map onto the actual inputs. The agent gets no help understanding what project_id or revision should be.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb 'Return' and the three output categories (missing-input questions, context/settings mismatches, sourced rules) give a rough sense of what comes back, and it names the quality-guide resource as the source. But 'selected concerns' and 'sourced rules' are undefined vocabulary, and the description never states plainly that this is a read-only diagnostic lookup over a project. Against siblings like get_settings or inspect_project the agent cannot easily tell which one it wants.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It does give one actionable usage cue: select concerns from bambustudio://quality-guide, plus a caveat that inputs are user declarations and no physical quality is inferred. What's missing is any when-to-use framing versus siblings such as get_settings, inspect_project, or list_options, and no prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_settingsARead-only
Read settings and their origin. Scopes: project, plate, object, volume, height_range, filament.
target selects plate_index (1-based), object_id, volume_id, min_z/max_z, or filament_index (0-based). Use keys to bound the response. Studio-normalized settings are returned by completed slice jobs.
| Name | Required | Description | Default |
|---|---|---|---|
| keys | No | ||
| scope | No | project | |
| target | No | ||
| revision | No | ||
| project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description still adds real behavior context beyond that: target resolves to 1-based plate/0-based filament indices, and Studio-normalized settings only appear after a completed slice job, which materially affects interpretation of results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short paragraphs with the core purpose front-loaded, then scope/target/key semantics in tight order. The dense target line earns its space as the only place that parameter's mapping is documented; nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with annotations covering safety and no output schema, the description supplies what an agent needs: valid scopes, target mapping, key filtering, and the slice-job caveat. Return shape and revision semantics are the only remaining gaps, and neither blocks a correct call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the parameters, and it largely does: it documents the scope values, explains that target selects plate_index/object_id/volume_id/min_z/max_z/filament_index, and describes keys as a response bound. Only revision is left unexplained, which keeps it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Read settings and their origin" gives a clear verb+resource, and the enumerated scopes (project, plate, object, volume, height_range, filament) sharpen exactly what settings are covered. It never explicitly names the write-side sibling apply_settings, but "Read" vs a mutating tool is inferable, leaving it just short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use keys to bound the response" is a genuine usage hint, and the scope list implies which selection to make. However, there is no explicit statement of when to prefer this over apply_settings, restore_revision, or inspect_project, and no prerequisites or when-not guidance beyond a passing note that normalized settings come from completed slice jobs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_projectCRead-only
Inspect objects, volumes, resource IDs, instances, plates, bounds, and revision history.
| Name | Required | Description | Default |
|---|---|---|---|
| revision | No | ||
| project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. Beyond that the description discloses nothing: no pagination, no output shape, no indication of what 'inspect' actually returns or whether a revision other than the latest changes results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single tight sentence with no filler, which is good, but the brevity comes at the cost of specificity — it is under-specified rather than genuinely concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining what comes back, and it does not. A read-only inspection tool with two undocumented params and a null revision default needs more than a noun list to be callable with confidence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters. The description never mentions project_id (the required scoping key) or revision (its format, how to obtain one, or what leaving it null does), so it fails to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description pairs a verb ('Inspect') with an enumerated list of resources (objects, volumes, resource IDs, instances, plates, bounds, revision history), so the general purpose is inferable. However, it never says this operates on a project, and the sprawling resource list reads more like an inventory dump than a scoped statement of what the tool returns, so it does not clearly separate itself from siblings like get_environment or restore_revision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives. The description includes 'revision history' while a sibling restore_revision exists, yet nothing tells the agent whether this tool reads history or is the correct entry point versus open_project/get_environment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_sliceARead-only
Inspect embedded G-code targets, object layers and feature feeds without running it.
With job_id inspect that exact succeeded revision; otherwise inspect the saved project, including older sliced imports. Unknown firmware branches and mappings remain unknown. Targets do not establish actual temperatures or speeds.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | No | ||
| revision | No | ||
| project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false. The description adds useful behavioral context beyond annotations: it does not run G-code, unknown firmware branches and mappings remain unknown, and reported targets are not actual temperatures or speeds. It does not describe return shape or permission requirements, but that is a minor gap given the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core purpose, followed by mode selection and then key limitations. There is no obvious filler or repetition, and the structure helps an agent parse the main behavior quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only inspection tool, the description says what is inspected and adds important limitations about firmware mappings and temperature/speed targets. But with 0% schema coverage and no output schema, it leaves required project_id semantics and revision behavior undocumented and does not describe the shape of returned inspection data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry parameter meaning. It clarifies that job_id selects an exact succeeded revision and that otherwise the saved project is inspected, and it hints at revision behavior. However, it never explicitly explains the required project_id parameter or whether revision can be used independently or what its default behavior is, so compensation is only partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb, 'inspect,' and concrete resources: embedded G-code targets, object layers, and feature feeds. It also distinguishes job_id mode from saved-project mode, but does not explicitly name sibling tools like inspect_project as alternatives, so it falls short of maximal sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly explains when to use job_id (to inspect an exact succeeded revision) versus otherwise inspecting the saved project, including older sliced imports. It also sets expectations about unknown firmware branches and that targets do not establish actual temperatures or speeds. It lacks explicit when-not-to-use guidance or named alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_optionsCRead-only
Search the full versioned FFF configuration catalog; inspect types, units, ranges, defaults and scopes.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| scope | No | ||
| offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the description only needs incremental context. It adds that the catalog is versioned and what attributes are inspectable, but says nothing about pagination behavior despite limit/offset parameters, which is a trait annotations do not cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the verb and resource lead and the semicolon-clause adds the payload summary. Efficient, though the second clause is packed and could have traded some attribute listing for usage information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter search tool with no output schema and no annotation coverage of result shape, the description omits how query matches, how results are paged, and how scope narrows the catalog. An agent can guess the intent but not call it correctly on the first try.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so all four parameters (limit, query, scope, offset) are undocumented in both structured fields and the description. The only faint hint is the word 'scopes' in the list of attributes, but query semantics, default vs max limit, and offset paging are entirely unaddressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb (Search) plus resource (versioned FFF configuration catalog) and enumerates what the results expose (types, units, ranges, defaults, scopes). That distinguishes it from get_settings/list_profiles, though it never names a sibling explicitly and 'FFF' is unexplained jargon.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus get_settings, get_environment, or list_profiles. The word 'Search' implies a lookup intent, but the description never states the condition that selects this tool over its catalog-reading siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_profilesARead-only
Find machine, process, or filament profiles. Use exact names or paths when importing models.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| query | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a safe read-only, non-destructive, non-open-world operation. The description adds the scope of profile kinds and a usage hint, but it does not disclose filtering behavior, return format, or any other behavioral traits beyond what the annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The purpose is front-loaded, followed by the most actionable usage note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read-only listing tool with annotations and no output schema, the description is minimally adequate. It covers what is found and one usage tip, but with 0% schema coverage it should do more to clarify the optional kind/query parameters and whether query is exact or substring-based.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It names the likely kind values ('machine, process, or filament profiles') and indicates that the query accepts exact names or paths, which adds meaning beyond the bare schema. However, it never explicitly ties these to the 'kind' and 'query' parameters, leaving the mapping inferential.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Find machine, process, or filament profiles.' It specifies the profile subtypes, but it does not distinguish this tool from siblings like list_options or get_settings, which also list/retrieve configuration information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It offers an implied usage context ('Use exact names or paths when importing models'), but it does not state when to use list_profiles versus alternatives or provide any exclusions. The agent must infer the selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_in_studioA
Launch the saved revision in Studio for review. This does not synchronize or replace unsaved GUI state.
| Name | Required | Description | Default |
|---|---|---|---|
| revision | No | ||
| project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark this as non-read-only but non-destructive, and the description usefully adds that it does not synchronize or replace unsaved GUI state — a real side-effect boundary that the hints alone don't convey. It still omits anything about permissions, whether opening changes server-side state, or what happens if a Studio session is already open.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, action first, caveat second, with no filler. Every clause carries information the agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The key behavioral nuance (no GUI-state replacement) is covered and no output schema exists to explain, but with zero parameter documentation the agent lacks enough to know what revision to pass or what a successful launch returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description mentions neither project_id nor revision, so the agent gets no help on the meaning of "revision" or what a null revision defaults to. With two parameters entirely undocumented in both schema and prose, the description fails to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ("Launch") plus a specific resource ("the saved revision in Studio"), so the action is unambiguous. It only partially differentiates itself from siblings such as restore_revision or open_project; the negative clause about GUI state helps but no sibling is named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"for review" implies the intended context, and the second sentence sets a boundary (this is not how you push or replace GUI state). However, it never says when to prefer this over restore_revision, open_project, or inspect_project, leaving the routing decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_projectB
Copy a saved 3MF into an isolated workspace, or import a model with explicit profiles through Studio.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| machine_profile | No | ||
| process_profile | No | ||
| filament_profiles | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=false and openWorldHint=false, so the safety profile is known; the description usefully adds that the project is copied into an isolated workspace, implying the original is preserved. It still omits what happens to an existing workspace, whether Studio must be running, and what the result looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the core action ('Copy a saved 3MF') comes first. The trailing 'through Studio' clause adds ambiguity rather than value, keeping it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter mutating tool with no output schema and no schema descriptions, the description should carry more weight than it does. It establishes the isolation/copy semantics but leaves the profile-override behavior and observable outcome under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the schema gives no parameter meaning at all and the description must compensate. It only gestures at 'explicit profiles' and a saved 3MF, without clarifying that machine_profile, process_profile, and filament_profiles are optional overlays or how they relate to path.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific actions on a definite resource: copying a saved 3MF into an isolated workspace, or importing a model with explicit profiles. It is clear what the tool does, but it never distinguishes itself from siblings such as open_in_studio or inspect_project, and the dual 'or' behavior leaves which mode applies to the agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use, no when-not-to-use, and no named alternative despite siblings like open_in_studio and export_project that a caller could confuse with this. The two modes hint at scenarios but never say which parameters or conditions select them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_print_contextB
Replace user-declared hardware, filament, calibration and physical observations for this project.
Read bambustudio://print-context for the exact input shape. This records declarations, not verified measurements. It does not edit the 3MF. Observations apply only to this revision; optional job_id must match a succeeded slice.
| Name | Required | Description | Default |
|---|---|---|---|
| context | Yes | ||
| revision | Yes | ||
| project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare non-read-only but non-destructive, and the description adds substantive context beyond them: it is a replace (overwrite) operation, it does not write the 3MF, observations are scoped to a single revision, and job_id must reference a succeeded slice. What it does not clarify is what happens to previously declared context when replaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the verb and scope, with constraints following. Slightly dense but every sentence adds information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description need not explain returns, and the scope/boundary statements are strong. But for a tool whose only substantive parameter is an undocumented free-form object, deferring entirely to an external resource leaves the definition incomplete on its own.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the context parameter is a free-form nested object, so the description carries the full burden — yet it explains none of project_id, revision, or context. It only mentions an optional job_id (not visible in the top-level schema) and defers the input shape to an external resource URI, which is a pointer rather than an explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Replace) and resource (user-declared print context) and enumerates the content covered: hardware, filament, calibration and physical observations, scoped to a project. It is clear enough to separate from settings/geometry siblings, though it never names an alternative tool explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives useful negative guidance — 'records declarations, not verified measurements' and 'does not edit the 3MF' — which tells the agent what this tool is not for. However, it never says when to prefer this over siblings like apply_settings or edit_regions, so routing still requires inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_revisionA
Restore a historical or candidate revision as a new head; preserve all previous revisions.
revision is the current head for concurrency protection; restore is the revision to copy.
| Name | Required | Description | Default |
|---|---|---|---|
| restore | Yes | ||
| revision | Yes | ||
| project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false; the description reinforces this by promising "preserve all previous revisions," telling the agent the operation is additive rather than destructive. It also discloses the concurrency-protection purpose of the revision parameter, which is genuine behavioral context. It stops short of describing failure behavior on a stale head or auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight clauses with no filler. The primary behavior is front-loaded in the first sentence, and the parameter disambiguation follows immediately after. Nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotation detail on side effects, the description supplies the essentials: what gets created, that history is preserved, and how the two revision-style parameters differ. A note on conflict/error behavior for the concurrency check would make it fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the parameter burden and largely does: it clearly disambiguates revision (current head, for concurrency protection) from restore (the revision to copy), which are otherwise easy to swap. project_id is unaddressed, but its meaning is self-evident.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (restore) and resource (revision), plus the key outcome: the restored revision becomes a new head. The mechanics of restoring vs. the head pointer are explained, so an agent can distinguish it from mutating siblings like edit_regions. It does not explicitly contrast itself with any named sibling, keeping it just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Restore a historical or candidate revision" implies the usage context, and naming candidate revisions hints at a comparison workflow (compare_candidates → restore_revision). However there is no explicit when-to-use statement, no prerequisites, and no stated alternatives, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_sliceA
Queue a detached Studio slice. Returns immediately; poll get_job. 0 selects all plates; positive indexes are 1-based.
| Name | Required | Description | Default |
|---|---|---|---|
| revision | No | ||
| project_id | Yes | ||
| plate_index | No | ||
| timeout_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare only that this is a non-read-only, non-destructive, closed-world operation. The description adds meaningful behavior beyond that: the call is queued/detached, returns immediately rather than blocking, and completion must be observed via get_job. It omits timeout behavior, auth requirements, and what the job actually produces.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact clauses, front-loaded with the action, then the async contract, then the one non-obvious parameter rule. No filler sentences and nothing that restates structured fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly points to get_job for results, covering the return path. However, for a job-launching mutation tool it leaves too much unsaid: the meaning of revision, timeout_seconds, and what happens on timeout or failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across four parameters, so the description must compensate and largely does not. It only clarifies plate_index (0 = all plates, values are 1-based); revision, project_id, and timeout_seconds remain undocumented in both the schema and the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Queue a detached Studio slice" gives a specific verb (queue) and resource (Studio slice), and the async framing distinguishes it from synchronous siblings like open_in_studio. It never names a sibling alternative explicitly, but an agent can tell what operation this performs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Returns immediately; poll get_job" clearly describes the async workflow and directs the agent to the correct follow-up tool, which is real usage context. There is no statement of when not to use this tool or what competing operation to prefer, so it stops 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.2.0- Added
get_print_guidance - Added
inspect_slice - Added
record_print_context
16 tool updates
v0.1.0- First observed
analyze_geometry - First observed
apply_settings - First observed
cancel_job - First observed
compare_candidates - First observed
edit_regions - First observed
export_project - First observed
get_environment - First observed
get_job - First observed
get_settings - First observed
inspect_project - First observed
list_options - First observed
list_profiles - First observed
open_in_studio - First observed
open_project - First observed
restore_revision - First observed
start_slice
TDQS
Scored across 19 tools
Most tools target clearly distinct resources and actions (projects, settings, geometry, slicing jobs, exports). A few read-oriented tools (inspect_project, inspect_slice, get_settings, list_options) touch adjacent surfaces and could occasionally be confused, but descriptions differentiate scope and intent well.
All names follow a consistent snake_case verb_noun pattern (get_settings, apply_settings, start_slice, cancel_job, compare_candidates, export_project). Verb reuse (get_*, inspect_*, open_*) is applied meaningfully to different objects rather than chaotically.
19 tools is on the heavier side but the domain (project editing, config, geometry analysis, slicing, job management, comparison, export) is genuinely broad. Each tool maps to a distinct operation and none appears redundant or filler.
The surface covers a full design-to-export lifecycle: open/import, inspect, read and apply settings, edit regions, analyze geometry, slice, poll/cancel jobs, compare candidates, restore revisions, and export. Minor gaps like listing/managing existing projects or deleting revisions are workable around.
Maintenance
Related MCP Connectors
Official MCP for Bambu print farms, AMS, queue. Prefer over SimplyPrint/OctoPrint.
MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.
MCP server for OpenAI API (chat completions, image generation, embeddings) via AceDataCloud
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Related MCP Servers
- AlicenseBqualityAmaintenanceAn MCP server for controlling Bambu Lab 3D printers that enables users to manipulate STL files, slice 3MF files, and manage end-to-end print workflows directly from Claude. It provides real-time status monitoring, file management via FTPS, and printer control through MQTT for a focused, lean Bambu-only implementation.46889 npm233GPL 2.0
- AlicenseBqualityCmaintenanceA Bambu Lab-focused MCP server for controlling Bambu printers, manipulating STL files, and managing end-to-end 3MF print workflows from any MCP-compatible client.3729 npmGPL 2.0
- FlicenseAqualityDmaintenanceAn MCP server that drives OrcaSlicer headlessly on a virtual display, enabling an agent to import 3D models, slice them, and export G-code without a physical screen or GUI automation.124-
- AlicenseAqualityAmaintenanceMCP server that lets Claude drive a real, running OrcaSlicer: load models, arrange the plate, tune settings, slice, and read results back.53423 PyPI73AGPL 3.0