MCP 3D Printer Server
MCP 3D打印服务器
**Bambu
.3mf打印:**新增专为 Bambu Lab 打印机设计的print_3mf工具。该工具会上传.3mf文件,并根据 OpenBambuAPI 规范通过 MQTT 直接发送打印命令。**直接 MQTT 通信(Bambu):**重构 Bambu 命令处理(
print_3mf、cancelJob)以使用直接 MQTT(TLS 端口 8883),而不是仅仅依赖bambu-js执行命令。**
.3mf文件解析:**实现了一个解析器(src/3mf_parser.ts)来读取.3mf文件中的元数据和 Bambu 特定的切片器设置(来自project_settings.config)。**Bambu 预设资源:**如果设置了
BAMBU_STUDIO_CONFIG_PATH,则增加了对将 Bambu Studio 预设文件(machine、filament、process)读取为 MCP 资源(例如,preset://bambu/process/MyPreset)的支持。**OrcaSlicer 集成:**增加了通过其命令行界面为
slice_stl工具使用 OrcaSlicer 的支持。**新的 STL 操作工具:**添加了
merge_vertices、center_model和lay_flat工具,用于使用three.js进行基本模型准备。**配置更新:**添加了用于预设加载的
BAMBU_STUDIO_CONFIG_PATH环境变量。**FTP 使用说明:**在文档中承认,Bambu 的文件操作当前通过
bambu-js使用可能不安全的 FTP。**实现功能奇偶校验:**将 OctoPrint、Klipper、Duet、Repetier、Prusa Connect 和 Creality Cloud 的功能(状态详细信息、文件操作、尽可能直接打印、预设处理)提升到 Bambu 实施所计划的稳健性级别。
**实现完整的 Bambu MQTT 状态:**重构 Bambu 的
getStatus以订阅 MQTT 报告并保持实时状态。**实现强大的 AMS 映射:**替换占位符逻辑;正确解析并使用来自
.3mf切片器配置或用户覆盖的 AMS 映射来执行 MQTT 打印命令。**实施
.3mf打印覆盖:**向print_3mf工具添加逻辑以处理用户提供的覆盖(例如,校准标志)以及可能通过 MQTT/G 代码实现的常见切片机设置(如果可行)。**计算 MD5 哈希:**添加逻辑以计算并包含 MQTT 打印命令中的
.3mf文件的 MD5 哈希(可选但协议推荐)。**重构 Bambu File Ops:**如果可能/稳定,研究用直接 MQTT 方法替换
bambu-jsFTP 操作(getFiles、uploadFile),或者为bambu-js提供 FTPS 支持。**添加预设发现逻辑:**改进预设资源列表(当前根据潜在文件名列出,如果存在则可以解析索引文件)。
**扩展
.3mf支持:**在适用的情况下为其他打印机类型添加.3mf打印支持。**错误处理和报告:**增强 MQTT 错误处理和打印进度/完成的报告。
**测试:**对所有新的 Bambu 功能进行彻底的运行时测试。
目录
Related MCP server: printd
描述
这是一个允许 MCP 用户连接这些 3D 打印机的 API 端点的服务器:
OctoPrint
克利珀(《太空城》)
二重唱
雷佩蒂尔
Bambu实验室
Prusa Connect
Creality/Ender
该服务器是一个模型上下文协议 (MCP) 服务器,用于将 Claude 与 3D 打印机管理系统连接起来。它允许 MCP 通过各种打印机管理系统(例如 OctoPrint、Klipper(通过 Moonraker)、Duet、Repetier 和 Bambu Labs 打印机)的 API 与 3D 打印机进行交互。
资源使用注意事项:此 MCP 服务器包含高级 3D 模型处理功能,处理大型 STL 文件时可能会占用大量内存。有关内存使用情况和性能的重要信息,请参阅“限制和注意事项”部分。
特征
获取打印机状态(温度、打印进度等)
列出打印机上的文件
将 G 代码文件上传到打印机
启动、取消和监控打印作业
设置打印机温度
高级 STL 文件操作:
延长底座以获得更好的附着力
均匀缩放模型或沿特定轴缩放模型
围绕任意轴旋转模型
平移(移动)模型
修改 STL 文件的特定部分(顶部、底部、中心或自定义)
具有详细模型信息的全面 STL 分析
生成 STL 文件的多角度 SVG 可视化
长时间操作的实时进度报告
通过详细诊断进行错误处理
切片 STL 文件以生成 G 代码
确认 G 代码文件中的温度设置
从 STL 修改到打印的完整端到端工作流程
直接在 Bambu Lab 打印机上打印
.3mf文件(通过 MQTT 命令)将 Bambu Studio 预设文件(打印机、灯丝、工艺)读取为资源
安装
先决条件
Node.js 18 或更高版本
npm 或 yarn
从 npm 安装
npm install -g mcp-3d-printer-server从源安装
git clone https://github.com/dmontgomery40/mcp-3d-printer-server.git
cd mcp-3d-printer-server
npm install
npm link # Makes the command available globally使用 Docker 运行
您还可以使用 Docker 和 Docker Compose 在容器化环境中运行服务器。
确保已安装 Docker 和 Docker Compose。
将
.env.example复制到.env并配置您的设置。构建并运行容器:
docker-compose up --build -d
在 Docker 中使用切片器
请注意,默认的 Docker 设置无法直接使用主机上安装的切片器。由于主机和容器之间的操作系统和库存在差异,将切片器可执行文件直接从主机挂载到容器中是不可靠的。
推荐的方法是在 Docker 镜像中 安装你首选的切片器。这使得容器能够自给自足。
为此,您需要修改Dockerfile 。以下是如何添加 PrusaSlicer 或 OrcaSlicer 的概念示例(具体命令可能因切片器、其依赖项和当前 Alpine 软件包而异):
# ... other Dockerfile commands ...
# Example: Install PrusaSlicer or OrcaSlicer (adjust command as needed)
# Check Alpine package repositories first (e.g., apk add prusaslicer or apk add orcaslicer)
# If not available, download and install manually (e.g., AppImage):
# RUN apk add --no-cache fuse # FUSE might be needed for AppImages
# RUN wget https://example.com/path/to/OrcaSlicer_Linux_Vxxxx.AppImage -O /usr/local/bin/orcaslicer && \
# chmod +x /usr/local/bin/orcaslicer
# Set the SLICER_PATH env var accordingly in docker-compose.yml or when running
# Example for installed executable:
ENV SLICER_PATH=/usr/local/bin/orcaslicer
# ... rest of Dockerfile ...修改Dockerfile后,重建镜像( docker-compose build )。您还需要确保.env文件或docker-compose.yml中的SLICER_PATH环境变量指向容器内的正确路径(例如, /usr/local/bin/orcaslicer )。并将SLICER_TYPE设置为orcaslicer 。
抱歉,没有包含某个特定的切片器,但考虑到切片器种类繁多(PrusaSlicer、OrcaSlicer、Cura 等),以及可用的配置,预装一个切片器会给许多用户带来不必要的镜像臃肿。如果某个切片器的需求变得非常普遍,我肯定会考虑在未来的版本中添加对它的官方支持。
配置
在运行服务器或设置环境变量的目录中创建一个.env文件:
# Required for authentication with your printer management system
API_KEY=your_api_key_here
# Default printer connection settings
PRINTER_HOST=localhost
PRINTER_PORT=80 # Port for non-Bambu HTTP APIs
PRINTER_TYPE=octoprint # Options: octoprint, klipper, duet, repetier, bambu, prusa, creality
# Optional: Directory for temporary files
TEMP_DIR=/path/to/temp/dir
# Bambu Labs specific configuration
BAMBU_SERIAL=your_printer_serial # REQUIRED for Bambu
BAMBU_TOKEN=your_access_token # REQUIRED for Bambu
# Slicer configuration (for slice_stl tool)
SLICER_TYPE=prusaslicer # Options: prusaslicer, cura, slic3r, orcaslicer
SLICER_PATH=/path/to/slicer/executable
SLICER_PROFILE=/path/to/slicer/profile
# Optional: Path to Bambu Studio user config dir (for loading presets)
# Example macOS: /Users/your_user/Library/Application Support/BambuStudio/user/YOUR_USER_ID
# Example Windows: C:\Users\your_user\AppData\Roaming\BambuStudio\user\YOUR_USER_ID
# Example Linux: /home/your_user/.config/BambuStudio/user/YOUR_USER_ID
BAMBU_STUDIO_CONFIG_PATH=与 Claude Desktop 一起使用
编辑您的 Claude Desktop 配置文件:
{
"mcpServers": {
"3dprint": {
"command": "mcp-3d-printer-server",
"env": {
"API_KEY": "your_api_key_here",
"PRINTER_HOST": "your_printer_ip",
"PRINTER_TYPE": "octoprint"
}
}
}
}对于 Bambu Labs 打印机:
{
"mcpServers": {
"3dprint": {
"command": "mcp-3d-printer-server",
"env": {
"PRINTER_HOST": "your_printer_ip",
"PRINTER_TYPE": "bambu",
"BAMBU_SERIAL": "your_printer_serial",
"BAMBU_TOKEN": "your_access_token"
}
}
}
}重启Claude桌面
通过 Claude 连接到您的打印机
支持的打印机管理系统
OctoPrint
OctoPrint 是一款流行的 3D 打印机 Web 界面。它提供了用于控制打印机的 REST API。
默认端口:80(http)或 443(https)
身份验证:需要 API 密钥
Klipper(来自 Moonraker)
Klipper 是与 Moonraker API 服务器配合使用的 3D 打印机固件。
默认端口:7125
身份验证:取决于你的 Moonraker 配置
二重唱
Duet 是一款用于 3D 打印机的控制板,具有自己的 Web 界面(DuetWebControl)。
默认端口:80(http)或 443(https)
身份验证:取决于您的 Duet 配置
雷佩蒂尔
Repetier-Server是一款3D打印机的主机软件。
默认端口:3344
身份验证:需要 API 密钥
Bambu实验室
Bambu Lab 打印机使用 MQTT 进行状态和控制,使用 FTP 进行文件操作。
身份验证:需要序列号和访问令牌(设置
BAMBU_SERIAL和BAMBU_TOKEN)要求:打印机必须在同一网络上或启用云连接
兼容:X1C、P1S、P1P、A1 和其他 Bambu Lab 打印机
查找 Bambu 打印机的序列号和访问令牌
要连接到 Bambu Lab 打印机,您需要两样东西:
打印机序列号:
查看打印机背面或底部的标签,上面有序列号(通常以“01P”或“01A”开头,后跟数字/字母)
或者,打开 Bambu Studio,连接到您的打印机,转到设备 > 设备管理,然后查看打印机的信息
访问令牌:
访问令牌是直接连接到打印机所需的安全代码
对于 P1 系列打印机:转到触摸屏,选择“设置”>“网络”>“LAN 模式”,您将看到访问代码
对于 X1 系列打印机:转到触摸屏,选择“设置”>“网络”>“LAN 模式”,然后启用 LAN 模式以查看访问代码
对于 A1 Mini:使用 Bambu Handy 应用程序连接到打印机,然后转到设置 > 网络 > LAN 模式
注意:如果您的打印机不在同一个本地网络上或者您找不到访问令牌,则可能需要将打印机的固件更新到最新版本以启用 LAN 模式。
Bambu 通信说明 (MQTT & FTP)
**MQTT:**此服务器使用基于社区发现(例如, OpenBambuAPI )的本地 MQTT 协议(端口 8883,TLS)来发送诸如开始打印和取消作业之类的命令。
**FTP:**文件列表和上传目前依赖于打印机上运行的 FTP 服务器(通过
bambu-js库助手)。注意:由于当前库的限制,此 FTP 连接可能不安全(纯 FTP) 。使用时请注意网络安全。
Prusa Connect
Prusa Connect 是 Prusa 自己的基于云的打印机管理解决方案。
默认端口:80(http)或 443(https)
身份验证:需要 API 密钥
兼容:Prusa MK4、Prusa Mini、Prusa XL 和其他带有 Prusa Connect 的 Prusa 打印机
设置 Prusa Connect
确保您的 Prusa 打印机已更新至最新固件
将打印机连接到 Wi-Fi 网络
创建 Prusa Connect 帐户并注册您的打印机
从 Prusa Connect Web 界面的“设置”>“API 访问”下生成 API 密钥
创想云
Creality Cloud 是 Creality 针对其打印机的管理系统。
默认端口:80(http)或 443(https)
身份验证:需要 Bearer 令牌
兼容:Ender系列、CR系列以及其他具有网络功能的Creality打印机
设置Creality Cloud
在您的移动设备上安装 Creality Cloud 应用程序
创建帐户并添加您的打印机
为您的打印机启用本地网络访问
在 Creality Cloud 应用的“设置”>“开发者选项”下生成令牌
可用工具
STL操作工具
内存使用警告:以下 STL 操作工具会将整个 3D 模型加载到内存中。对于大型或复杂的 STL 文件(>10MB),这些操作可能会消耗大量内存。在 MCP 环境中使用这些工具时,请注意内存限制。
获取stl信息
获取有关 STL 文件的详细信息,包括尺寸、顶点数和边界框。
{
"stl_path": "/path/to/file.stl"
}扩展_stl_base
将 STL 文件的基础扩展指定的量。
{
"stl_path": "/path/to/file.stl",
"extension_inches": 2
}scale_stl
均匀缩放 STL 模型或沿特定轴缩放。
{
"stl_path": "/path/to/file.stl",
"scale_factor": 1.5
}或者对于非均匀缩放:
{
"stl_path": "/path/to/file.stl",
"scale_x": 1.2,
"scale_y": 1.0,
"scale_z": 1.5
}旋转_stl
围绕特定轴(以度为单位)旋转 STL 模型。
{
"stl_path": "/path/to/file.stl",
"rotate_x": 45,
"rotate_y": 0,
"rotate_z": 90
}翻译_stl
沿特定轴(以毫米为单位)移动 STL 模型。
{
"stl_path": "/path/to/file.stl",
"translate_x": 10,
"translate_y": 5,
"translate_z": 0
}合并顶点
合并小于指定公差的顶点。有助于缩小小间隙并略微简化网格。
{
"stl_path": "/path/to/model.stl",
"tolerance": 0.01 // Optional, default = 0.01mm
}中心模型
平移模型,使其边界框的中心位于世界原点 (0,0,0)。
{
"stl_path": "/path/to/model.stl"
}平放
尝试找出模型最大的平面(即尚未正对上方或下方的平面),并旋转模型,使该面在 XY 平面(Z=0)上朝下。这有助于确定打印模型的方向。
{
"stl_path": "/path/to/model.stl"
}修改_stl_部分
对 STL 文件的选定部分应用特定转换。这允许对模型的特定部分进行详细修改。
{
"stl_path": "/path/to/file.stl",
"section": "top",
"transformation_type": "scale",
"value_x": 1.5,
"value_y": 1.5,
"value_z": 1.5
}对于自定义部分边界:
{
"stl_path": "/path/to/file.stl",
"section": "custom",
"transformation_type": "rotate",
"value_x": 0,
"value_y": 0,
"value_z": 45,
"custom_min_x": -10,
"custom_min_y": 0,
"custom_min_z": -10,
"custom_max_x": 10,
"custom_max_y": 20,
"custom_max_z": 10
}生成_stl_可视化
从多个角度(正面、侧面、顶部和等距视图)生成 STL 文件的 SVG 可视化。
{
"stl_path": "/path/to/file.stl",
"width": 400,
"height": 400
}切片_stl
切片 STL 文件以生成 G 代码。
{
"stl_path": "/path/to/file.stl",
"slicer_type": "prusaslicer",
"slicer_path": "/path/to/prusaslicer",
"slicer_profile": "/path/to/profile.ini"
}确认温度
确认 G 代码文件中的温度设置。
{
"gcode_path": "/path/to/file.gcode",
"extruder_temp": 200,
"bed_temp": 60
}处理和打印_stl
处理 STL 文件(扩展基础)、对其进行切片、确认温度并开始打印。
{
"stl_path": "/path/to/file.stl",
"extension_inches": 2,
"extruder_temp": 200,
"bed_temp": 60,
"host": "192.168.1.100",
"type": "octoprint",
"api_key": "YOUR_API_KEY"
}**注意:**自动定位以实现最佳打印(最小化支撑等)是一项复杂的任务,通常由切片器 GUI(如 OrcaSlicer 或 PrusaSlicer)处理,并且未在此服务器中实现。
打印机控制工具
获取打印机状态
获取 3D 打印机的当前状态。
{
"host": "192.168.1.100",
"type": "octoprint",
"api_key": "YOUR_API_KEY"
}对于 Bambu 打印机,目前这仅确认 MQTT 连接。
列出打印机文件
列出打印机上可用的文件。
{
"host": "192.168.1.100",
"type": "octoprint",
"api_key": "YOUR_API_KEY"
}对于 Bambu 打印机,通过 FTP 列出gcodes目录中的文件。
上传代码
将 G 代码文件上传到打印机。
{
"host": "192.168.1.100",
"type": "octoprint",
"api_key": "YOUR_API_KEY",
"filename": "my_print.gcode",
"gcode": "G28\nG1 X100 Y100 Z10 F3000\n...",
"print": true
}对于 Bambu 打印机,通过 FTP 上传到gcodes目录。无法自动开始打印。
开始打印
开始打印打印机上已有的文件。
{
"host": "192.168.1.100",
"type": "octoprint",
"api_key": "YOUR_API_KEY",
"filename": "my_print.gcode"
}**不推荐用于 Bambu 打印机。**请使用print_3mf打印 Bambu .3mf文件。
取消打印
取消当前打印作业。
{
"host": "192.168.1.100",
"type": "octoprint",
"api_key": "YOUR_API_KEY"
}对于 Bambu 打印机,通过 MQTT 发送stop_print命令。
设置打印机温度
设置打印机组件的温度。
{
"host": "192.168.1.100",
"type": "octoprint",
"api_key": "YOUR_API_KEY",
"component": "extruder",
"temperature": 200
}不支持通过直接 MQTT 命令使用 Bambu 打印机。
Bambu 专用工具
打印_3mf
通过 FTP 将.3mf文件上传到 Bambu 打印机,并通过 MQTT 命令启动打印作业。允许覆盖部分打印参数,例如 AMS 映射。
{
"three_mf_path": "/path/to/your_model.3mf",
"host": "your_bambu_ip", // Optional if default is set
"bambu_serial": "YOUR_SERIAL", // Optional if default is set
"bambu_token": "YOUR_TOKEN", // Optional if default is set
// Optional Overrides:
"use_ams": true, // Default: true
"ams_mapping": [0, 1, 2, 3], // Array of AMS slot indices to use
"bed_leveling": true, // Default: true
"flow_calibration": false, // Default: false
"vibration_calibration": false, // Default: false
"timelapse": false // Default: false
}**注意:**打印机的 MQTT 命令不支持通过此工具覆盖切片器设置(例如层高或温度)。请在生成.3mf文件之前应用这些更改。
可用资源
打印机资源
printer://{host}/status- 3D 打印机的当前状态(目前仅限于 Bambu)printer://{host}/files- 3D 打印机上可用文件的列表(Bambu 的 FTP)printer://{host}/file/{filename}- 特定 G 代码文件的内容(仅检查 Bambu 是否存在)
Bambu 预设资源
如果BAMBU_STUDIO_CONFIG_PATH环境变量设置为您的 Bambu Studio 用户设置目录,您可以读取已保存的预设。
preset://bambu/machine/{preset_name}- 读取机器预设文件(例如,Bambu Lab P1S 0.4 nozzle.json)preset://bambu/filament/{preset_name}- 读取灯丝预设文件(例如,Generic PLA.json)preset://bambu/process/{preset_name}- 读取工艺预设文件(例如,0.20mm Standard @BBL P1S.json)
使用示例: “读取我的 Bambu 工艺预设的内容,名为‘0.16mm Optimal @BBL P1S’”(Claude 将使用preset://bambu/process/0.16mm%20Optimal%20%40BBL%20P1S调用 ReadResource )
Claude 的示例命令
以下是连接 MCP 服务器后可以向 Claude 发出的一些示例命令:
打印机控制
“我的 3D 打印机目前状态如何?”
“显示我的打印机上的文件列表。”
“将此 G 代码上传到我的打印机:[G 代码内容]”
“开始打印名为‘benchy.gcode’的文件。”
“取消当前打印作业。”
“将挤出机温度设置为 200°C。”
“将床温设置为 60°C。”
STL 操作和打印
“获取此 STL 文件并将底座延长 2 英寸,然后发送到切片机并在我的打印机中排队。”
“将 model.stl 的底部延长 1.5 英寸。”
“将此 STL 文件均匀缩放 150%。”
“将 model.stl 的宽度缩放至原来的两倍,但高度保持不变。”
“将此模型绕 Z 轴旋转 90 度。”
“将此 STL 模型向上移动 5 毫米,以在下方形成间隙。”
“你能只修改这个模型的顶部,使其增大 20% 吗?”
“分析这个 STL 文件并告诉我它的尺寸和细节。”
“生成此 STL 文件的可视化效果,以便我可以看到它的样子。”
“从不同角度创建我的模型的 SVG 可视化。”
“在不改变该模型高度的情况下,将其底座加宽。”
“使用 PrusaSlicer 对修改后的 STL 文件进行切片。”
“确认 G 代码中的挤出机温度为 200°C,床面温度为 60°C。”
“处理这个 STL 文件,将底座加长 2 英寸,切片,然后开始打印,但首先确认温度。”
“在 Bambu 打印机上打印
~/Downloads/my_model.3mf。”“使用 AMS 插槽 0 和 2 将
~/Desktop/calibration_cube.3mf上传到 Bambu 打印机,然后关闭床面调平。”“取消我的 Bambu P1S 上的打印作业。”
“我的 Bambu 灯丝预设‘通用 PETG’中的设置是什么?”
“向我展示我的 Bambu 流程预设。”
Bambu Lab 打印机的局限性
由于 Bambu Lab 打印机 API 的性质,存在一些限制:
开始打印:开始打印需要 3MF 项目文件路径、gcode 文件名、打印名称和 MD5 哈希值。此服务器中的简化 API 尚未完全支持此功能。
温度控制:Bambu API 不提供直接设置温度的方法。这需要自定义 G 代码命令。
文件管理:必须将文件上传到打印机上的“gcodes”目录。
**FTP 安全性:**文件操作当前使用打印机的 FTP 服务器,该服务器可能不安全(普通 FTP)。
**参数覆盖:**只有 MQTT
project_file命令支持的参数可以通过print_3mf工具覆盖(例如 AMS 使用情况、校准标志)。切片机的设置(例如层高或温度)无法在打印时通过此命令更改。**状态更新:**通过 MQTT 进行完整的实时状态监控需要进一步实施。
限制和注意事项
内存使用情况
大型 STL 文件:处理大型或复杂的 STL 文件会消耗大量内存。在操作过程中,整个 STL 几何体都会加载到内存中。
多个操作:如果垃圾收集跟不上,按顺序运行多个 STL 操作(尤其是在大文件上)可能会导致内存累积。
MCP 环境:由于本程序以 MCP 服务器形式运行,请注意 Claude 的 MCP 环境存在内存限制。对大型 STL 文件进行复杂操作可能会导致内存不足的问题。
STL 操作限制
截面修改:特定截面的修改功能最适合用于较简单的几何体。复杂或非流形网格可能会产生意外结果。
底部延伸:底部延伸算法的工作原理是在模型底部添加新的几何体。对于底部复杂的模型,结果可能并不完美。
错误处理:虽然我们添加了强大的错误处理功能,但复杂 STL 文件中的一些边缘情况仍然可能导致问题。
可视化限制
SVG 表示:SVG 可视化是一种简化的示意图,而不是真正的 3D 渲染。
复杂模型:对于非常复杂的模型,可视化可能无法准确地表示所有细节。
性能考虑
切片操作:外部切片器进程可能占用大量 CPU 资源,并且对于复杂模型可能需要花费相当长的时间。
进度报告:对于大型文件,进度更新可能会在某些处理阶段出现停滞。
测试建议
从较小的 STL 文件(<10MB)开始测试功能
处理大文件时监控内存使用情况
在尝试修改复杂几何体之前,先测试简单几何体的修改
对于较大的操作,请考虑在具有至少 4GB 可用 RAM 的系统上运行
徽章
徽章 | 描述 |
npm 上软件包的当前版本 | |
该项目采用 GPL-2.0 许可 | |
该项目使用 TypeScript 4.9+ 编写 | |
该项目正在积极维护 | |
我们欢迎通过 Pull 请求做出贡献 | |
需要 Node.js 18.0.0 或更高版本 | |
npm 每月下载次数 | |
该项目已收到的 GitHub 星标数量 |
执照
GPL-2.0
Available Tools
30 toolsblender_mcp_callA
Call a discovered tool on the configured Blender MCP server, preserving its full MCP content and errors. Discover tool schemas with blender_mcp_status first; execute_blender_code accepts Python code and user_prompt. Calls can modify the active Blender scene and are never automatically retried.
| Name | Required | Description | Default |
|---|---|---|---|
| arguments | No | Arguments matching the remote tool's discovered input schema. Preserve the user's own words in user_prompt when the remote tool requests it. | |
| tool_name | Yes | Exact name advertised by Blender MCP, such as get_scene_info or execute_blender_code. | |
| timeout_ms | No | Total connection, discovery, and tool deadline in milliseconds; defaults to BLENDER_MCP_TIMEOUT_MS or 120000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers the key traits: 'Calls can modify the active Blender scene and are never automatically retried.' That mutation warning and no-retry disclosure are exactly the safety context an agent needs. It omits auth/permission or concurrency details, so not a full 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?
Three sentences, front-loaded with the core action and the discovery prerequisite. Each sentence carries information, though the mid-sentence mention of execute_blender_code's parameters is slightly tangential to the tool's own purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description compensates by stating it preserves 'its full MCP content and errors.' Combined with the mutation and no-retry disclosures and a documented timeout default, an agent has enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents tool_name, arguments, and timeout_ms. The description only lightly augments this, noting that execute_blender_code accepts Python code and user_prompt. Baseline 3 is appropriate since the schema does the heavy lifting.
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: 'Call a discovered tool on the configured Blender MCP server.' It names the sibling it depends on (blender_mcp_status) and clarifies the proxy nature of the tool, distinguishing it from the actual Blender tools it dispatches to.
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 a clear prerequisite flow: 'Discover tool schemas with blender_mcp_status first,' and names a concrete example (execute_blender_code). It does not, however, explain when to prefer this over blender_mcp_edit_model, leaving one sibling relationship implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_mcp_edit_modelA
Import, edit, and export a local STL through standard Blender MCP with verified output and existing scene objects preserved. Requires a shared local filesystem and Blender Object Mode. Also supports a separately configured legacy executable bridge.
| Name | Required | Description | Default |
|---|---|---|---|
| execute | No | Apply edits and export (true) or validate and return the prepared request without connecting (false, default). | |
| stl_path | Yes | Path to the local STL file | |
| operations | Yes | Ordered operations: decimate:<ratio greater than 0 and at most 1>, remesh:<positive voxel size in STL units>, boolean_union:<STL path>. Legacy custom bridges define their own operations. | |
| timeout_ms | No | Total Blender request deadline in milliseconds; defaults to BLENDER_MCP_TIMEOUT_MS or 120000. | |
| output_path | No | New local STL output path for standard MCP editing; defaults to a unique model-edited-<id>.stl beside the input. Its parent must exist and existing files are never overwritten. Reuse the preview's output_path when executing that plan. | |
| user_prompt | No | The user's own words describing the edit, passed unchanged to Blender MCP. | |
| bridge_command | No | Legacy custom bridge executable override, not a standard MCP command. Per-call overrides require MCP_ALLOW_EXECUTABLE_ARG=1. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it delivers real behavioral claims: output is verified, existing scene objects are preserved, and a shared filesystem plus Object Mode are required. It stops short of stating reversibility or permission/auth implications, but the preservation and requirement disclosures are substantive beyond anything structured data provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, front-loaded with the core action and pipeline before the requirements and the optional bridge. Every clause (verified output, scene preservation, prerequisites, legacy bridge) carries distinct 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 complex 7-parameter mutation tool with no output schema, the description covers purpose, prerequisites, side-effect profile, and the alternate bridge path. It does not clarify the difference between standard and bridge execution or what 'verified output' concretely means, which is a modest remaining 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 100%, so the schema already documents all seven parameters in detail (execute, output_path defaults, timeout, operations syntax). The description adds only the bridge concept, so the baseline 3 for schema-dominant definitions is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific three-part verb (import, edit, export) on a concrete resource (a local STL) through a named mechanism (standard Blender MCP). An agent can separate it from blender_mcp_export_stl (export only) and blender_mcp_call (generic) without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Prerequisites are stated (shared local filesystem, Blender Object Mode) and the legacy-bridge path is flagged, which is useful context. However, it never states when to prefer this tool over siblings like blender_mcp_call or blender_mcp_export_stl, or when the bridge path applies, so usage remains implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_mcp_export_stlA
Export named objects from the live Blender scene to a new, verified STL for slicing. Writes world-space geometry with modifiers applied, without changing the scene, selection, or mode, and reports triangle count and bounding-box dimensions from the written file. Use this after editing or modelling through blender_mcp_call; Blender MCP's own export_scene writes GLB/FBX only. Requires standard Blender MCP and a shared local filesystem.
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | Multiply coordinates before writing (default 1). Slicers read STL units as millimetres, so use 1000 for a scene modelled in metres. | |
| timeout_ms | No | Total Blender request deadline in milliseconds; defaults to BLENDER_MCP_TIMEOUT_MS or 120000. | |
| output_path | Yes | New local .stl path. Its parent must exist; existing files are never overwritten. | |
| user_prompt | No | The user's own words, passed unchanged to Blender MCP. | |
| object_names | Yes | Blender object names to export together as one STL (mesh, curve, surface, metaball, or text objects). | |
| apply_modifiers | No | Export the evaluated geometry with modifiers applied (default true). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: world-space geometry, modifiers applied, no mutation of scene/selection/mode, and a verification step reporting triangle count and bounding-box dimensions from the written file. This is exactly the side-effect profile an agent needs for a write-to-disk tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the action and its guarantees, followed by usage routing and prerequisites. No filler and nothing that repeats structured fields verbatim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the absence of an output schema, the description states what the caller gets back (triangle count and bounding-box dimensions) and covers prerequisites and non-destructive behaviour. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented, including the mm-vs-metres scale rationale and the no-overwrite rule for output_path. The description adds no parameter meaning beyond that, which is the expected baseline 3 when the schema does the heavy lifting.
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 ('export named objects from the live Blender scene to a new, verified STL') and explicitly distinguishes itself from the sibling export path by noting that Blender MCP's own export_scene writes GLB/FBX only. An agent can select it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('use this after editing or modelling through blender_mcp_call') and names the alternative that does not do this job. Prerequisites (standard Blender MCP, shared local filesystem) are also stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_mcp_statusA
Inspect Blender MCP configuration or connect and discover the remote server's tools. Lists tool names and summaries; pass tool_names for the full input schemas of the tools you will call. Connecting does not edit the scene; use get_scene_info through blender_mcp_call to check the Blender addon.
| Name | Required | Description | Default |
|---|---|---|---|
| connect | No | Initialize the configured stdio MCP server and discover its tools (default false). | |
| timeout_ms | No | Total connection and discovery deadline in milliseconds; defaults to BLENDER_MCP_TIMEOUT_MS or 120000. | |
| tool_names | No | Return full input schemas for these discovered tools, such as ["execute_blender_code"]. | |
| include_schemas | No | Return every discovered tool's full definition (large; default false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does reasonably well: it states 'Connecting does not edit the scene' (a safety-relevant clarification), warns that include_schemas is large, and the schema documents the timeout default. It does not cover auth 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core capability, then the tool_names behavior, then the safety note and sibling pointer. Little waste, though the parenthetical 'large' warning and the closing routing note slightly crowd the structure.
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-param, no-output-schema, no-annotation discovery tool, the description covers both operating modes, the schema-fetching path, the large-payload warning, and the correct sibling for scene checks. Only deeper behavioral detail (error handling, discovery limits) is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents connect, timeout_ms, tool_names, and include_schemas with defaults and bounds. The description adds the intent behind tool_names ('the tools you will call') but no syntax or format detail beyond the schema, matching the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (Blender MCP configuration / remote server tools) and the two distinct actions: inspect config or connect and discover tools. It is clearly distinguishable from blender_mcp_call, but the dual-mode framing (inspect vs. connect) makes the primary purpose slightly less crisp than a single-verb statement.
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 concrete usage direction: 'pass tool_names for the full input schemas of the tools you will call' and 'use get_scene_info through blender_mcp_call to check the Blender addon,' routing the agent to a sibling for scene verification. Absent is explicit when-not-to-use guidance, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_printC
Cancel the current print job
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP address of the printer (default: value from env) | |
| port | No | Port of the printer API (default: value from env) | |
| type | No | Type of printer management system (octoprint, klipper, duet, repetier, bambu, prusa, creality) (default: value from env) | |
| api_key | No | API key for authentication (default: value from env) | |
| bambu_token | No | Access token for Bambu Lab printers (default: value from env) | |
| bambu_serial | No | Serial number for Bambu Lab printers (default: value from env) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It does not state that cancellation is destructive and non-resumable, whether it aborts an in-progress print or just clears the queue, or what authentication/permissions are required.
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 zero filler. It is efficient, though its brevity is partly under-specification rather than disciplined economy.
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 destructive mutation tool with no annotations, no output schema, and six connection parameters silently defaulting from environment variables, the description is too thin. It should at minimum say the cancel is irreversible and note that host/type/api_key default from env.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all six parameters are optional with env fallbacks, so the schema already documents everything. The description adds no parameter-level meaning beyond that, which warrants the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Cancel) and resource (the current print job), which is enough to distinguish it from siblings like start_print or process_and_print_stl. It does not explicitly call out cross-printer scope, but the core action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no reference to alternatives such as get_printer_status to confirm an active job before cancelling. The agent must infer all of this from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
center_modelB
Translate the model so its geometric center is at the origin (0,0,0).
| Name | Required | Description | Default |
|---|---|---|---|
| stl_path | Yes | Path to the STL file to center. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It says the tool translates the model, but does not state whether it modifies the file in place, returns a new file, requires write permissions, or what side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that specifies the operation and the target result with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool, the description adequately conveys the core action. However, without annotations or an output schema, it leaves open important behavioral details such as whether the original STL is modified or a new file is produced.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single stl_path parameter is fully documented in the schema. The description adds no parameter-level meaning beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Translate') and states the exact geometric outcome: centering the model at the origin (0,0,0). It is clear what the tool does, though it does not explicitly differentiate itself from the sibling translate_stl tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives such as translate_stl, nor any prerequisites or exclusions. Usage is only implied by the outcome described.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_fulu_orca_setupC
Inspect a FULU OrcaSlicer-bambulab install, platform runtime payload, setup commands, and optionally probe the BambuNetwork bridge.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | No | Platform to inspect. Defaults to the current Node.js platform. | |
| plugin_dir | No | Directory containing the FULU Bambu runtime payload; on macOS this is usually OrcaSlicer.app/Contents/MacOS. When run_bridge_probe=true, requires MCP_ALLOW_EXECUTABLE_ARG=1 to be accepted here. | |
| runtime_dir | No | Installed runtime directory. On macOS this defaults to ~/Library/Application Support/OrcaSlicer/macos-bridge/runtime. When run_bridge_probe=true, requires MCP_ALLOW_EXECUTABLE_ARG=1 to be accepted here. | |
| slicer_path | No | Path to the FULU OrcaSlicer executable. Defaults from SLICER_PATH/FULU_ORCA_PATH. When run_bridge_probe=true, requires MCP_ALLOW_EXECUTABLE_ARG=1 to be accepted here. | |
| bridge_command | No | Command that starts the FULU BambuNetwork bridge host for probing. Read from FULU_BAMBU_BRIDGE_COMMAND by default; requires MCP_ALLOW_EXECUTABLE_ARG=1 to be accepted here. | |
| probe_timeout_ms | No | Bridge probe timeout in milliseconds (default: 5000). | |
| run_bridge_probe | No | When true, sends bridge.handshake, bridge.capabilities, and bridge.runtime_info to the bridge host. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden, and it does not disclose that run_bridge_probe spawns a bridge host process, that bridge_command is an executable that will be launched, or that some inputs are gated behind MCP_ALLOW_EXECUTABLE_ARG=1 (that constraint appears only in the schema). It also says nothing about side effects or environment 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?
A single dense sentence that front-loads the inspection targets and appends the optional probe last. No filler, though the packing of five distinct concerns into one clause makes it slightly harder to scan.
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 7-parameter diagnostic tool with no annotations and no output schema, the description should convey what the inspection returns and what the optional probe yields, but it stops at naming the targets. An agent cannot predict the shape or content of the result, leaving a significant 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 100%, so all seven parameters (including the enum platform and the executable-gated paths) are already fully documented in the schema, setting the baseline at 3. The description adds no parameter-level meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb (inspect) and specific resources (FULU OrcaSlicer-bambulab install, runtime payload, setup commands, BambuNetwork bridge), so an agent knows this is a diagnostic/inspection tool. It does not explicitly distinguish itself from the related sibling fulu_bambu_network_rpc, which is the only differentiation gap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use or when-not-to-use guidance and names no alternatives. The only usage signal is the word 'optionally probe', which hints at a conditional mode but never says when an agent should enable it versus run a plain inspection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confirm_temperaturesA
Report every heater target in a G-code file (S and R forms, tool-addressed, RepRapFirmware G10/M568 and Klipper SET_HEATER_TEMPERATURE). An expected temperature matches only when it equals the file's highest target. Read-only; printing tools enforce their own safety gate.
| Name | Required | Description | Default |
|---|---|---|---|
| bed_temp | No | Expected highest bed target | |
| gcode_path | Yes | Path to the G-code file | |
| extruder_temp | No | Expected highest nozzle target |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does disclose the key trait: it is read-only and does not itself gate printing, since printing tools enforce their own safety. It also defines the match rule (equality with the file's highest target). It does not say what is returned or what happens when a temperature fails to match, which matters for a verification tool with 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the verb and resource, with no filler. The parenthetical enumeration of G-code forms is dense but each item is load-bearing for correct parsing expectations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers input semantics and scope well, but with no output schema and no return-value description, an agent cannot know whether a mismatch is reported as a boolean, an error, or a list of differing targets. For a confirmation/verification tool that gap is material.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning beyond the schema: it explains that bed_temp/extruder_temp match only when equal to the file's highest target, which is a non-obvious semantic the bare 'Expected highest bed target' wording does not convey. It also clarifies that targets are gathered from multiple G-code dialects, explaining why a single expected value is compared against many reported targets.
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 (report) and resource (every heater target in a G-code file), and enumerates the exact G-code forms covered (S/R, tool-addressed, RepRapFirmware G10/M568, Klipper SET_HEATER_TEMPERATURE). This clearly separates it from siblings like set_printer_temperature (which mutates) and get_printer_status (which reads live state, not a file).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a pre-flight verification use case and notes that 'printing tools enforce their own safety gate,' which frames when this check belongs in a workflow. However, it never explicitly says when to use this versus get_printer_status or set_printer_temperature, nor what to do on a mismatch, leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extend_stl_baseC
Extend the base of an STL file by a specified amount
| Name | Required | Description | Default |
|---|---|---|---|
| stl_path | Yes | Path to the STL file to modify | |
| extension_inches | Yes | Amount to extend the base in inches |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden for a mutation tool. It does not say whether the file is modified in place or a new file is written, whether the original is overwritten, what happens on failure, or what the response contains — all important for a destructive file edit.
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, efficient sentence with the action and target front-loaded and zero wasted words. It is perhaps too terse given what is left unsaid, but nothing in it 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?
For a 2-parameter file-mutating tool with no annotations and no output schema, the description omits the essentials: in-place vs. new-file behavior, return value, and error conditions. An agent could call it but cannot predict the side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: stl_path ("Path to the STL file to modify") and extension_inches ("Amount to extend the base in inches") are both self-documenting, including units. The description's "by a specified amount" adds nothing beyond the schema, so the baseline 3 applies.
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 gives a specific verb ("Extend") and a specific target region ("the base of an STL file"), which is clearer than the generic sibling names like modify_stl_section or translate_stl. However, it does nothing to distinguish itself from related STL-geometry siblings (scale_stl, rotate_stl, center_model, lay_flat), so an agent must infer the boundary on its own.
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 indication of when to use this rather than scale_stl, translate_stl, or modify_stl_section, no prerequisites (e.g., does the model need a flat base?), and no exclusions. The agent is left to guess how this differs from other geometry-editing tools in the list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fulu_bambu_network_rpcA
Advanced FULU bridge RPC for BambuNetwork diagnostics and development. Read-only methods are allowed by default. Agent/session setup methods require allow_mutating_method=true. Raw print methods, printer messages, file transfers and unknown methods are refused because they would bypass the print safety gate; use print_3mf for checked printing.
| Name | Required | Description | Default |
|---|---|---|---|
| method | Yes | FULU bridge method, e.g. bridge.handshake, bridge.runtime_info, net.get_user_print_info, net.start_print. | |
| payload | No | JSON payload sent to the FULU bridge method. | |
| timeout_ms | No | Bridge request timeout in milliseconds (default: 5000). | |
| bambu_model | No | Informational only. Raw FULU print RPC methods are disabled; use print_3mf. | |
| bridge_command | No | Command that starts the FULU BambuNetwork bridge host. Defaults to FULU_BAMBU_BRIDGE_COMMAND; requires MCP_ALLOW_EXECUTABLE_ARG=1 to be accepted here. | |
| allow_mutating_method | No | Required for the allowlisted agent/session setup methods. It never enables print, printer-message, or unknown methods. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the default read-only posture, the mutating-method opt-in flag, the refusal class, and the reason (bypassing the print safety gate). It omits return/error behavior and timeout implications, but the safety semantics are unusually well communicated.
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 sentences, front-loaded with what the tool is, then the gating rules, then the refusal and alternative. Every sentence carries information; no filler or repeated schema 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 6-parameter passthrough with a free-form payload and no output schema, the description covers the safety model well but does not describe what an RPC call returns, how failures surface, or how to choose among the many allowed bridge methods beyond the schema's examples. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents method, payload, timeout_ms, bambu_model, bridge_command and allow_mutating_method. The description adds one genuinely useful nuance — that allow_mutating_method never enables print, printer-message or unknown methods — but otherwise restates schema-level guidance, fitting the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (FULU BambuNetwork bridge RPC) used for diagnostics and development, and distinguishes its scope from print-oriented siblings by explicitly excluding raw print methods. The verb is generic (a passthrough RPC), so it is not a perfect verb+resource pair, but an agent can tell it apart from print_3mf and check_fulu_orca_setup.
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 explicit conditional routing: read-only methods allowed by default, agent/session setup methods require allow_mutating_method=true, and print/message/file-transfer/unknown methods are refused. It also names the correct alternative (print_3mf) for checked printing. It stops short of saying which diagnostic scenarios warrant calling this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_stl_visualizationB
Generate an SVG visualization of an STL file from multiple angles
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | Width of each view in pixels (default: 300) | |
| height | No | Height of each view in pixels (default: 300) | |
| stl_path | Yes | Path to the STL file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the output format (SVG) and that multiple angles are rendered, but says nothing about whether files are written to disk or returned inline, what the angle set is, dependencies (e.g., a rendering library), or performance limits.
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; every clause (generate, SVG, STL file, multiple angles) carries 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 tool with no output schema, the description should say what the caller gets back (returned SVG content vs. written file paths) and roughly which views are rendered. The input side is fully covered by the schema, but the output side of the contract is not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: stl_path, width, and height are all documented in the schema, including defaults. The description adds no parameter meaning 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Generate) and resource (SVG visualization of an STL file) with the scope 'from multiple angles'. It is clearly distinguished from siblings like get_stl_info or blender_mcp_export_stl by the output artifact, though it never names a sibling to route against.
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 use this versus alternatives such as get_stl_info, blender_mcp_export_stl, or slice_stl. The agent must infer the use case (visual inspection) on its own, and no exclusions or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_printer_statusC
Get the current status of the 3D printer
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP address of the printer (default: value from env) | |
| port | No | Port of the printer API (default: value from env) | |
| type | No | Type of printer management system (octoprint, klipper, duet, repetier, bambu, prusa, creality) (default: value from env) | |
| api_key | No | API key for authentication (default: value from env) | |
| bambu_token | No | Access token for Bambu Lab printers (default: value from env) | |
| bambu_serial | No | Serial number for Bambu Lab printers (default: value from env) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden, yet it says nothing about authentication requirements, network behavior, failure modes, or whether it is a safe read operation. It discloses no behavior beyond the bare action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. It is efficient, though its brevity is partly the source of the definition's gaps.
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 six connection parameters, no annotations, and no output schema, the description should explain what status information is returned and any connection/auth expectations. As written it is too thin for the tool's configured surface.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters (host, port, type, api_key, bambu_token, bambu_serial) are already documented, including that they default from env. The description adds no parameter meaning beyond the schema, so the baseline 3 applies.
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 (Get) and resource (current status of the 3D printer), so the action is unambiguous. It does not differentiate from siblings such as list_printer_files or get_slice_settings, which also read printer state.
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 mention of alternatives, and no prerequisites (e.g. needing a configured host or API key). Usage is only implied by the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_slice_settingsA
Inspect slicer settings in a 3MF template or JSON/config profile without slicing (layer height, infill, walls, supports, brim, bed, printer, filaments).
| Name | Required | Description | Default |
|---|---|---|---|
| source_path | No | Path to a 3MF, extracted project_settings.config, or slicer profile JSON. | |
| template_dir | No | Template directory override when resolving template_name. | |
| template_name | No | Named template from the local registry; used when source_path is omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose that this is a non-mutating inspection ('without slicing') and enumerates the setting categories returned (layer height, infill, walls, supports, brim, bed, printer, filaments), which partially compensates for the missing output schema. It says nothing about permissions, error behavior, or resolution precedence between source_path and template_name.
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 the verb and resource first, followed by an efficient parenthetical field list. No filler, though the parenthetical is long enough that it slightly competes with the core claim.
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 three-parameter, zero-required read tool with no output schema, listing the returned setting categories goes a long way toward filling the return-value gap, and the schema covers source alternatives. The remaining gap is the precedence/interaction between source_path and template_name, which is only documented per-parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters and their source-resolution semantics. The description's mention of '3MF template or JSON/config profile' loosely maps to source_path and template_name but adds no format or precedence detail beyond the schema; baseline 3 applies.
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), a specific resource (slicer settings), and enumerates the source formats and the fields covered. The phrase 'without slicing' implicitly separates it from the sibling slicing tools (slice_stl, slice_with_template), though it never names them, so sibling differentiation is present but not explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without slicing' hints at the use case (read settings before committing to a slice), but there is no explicit when-to-use statement, no when-not-to-use, and no named alternative. Usage must be inferred from the contrast with the slicing siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stl_infoC
Get detailed information about an STL file
| Name | Required | Description | Default |
|---|---|---|---|
| stl_path | Yes | Path to the STL file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Detailed information' is undefined — it does not say whether this returns geometry stats, dimensions, triangle counts, or file metadata, nor whether it is a pure read with no side effects. The safety/behavior profile is left entirely implicit.
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 short sentence with zero padding, front-loaded with the verb. It is efficient, though its brevity is partly the cause of the gaps elsewhere rather than true economy of expression.
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 one fully-documented parameter and no output schema, the description is minimally adequate, but 'detailed information' gives the agent no expectation of the return payload for a tool whose entire value is the response shape. It should at least hint at what fields come back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (the single stl_path parameter is documented as 'Path to the STL file'), so the schema does the heavy lifting. The description adds no format, path-style, or validation detail beyond that, which is the baseline-3 case.
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 ('Get') and resource ('STL file') with the qualifier 'detailed information', so the agent knows this is a metadata/inspection read. However, it does not distinguish itself from neighbors like generate_stl_visualization or slice_stl, which also consume an STL file.
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 use this versus the many other STL-related siblings, nor any prerequisites (e.g., that the file must exist on the server). The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lay_flatB
Attempt to rotate the model so its largest flat face lies on the XY plane (Z=0).
| Name | Required | Description | Default |
|---|---|---|---|
| stl_path | Yes | Path to the STL file to lay flat. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose one genuine behavioral trait: 'attempt' signals this is best-effort and may not succeed. However, it says nothing about whether the STL is modified in place or a new file/geometry is returned, nor about failure behavior, which are the key traits for a mutation-style tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence that states the action and the target geometry with no filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter geometry operation with no output schema and no annotations, the description explains the transformation adequately but leaves the agent unsure about persistence (in-place vs. return value) and failure modes, which matter for calling it correctly in a pipeline with slice_stl/print steps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single stl_path parameter, so the schema already documents it fully. The description adds only the geometric goal, not any additional parameter meaning; baseline 3 applies.
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 gives a specific verb (rotate) plus the exact geometric outcome (largest flat face onto the XY plane at Z=0), which clearly separates it from the generic rotate_stl sibling even though it does not name that sibling. The only gap is the lack of an explicit contrast with rotate_stl/translate_stl/center_model.
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 prefer this over rotate_stl or center_model, no stated prerequisites (e.g., mesh must be watertight or have a detectable flat face), and no note about what happens if no flat face exists. The agent must infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_printer_filesC
List files available on the 3D printer
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP address of the printer (default: value from env) | |
| port | No | Port of the printer API (default: value from env) | |
| type | No | Type of printer management system (octoprint, klipper, duet, repetier, bambu, prusa, creality) (default: value from env) | |
| api_key | No | API key for authentication (default: value from env) | |
| bambu_token | No | Access token for Bambu Lab printers (default: value from env) | |
| bambu_serial | No | Serial number for Bambu Lab printers (default: value from env) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a safe read operation by using 'List,' but does not state authentication requirements, pagination behavior, output format, or any side effects. This is a notable gap for a printer-integration tool with six connection parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero wasted words. It is appropriately sized for the stated purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a listing tool with six optional connection parameters and no output schema, the description should explain what is returned or how the file list is structured. It also omits any mention of default environment configuration or authentication. The schema covers inputs, but the description is incomplete about behavior and results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the input schema. The description adds no parameter meaning beyond what the schema provides, which is the expected baseline when the schema does the heavy lifting.
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: 'List files available on the 3D printer.' It distinguishes the operation from other printer actions, but does not differentiate itself from siblings such as get_printer_status or upload_gcode beyond the obvious file-listing scope.
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 guidance, no mention of prerequisites, and no named alternatives. The phrase 'files available' implies a listing context, but the agent must infer when this tool is appropriate versus other printer-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_templatesA
List saved slicing templates (.3mf, .json, .config) in the local template registry directory.
| Name | Required | Description | Default |
|---|---|---|---|
| template_dir | No | Template directory override. Defaults to BAMBU_TEMPLATE_DIR or ~/Sync/bambu/templates. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the source location and which file extensions are enumerated, which is useful, but says nothing about the return shape (names vs. paths), recursion, ordering, or behavior when the directory is absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and resource, with the parenthetical file types and the directory scope following. Nothing wasted.
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, zero-required-parameter read tool, the description covers what is listed and where. Since there is no output schema, a brief note on the return format would have closed the last gap, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter has 100% schema description coverage, including its default resolution order (BAMBU_TEMPLATE_DIR, then ~/Sync/bambu/templates), so the schema already does the heavy lifting. The description's mention of the "local template registry directory" lightly reinforces that, but adds no syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear specific verb (List) plus resource (saved slicing templates), with the file types (.3mf, .json, .config) and the scope (local template registry directory) spelled out. It is readily distinguishable from the write-oriented siblings save_template and slice_with_template, though it does not name them 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?
Usage is implied by the name and by the presence of save_template/slice_with_template as siblings, but the description states no when-to-use condition, no prerequisite (e.g. registry directory must exist), and no alternative to prefer. Adequate but leaves selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_verticesB
Merge vertices in an STL file that are closer than the specified tolerance.
| Name | Required | Description | Default |
|---|---|---|---|
| stl_path | Yes | Path to the STL file to modify. | |
| tolerance | No | Maximum distance between vertices to merge (in mm, default: 0.01). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies mutation but never states that the file is modified in place, whether the original is preserved, what happens on failure, or how vertices are matched; only the tolerance semantics are conveyed.
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 operation, target, and merge criterion are all stated up front.
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 tool with a fully documented schema and no output schema, the description is close to sufficient. However, as an unannotated mutation tool it should disclose that it rewrites the STL in place and any file-state assumptions, which it does not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (stl_path, tolerance) are already documented with units and default. The description's mention of 'closer than the specified tolerance' reinforces the filtering semantics but adds nothing beyond the schema's baseline.
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 (merge) and resource (vertices in an STL file) with the qualifying condition (closer than the specified tolerance), which is enough to distinguish it from siblings like scale_stl or rotate_stl. It stops short of explicitly contrasting with any sibling, 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 guidance on when to reach for this tool versus alternatives such as modify_stl_section or the blender_mcp_* editing tools, nor any mention of prerequisites like an existing valid STL file. The purpose is implied but selection context is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
modify_stl_sectionC
Apply a specific transformation to a selected section of an STL file
| Name | Required | Description | Default |
|---|---|---|---|
| section | Yes | Section to modify: 'top', 'bottom', 'center', or custom bounds | |
| value_x | No | Transformation value for X axis | |
| value_y | No | Transformation value for Y axis | |
| value_z | No | Transformation value for Z axis | |
| stl_path | Yes | Path to the STL file | |
| custom_max_x | No | Maximum X for custom section bounds | |
| custom_max_y | No | Maximum Y for custom section bounds | |
| custom_max_z | No | Maximum Z for custom section bounds | |
| custom_min_x | No | Minimum X for custom section bounds | |
| custom_min_y | No | Minimum Y for custom section bounds | |
| custom_min_z | No | Minimum Z for custom section bounds | |
| transformation_type | Yes | Type of transformation to apply |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, but it only implies a write operation via 'Apply'. It does not say whether the file is modified in place, whether the original is overwritten, what happens to geometry outside the section, what units or coordinate system apply, or how errors are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It communicates the core action immediately and does not bury the purpose in extra 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?
Given 12 parameters, two enums, no annotations, and no output schema, the description is incomplete. It does not explain how to interpret the transformation values, when custom bounds apply, file-side effects, or expected outcomes, leaving the agent heavily dependent on the schema and trial-and-error.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema documents all parameters including enums for section and transformation_type, axis values, and custom bounds. The description adds no parameter meaning beyond what the schema already provides, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Apply'), a specific resource ('STL file'), and a specific scope ('selected section'), which distinguishes it from whole-file siblings like scale_stl, rotate_stl, and translate_stl. However, it does not explicitly name those alternatives, so it falls short of the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives, when to choose section-based modification versus whole-file transforms, or prerequisites such as valid STL paths or coordinate-system expectations. Usage is only implied by the phrase 'selected section'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
print_3mfA
Print a 3MF file on a Bambu Lab printer. The exact selected plate is inspected (model, nozzle, bed type, materials, every heater target) and checked against a fresh MQTT report of the printer's identity, nozzle, state, errors and loaded filament, then a human confirmation is requested before upload and start.
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP address of the Bambu printer (default: value from env) | |
| use_ams | No | Whether to use AMS for the print. Defaults from parsed 3MF mapping when present. | |
| bed_type | No | Bed/plate type installed on the printer (default: textured_plate). | |
| timelapse | No | Override timelapse flag for the Bambu print command. | |
| ams_mapping | No | Override AMS filament mapping (e.g., {"Generic PLA": 0, "Generic PETG": 1}). | |
| bambu_model | Yes | REQUIRED: Bambu Lab printer model. Ensures correct G-code generation — wrong model can crash the bed into the nozzle. | |
| bambu_token | No | Access token for the Bambu Lab printer (default: value from env) | |
| nozzle_type | No | Installed nozzle material, used when the 3MF must be auto-sliced (default: BAMBU_NOZZLE_TYPE, else the preset's stock nozzle). | |
| slicer_path | No | Path to the slicer executable if auto-slicing is needed. Per-call overrides require MCP_ALLOW_EXECUTABLE_ARG=1. | |
| slicer_type | No | Slicer to use if the 3MF needs auto-slicing. Use orcaslicer-bambulab for FULU OrcaSlicer-bambulab. | |
| bambu_serial | No | Serial number for the Bambu Lab printer (default: value from env) | |
| bed_leveling | No | Override bed leveling flag for the Bambu print command. | |
| layer_height | No | Override layer height (mm). | |
| layer_inspect | No | Override layer inspection flag for the Bambu print command. | |
| three_mf_path | Yes | Path to the 3MF file to print. | |
| slicer_profile | No | Optional slicer settings/profile path for auto-slicing. | |
| bed_temperature | No | Override bed temperature (°C). | |
| nozzle_diameter | No | Nozzle diameter in mm (default: 0.4). | |
| support_enabled | No | Override support generation. | |
| filament_profile | No | Optional filament profile path for auto-slicing with OrcaSlicer/Bambu Studio. | |
| flow_calibration | No | Override flow calibration flag for the Bambu print command. | |
| nozzle_temperature | No | Override nozzle temperature (°C). | |
| vibration_calibration | No | Override vibration calibration flag for the Bambu print command. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the plate inspection, a live MQTT cross-check of printer identity/state/filament, and a mandatory human confirmation step before upload and start. It omits auth requirements, error/failure handling, and whether anything is mutated irreversibly, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with the purpose front-loaded, and no repeated or filler content. The second sentence is long but every clause (inspection targets, MQTT check, human confirmation) earns its place by conveying behavior.
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 23-parameter mutation-style tool with no annotations and no output schema, the description supplies the crucial workflow context a caller cannot infer: validation against live printer state and a human confirmation gate. The many tuning/override parameters are fully covered by 100% schema descriptions, so the remaining gap is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 23 parameters are already documented in the schema and the baseline is 3. The description adds no per-parameter meaning (e.g., override semantics or env defaults) beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Print a 3MF file on a Bambu Lab printer'), which is clearly distinct from generic siblings like upload_gcode and start_print. It does not explicitly name or contrast with the closest sibling, process_and_print_stl, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description sketches the internal workflow (inspect plate, check MQTT report, confirm, upload, start), which implies when the tool is appropriate. However, it never states when to choose this over process_and_print_stl or start_print, nor any exclusions or prerequisites, leaving selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
process_and_print_stlA
Process an STL file (extend base), slice it, and start printing through the same checked print gate as upload_gcode/print_3mf. Expected temperatures are enforced: a mismatch refuses before upload.
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP address of the printer (default: value from env) | |
| port | No | Port of the printer API (default: value from env) | |
| type | No | Type of printer management system (default: value from env) | |
| api_key | No | API key for authentication (default: value from env) | |
| bed_temp | No | Expected highest bed target in the sliced G-code (S and R forms). Printing stops before upload if it differs. | |
| bed_type | No | Bed/plate type installed on the printer (default: textured_plate). | |
| material | No | Declared filament material when the sliced G-code has no filament_type metadata. Must not contradict the file. | |
| stl_path | Yes | Path to the STL file to process | |
| bambu_model | No | Bambu Lab printer model. Required for Bambu print operations. | |
| nozzle_type | No | Installed Bambu nozzle material used when slicing (default: BAMBU_NOZZLE_TYPE, else the preset's stock nozzle). The print gate compares it with the printer's report. | |
| slicer_path | No | Path to the slicer executable (default: value from env). Per-call overrides require MCP_ALLOW_EXECUTABLE_ARG=1. | |
| slicer_type | No | Type of slicer to use. Use orcaslicer-bambulab for FULU OrcaSlicer-bambulab. | |
| extruder_temp | No | Expected highest nozzle target in the sliced G-code (S and R forms, every tool). Printing stops before upload if it differs. | |
| slicer_profile | No | Profile to use for slicing (default: value from env). OrcaSlicer also accepts machine/process profiles separated with ';', optionally followed by '|filament.json'. | |
| nozzle_diameter | No | Nozzle diameter in mm (default: 0.4). | |
| extension_inches | Yes | Amount to extend the base in inches | |
| filament_profile | No | OrcaSlicer filament profile path loaded with --load-filaments (default: FILAMENT_PROFILE/SLICER_FILAMENT_PROFILE env). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the temperature-enforcement gate and that a mismatch refuses before upload, and 'start printing' signals a mutating, possibly irreversible action. However, it omits auth requirements, what happens on slicer failure, or the host/api_key defaulting behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste, with the core action chain front-loaded and the enforcement caveat second. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 17-parameter mutation tool with no annotations and no output schema, the description covers the pipeline and the print gate but says nothing about return values, failure modes beyond temperature mismatch, or the relationship to the several sibling STL-modification tools. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the 17 parameters are already documented in the schema. The description adds only the 'extend base' hint tied to extension_inches and reinforces the temperature-check semantics already in bed_temp/extruder_temp descriptions. Baseline 3 is appropriate when the schema does the heavy lifting.
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 names a specific multi-step operation — extend the STL base, slice, and print — and anchors it against siblings by referencing the same checked print gate used by upload_gcode/print_3mf. An agent can distinguish it from slice_stl or start_print, though the 'extend base' phrasing is terse.
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 pipeline nature implies usage (one call instead of slice_stl followed by start_print) but no explicit when/when-not guidance is given. The reference to the shared print gate hints at why this exists, but the agent must infer the alternative paths.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rotate_stlC
Rotate an STL model around specific axes
| Name | Required | Description | Default |
|---|---|---|---|
| rotate_x | No | Rotation around X-axis in degrees | |
| rotate_y | No | Rotation around Y-axis in degrees | |
| rotate_z | No | Rotation around Z-axis in degrees | |
| stl_path | Yes | Path to the STL file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose whether the rotation mutates the file in place or returns a new model, whether the original is preserved, or whether there are constraints on rotation values. For a mutation tool with zero annotation coverage this is a notable gap.
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 efficient sentence with no wasted words, but it is arguably terse to the point of under-specification rather than optimally structured.
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?
Parameters are fully covered by the schema and no output schema exists, so the description needn't explain returns. However, as a mutation tool with no annotations it should disclose the in-place-vs-new-model behavior, which it omits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter (rotate_x/y/z in degrees, stl_path) is already documented in the schema. The description adds nothing beyond that, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (rotate) and resource (STL model), which distinguishes it from siblings like scale_stl and translate_stl. The phrase 'around specific axes' is somewhat redundant since the schema names the axes, but the core purpose is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus scale_stl, translate_stl, or modify_stl_section, and no prerequisites or context about the STL manipulation workflow. The agent must infer usage 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.
save_templateB
Copy a .3mf, .json, or .config file into the local template registry under a template name.
| Name | Required | Description | Default |
|---|---|---|---|
| source_path | Yes | Local .3mf, .json, or .config file to save as a template. | |
| template_dir | No | Template directory override. Defaults to BAMBU_TEMPLATE_DIR or ~/Sync/bambu/templates. | |
| template_name | No | Template name. Defaults to the source filename without extension. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Copy' usefully implies the source file is preserved rather than moved, but nothing is said about overwriting an existing template name, error behavior for unsupported formats, or permissions — significant gaps for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler; the action, the accepted formats, and the destination registry are all front-loaded. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity, single-required-parameter local file operation with fully documented parameters and no output schema, the description is nearly sufficient. The only missing piece is collision/overwrite semantics for an existing template name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains source_path, template_dir (including the BAMBU_TEMPLATE_DIR default), and template_name (filename-derived default). The description adds no syntax or defaulting detail 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (Copy) and a specific resource (into the local template registry) and names the accepted file types (.3mf, .json, .config). It is clearly distinct from siblings like list_templates or slice_with_template, though it does not explicitly name a sibling to contrast against.
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 mention of prerequisites, and no reference to alternatives such as slice_with_template (which presumably consumes saved templates). The agent must infer that this is the way to persist a template before slicing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scale_stlB
Scale an STL model uniformly or along specific axes
| Name | Required | Description | Default |
|---|---|---|---|
| scale_x | No | X-axis scaling factor (overrides scale_factor for X axis) | |
| scale_y | No | Y-axis scaling factor (overrides scale_factor for Y axis) | |
| scale_z | No | Z-axis scaling factor (overrides scale_factor for Z axis) | |
| stl_path | Yes | Path to the STL file | |
| scale_factor | No | Uniform scaling factor to apply |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and falls short: it does not say whether the STL is scaled in place or written to a new file, whether the original is destroyed, or whether scaling is reversible. For a mutation tool with zero annotation coverage this is a meaningful gap.
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 tightly written sentence with the core operation front-loaded and no filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Parameters are fully covered by the schema and no output schema exists, so return values need not be explained. However, for an unannotated 5-parameter mutation tool, the description should at least clarify output/destination behavior to be complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents scale_factor vs scale_x/y/z and the override behavior. The description's 'uniformly or along specific axes' adds conceptual framing but no syntax, range, or default details beyond the schema. Baseline 3 applies.
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 (Scale) and resource (STL model) plus the two supported modes (uniform or per-axis). It is clearly distinguishable from siblings like rotate_stl and translate_stl, which perform different transforms on the same resource.
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 indication of when to use this versus rotate_stl, translate_stl, or modify_stl_section, and no prerequisites or preconditions mentioned. The uniform-vs-per-axis distinction is really parameter semantics rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_printer_temperatureA
Set the temperature of a printer component. Temperature 0 switches a heater off and is never gated. Positive targets are validated before connecting, limited by independent hardware and material ceilings, require a ready printer and a human confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP address of the printer (default: value from env) | |
| port | No | Port of the printer API (default: value from env) | |
| type | No | Type of printer management system (octoprint, klipper, duet, repetier, bambu, prusa, creality) (default: value from env) | |
| api_key | No | API key for authentication (default: value from env) | |
| material | No | Declared material at the nozzle (for example PLA, PETG, ABS). Required for positive nozzle heating, including non-RFID spools. | |
| component | Yes | Printer component to heat, such as extruder or bed. | |
| bambu_model | No | Bambu printer model; required for positive Bambu heating unless BAMBU_MODEL is configured. Checked against the live printer. | |
| bambu_token | No | Access token for Bambu Lab printers (default: value from env) | |
| temperature | Yes | Target temperature in Celsius: a finite number >= 0. 0 switches the heater off. | |
| bambu_serial | No | Serial number for Bambu Lab printers (default: value from env) | |
| nozzle_diameter | No | Installed Bambu nozzle diameter in mm for nozzle heating (default: NOZZLE_DIAMETER or 0.4). Checked against the live printer. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does substantial work: it discloses pre-connection validation, independent hardware and material ceilings, the ready-printer requirement, and a human-confirmation gate. It stops short of covering auth/permissions behavior, which would be the remaining gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with no filler, and the most important branch (0 = off, ungated) is front-loaded ahead of the positive-target constraints. Efficient and well-ordered.
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 an 11-parameter mutation tool with no annotations and no output schema, the description conveys the key behavioral contract (validation, ceilings, confirmation) that an agent needs. It is nearly complete, missing only auth/permission expectations and explicit sibling routing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all 11 parameters, including that 0 turns the heater off. The description adds gating semantics around temperature values but largely restates what the schema field descriptions already provide, so baseline 3 applies.
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 specific verb and resource ("Set the temperature of a printer component") and even names the component concept. It is clear what the tool does, but it never names the obvious sibling (confirm_temperatures) or otherwise differentiates itself from related temperature tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives real usage conditions – temperature 0 is never gated, positive targets require a ready printer and a human confirmation – which tells the agent when a call will succeed. However, it never names alternatives such as confirm_temperatures or get_printer_status, so routing 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.
slice_stlB
Slice an STL or 3MF file to generate G-code or a sliced 3MF. For Bambu-compatible CLI slicing (bambustudio, orcaslicer-bambulab, or orcaslicer with bambu_model), the exact bambu_model/nozzle machine preset from the selected slicer installation is required, profile inheritance is resolved before the CLI runs, and the result must contain plate G-code. Failures stop with the slicer's exit status and output.
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | Bambu-compatible slicing: uniform scale factor applied before slicing (1.0 = original size). | |
| orient | No | Bambu-compatible slicing: auto-orient for printability (--orient). | |
| rotate | No | Bambu-compatible slicing: Z-axis rotation in degrees before slicing. | |
| arrange | No | Bambu-compatible slicing: auto-arrange objects on the plate (--arrange). Set false to keep an existing layout. | |
| bed_type | No | Bambu-compatible slicing: build plate type (default: BED_TYPE or textured_plate). | |
| min_save | No | Bambu-compatible slicing: write a smaller output 3MF (--min-save). | |
| rotate_x | No | Bambu-compatible slicing: X-axis rotation in degrees before slicing. | |
| rotate_y | No | Bambu-compatible slicing: Y-axis rotation in degrees before slicing. | |
| stl_path | Yes | Path to the STL or 3MF file to slice | |
| uptodate | No | Bambu-compatible slicing: refresh 3MF preset configs to the installed slicer version (--uptodate). | |
| bambu_model | No | Bambu Lab printer model. Required for bambustudio and orcaslicer-bambulab (elicited or read from BAMBU_MODEL when omitted); passing it with orcaslicer selects the Bambu-compatible path. The installed slicer must contain the exact model/nozzle preset. | |
| nozzle_type | No | Bambu-compatible slicing: the hotend nozzle material installed on the printer (default: BAMBU_NOZZLE_TYPE, else the model preset's stock nozzle, usually stainless_steel; X1C/X1E presets use hardened_steel). Printing compares it with the printer's reported nozzle. | |
| repetitions | No | Bambu-compatible slicing: print N identical copies (--repetitions). | |
| slice_plate | No | Bambu-compatible slicing: plate number to slice; 0 slices all plates (default). | |
| slicer_path | No | Path to the slicer executable (default: value from env). Per-call overrides require MCP_ALLOW_EXECUTABLE_ARG=1. | |
| slicer_type | No | Type of slicer to use (prusaslicer, cura, slic3r, orcaslicer, orcaslicer-bambulab, bambustudio). Use orcaslicer-bambulab for the FULU fork. bambustudio and orcaslicer-bambulab (and orcaslicer with bambu_model) export a sliced 3MF. | |
| skip_objects | No | Bambu-compatible slicing: comma-separated object indices to skip, e.g. '3,5,10'. | |
| template_dir | No | Template directory override when resolving template_name (default: BAMBU_TEMPLATE_DIR or ~/Sync/bambu/templates). | |
| clone_objects | No | Bambu-compatible slicing: comma-separated clone counts per object index, e.g. '1,3,1,10'. | |
| ensure_on_bed | No | Bambu-compatible slicing: lower floating models onto the bed (--ensure-on-bed). | |
| template_name | No | Named template from the local registry (see list_templates); resolves to its file. | |
| allow_mix_temp | No | Bambu-compatible slicing: allow filaments with different temperature requirements on one plate. | |
| load_filaments | No | Bambu-compatible slicing: filament profile JSON paths in slot order, ';'-separated. One profile applies to every project slot; otherwise supply one per slot. | |
| slicer_profile | No | Profile to use for slicing (default: SLICER_PROFILE env). Bambu-compatible slicing: one process profile JSON (the machine preset comes from bambu_model). Generic OrcaSlicer: machine/process profiles separated with ';', optionally followed by '|filament.json'. | |
| nozzle_diameter | No | Nozzle diameter in mm (default: NOZZLE_DIAMETER or 0.4). Selects the '<model> <diameter> nozzle' machine preset. | |
| enable_timelapse | No | Bambu-compatible slicing: insert timelapse parking moves (--enable-timelapse). | |
| filament_colours | No | Bambu-compatible slicing: one #RRGGBB per filament slot, ';'-separated. Defaults to the input 3MF's colours, then each profile's colour. | |
| filament_profile | No | Filament profile path(s), ';'-separated in slot order, loaded with --load-filaments (default: FILAMENT_PROFILE/SLICER_FILAMENT_PROFILE env). Alias of load_filaments. | |
| load_filament_ids | No | Bambu-compatible slicing: comma-separated filament IDs mapping load_filaments to objects, e.g. '1,2,3,1'. | |
| template_3mf_path | No | Bambu-compatible slicing: 3MF or profile whose embedded slicer settings are reused as the process profile (default: BAMBU_TEMPLATE_3MF_PATH). An explicit slicer_profile takes precedence. | |
| skip_modified_gcodes | No | Bambu-compatible slicing: ignore custom G-code embedded in an input 3MF (--skip-modified-gcodes). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose meaningful traits: the exact bambu_model/nozzle preset requirement, profile inheritance ordering, the plate-G-code requirement, and that failures surface the slicer's exit status. It omits, however, where output is written, what is returned, and the behavior of the non-Bambu slicing path.
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 purpose sentence is front-loaded and the remaining text is dense but meaningful, covering the Bambu-specific preconditions in two efficient sentences. No filler or repetition of the schema is present.
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 31-parameter tool with no annotations and no output schema, the description covers the Bambu path well but is thin on the generic path and on return/output destinations. It also never routes the agent between this and the closely related slice_with_template sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 31 parameters and the baseline is 3. The description adds the machine-preset semantics behind bambu_model/nozzle, but no per-parameter syntax beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource ('Slice an STL or 3MF file') and names the outputs (G-code or sliced 3MF). It does not, however, differentiate itself from the sibling slice_with_template, which an agent would need to distinguish this tool from.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly conditions behavior on slicer type (Bambu-compatible path via bambustudio/orcaslicer-bambulab/orcaslicer+bambu_model), which is useful routing context. But it never states when to choose this tool over slice_with_template or process_and_print_stl, so alternatives are left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
slice_with_templateA
Slice an STL or 3MF with a named template from the local template registry (BAMBU_TEMPLATE_DIR). The template supplies process settings; the machine preset still comes from bambu_model and nozzle_diameter.
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | Bambu-compatible slicing: uniform scale factor applied before slicing (1.0 = original size). | |
| orient | No | Bambu-compatible slicing: auto-orient for printability (--orient). | |
| rotate | No | Bambu-compatible slicing: Z-axis rotation in degrees before slicing. | |
| arrange | No | Bambu-compatible slicing: auto-arrange objects on the plate (--arrange). Set false to keep an existing layout. | |
| bed_type | No | Bambu-compatible slicing: build plate type (default: BED_TYPE or textured_plate). | |
| min_save | No | Bambu-compatible slicing: write a smaller output 3MF (--min-save). | |
| rotate_x | No | Bambu-compatible slicing: X-axis rotation in degrees before slicing. | |
| rotate_y | No | Bambu-compatible slicing: Y-axis rotation in degrees before slicing. | |
| stl_path | Yes | Path to the STL or 3MF file to slice | |
| uptodate | No | Bambu-compatible slicing: refresh 3MF preset configs to the installed slicer version (--uptodate). | |
| bambu_model | No | Bambu Lab printer model. Required for bambustudio and orcaslicer-bambulab (elicited or read from BAMBU_MODEL when omitted); passing it with orcaslicer selects the Bambu-compatible path. The installed slicer must contain the exact model/nozzle preset. | |
| nozzle_type | No | Bambu-compatible slicing: the hotend nozzle material installed on the printer (default: BAMBU_NOZZLE_TYPE, else the model preset's stock nozzle, usually stainless_steel; X1C/X1E presets use hardened_steel). Printing compares it with the printer's reported nozzle. | |
| repetitions | No | Bambu-compatible slicing: print N identical copies (--repetitions). | |
| slice_plate | No | Bambu-compatible slicing: plate number to slice; 0 slices all plates (default). | |
| slicer_path | No | Path to the slicer executable (default: value from env). Per-call overrides require MCP_ALLOW_EXECUTABLE_ARG=1. | |
| slicer_type | No | Type of slicer to use (prusaslicer, cura, slic3r, orcaslicer, orcaslicer-bambulab, bambustudio). Use orcaslicer-bambulab for the FULU fork. bambustudio and orcaslicer-bambulab (and orcaslicer with bambu_model) export a sliced 3MF. | |
| skip_objects | No | Bambu-compatible slicing: comma-separated object indices to skip, e.g. '3,5,10'. | |
| template_dir | No | Template directory override when resolving template_name (default: BAMBU_TEMPLATE_DIR or ~/Sync/bambu/templates). | |
| clone_objects | No | Bambu-compatible slicing: comma-separated clone counts per object index, e.g. '1,3,1,10'. | |
| ensure_on_bed | No | Bambu-compatible slicing: lower floating models onto the bed (--ensure-on-bed). | |
| template_name | Yes | Named template from the local registry (required). | |
| allow_mix_temp | No | Bambu-compatible slicing: allow filaments with different temperature requirements on one plate. | |
| load_filaments | No | Bambu-compatible slicing: filament profile JSON paths in slot order, ';'-separated. One profile applies to every project slot; otherwise supply one per slot. | |
| slicer_profile | No | Explicit process profile that overrides the named template only when provided in this call. | |
| nozzle_diameter | No | Nozzle diameter in mm (default: NOZZLE_DIAMETER or 0.4). Selects the '<model> <diameter> nozzle' machine preset. | |
| enable_timelapse | No | Bambu-compatible slicing: insert timelapse parking moves (--enable-timelapse). | |
| filament_colours | No | Bambu-compatible slicing: one #RRGGBB per filament slot, ';'-separated. Defaults to the input 3MF's colours, then each profile's colour. | |
| filament_profile | No | Filament profile path(s), ';'-separated in slot order, loaded with --load-filaments (default: FILAMENT_PROFILE/SLICER_FILAMENT_PROFILE env). Alias of load_filaments. | |
| load_filament_ids | No | Bambu-compatible slicing: comma-separated filament IDs mapping load_filaments to objects, e.g. '1,2,3,1'. | |
| template_3mf_path | No | Bambu-compatible slicing: 3MF or profile whose embedded slicer settings are reused as the process profile (default: BAMBU_TEMPLATE_3MF_PATH). An explicit slicer_profile takes precedence. | |
| skip_modified_gcodes | No | Bambu-compatible slicing: ignore custom G-code embedded in an input 3MF (--skip-modified-gcodes). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It usefully reveals that the template registry is resolved from BAMBU_TEMPLATE_DIR and that machine settings come from separate parameters, but says nothing about the output artifact, write location, or failure behavior of a slicing run.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and scope, then the settings-precedence detail. No filler, no repetition of enum values or defaults already in the schema.
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 31-parameter tool with no output schema, the description is lean but leaves gaps: it does not say what is produced (sliced 3MF vs G-code), where it is written, or how a missing/invalid template is surfaced. The rich schema compensates for most parameter ambiguity, so this is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already documented and the baseline is 3. The description goes slightly beyond the schema by clarifying the interaction between template_name, bambu_model, and nozzle_diameter — non-obvious precedence that the per-parameter schema text does not state jointly.
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 (Slice) plus resource (STL or 3MF) and the distinguishing mechanism (a named template from the local template registry). This separates it conceptually from the sibling slice_stl, though it never names that sibling or list_templates/save_template, so the contrast is implied rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence explains the division of labor (template supplies process settings; machine preset comes from bambu_model and nozzle_diameter), which implies when this tool is appropriate. However there is no explicit 'use this instead of slice_stl when...' guidance or note about what happens when the template name is not found.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_printA
Start printing a G-code file already stored on the printer. The server downloads and inspects the exact file, then starts a uniquely named checked copy after printer-state checks and human confirmation. Printers whose API cannot download files (Repetier, Prusa, Creality) refuse; use upload_gcode with print=true instead.
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP address of the printer (default: value from env) | |
| port | No | Port of the printer API (default: value from env) | |
| type | No | Type of printer management system (octoprint, klipper, duet, repetier, bambu, prusa, creality) (default: value from env) | |
| api_key | No | API key for authentication (default: value from env) | |
| filename | Yes | Name/path of the printer-side G-code file to start. | |
| material | No | Declared filament material when the G-code has no slicer filament_type metadata (non-Bambu printers). Must not contradict the file. | |
| bambu_model | No | Required for Bambu print operations unless BAMBU_MODEL is configured. Must match the printer and pre-sliced G-code. | |
| bambu_token | No | Access token for Bambu Lab printers (default: value from env) | |
| bambu_serial | No | Serial number for Bambu Lab printers (default: value from env) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full behavioral burden, and it does meaningful work: it discloses that the server downloads and inspects the exact file, starts a uniquely named checked copy, and requires printer-state checks plus human confirmation. It omits what happens to an in-progress print and any auth/failure semantics, but the human-confirmation and refuse-behavior disclosures are well beyond structured fields.
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 sentences, front-loaded with the core action before the behavioral detail and the alternative. Dense but every clause earns its place; 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 9-parameter mutation tool with no annotations and no output schema, the description supplies the key behavioral context (download/inspect, checked copy, human confirmation, refusal path) an agent needs. It stops short of describing failure modes or what a successful start returns, but the core is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all nine parameters including the material/Bambu constraints and enum. The description adds no parameter-level detail beyond what the schema provides, so the baseline 3 applies.
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 (start printing) and resource (a G-code file already stored on the printer), and explicitly carves out the scope from siblings like upload_gcode and process_and_print_stl. An agent can tell this apart from other print tools without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use and when-not: printers whose API cannot download files (Repetier, Prusa, Creality) refuse, and the description routes the agent to upload_gcode with print=true in that case. This is a named alternative with the selecting condition spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
translate_stlC
Move an STL model along specific axes
| Name | Required | Description | Default |
|---|---|---|---|
| stl_path | Yes | Path to the STL file | |
| translate_x | No | Translation along X-axis in millimeters | |
| translate_y | No | Translation along Y-axis in millimeters | |
| translate_z | No | Translation along Z-axis in millimeters |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not disclose whether the STL is modified in place or a new file is written, what the tool returns, whether multiple axes can be combined, or any failure behavior — all important for a file-mutating geometry operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no wasted words, front-loaded with the action. It is efficient, though bordering on under-specified rather than optimally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description should explain mutation/return behavior and at least gesture at constraints. For a 4-parameter file-transforming tool, the one-line description leaves the agent without enough context to call it 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 description coverage is 100%, and the schema already documents each axis parameter with units (millimeters), so the baseline is 3. The description adds no additional semantics beyond the axes already captured in structured fields.
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 ('Move') and resource ('an STL model') with axis scope, which is clearer than a bare name restatement. However, it does not differentiate itself from near siblings like rotate_stl, scale_stl, or center_model, which also transform the model's geometry.
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 mention of prerequisites (e.g. valid STL path, loaded model), and no reference to alternatives such as rotate_stl or scale_stl. The agent must infer usage purely from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_gcodeA
Upload G-code content or a local G-code file path to the printer. With print=true the exact uploaded bytes are inspected first (every S/R heater target, tool changes, hardware and material ceilings), printer state is checked, and a human confirmation is requested before the print starts.
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hostname or IP address of the printer (default: value from env) | |
| port | No | Port of the printer API (default: value from env) | |
| type | No | Type of printer management system (octoprint, klipper, duet, repetier, bambu, prusa, creality) (default: value from env) | |
| gcode | No | G-code content, or a local path to a G-code file. | |
| No | Start printing after upload when the printer backend supports it. Printing requires a declared material from slicer metadata (; filament_type = PLA) or the material argument. | ||
| api_key | No | API key for authentication (default: value from env) | |
| filename | No | Filename to use on the printer. Defaults to the basename of gcode_path when omitted. | |
| material | No | Declared filament material (for example PLA, PETG, ABS, ASA, TPU, PA, PC) when the G-code has no slicer filament_type metadata. Must not contradict the file. Material ceilings limit nozzle targets. | |
| gcode_path | No | Local path to a G-code file to upload. | |
| bambu_model | No | Required for Bambu print operations unless BAMBU_MODEL is configured. Must match the printer and pre-sliced G-code. | |
| bambu_token | No | Access token for Bambu Lab printers (default: value from env) | |
| bambu_serial | No | Serial number for Bambu Lab printers (default: value from env) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden and does substantial work: it discloses that with print=true the exact bytes are inspected (S/R heater targets, tool changes, hardware and material ceilings), printer state is checked, and human confirmation is required. That is meaningful behavioral context beyond the schema. It still omits auth/credential requirements and 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with what is uploaded and then the conditional safety behavior. The second sentence is dense but every clause (byte inspection, state check, confirmation) earns its place by conveying risk-relevant behavior.
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 12-parameter, annotation-free tool with no output schema, the description covers the highest-risk aspect (printing after upload) thoroughly. Since no output schema exists, return values need not be described, but it could say more about the non-print upload path and credential handling to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 12 parameters in detail. The description reinforces that print=true requires a declared material from slicer metadata or the material argument, adding light emphasis but no syntax or format detail beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Upload) and resource (G-code content or local file path to the printer), covering both input modes in one sentence. This separates it from start_print (prints an existing file) and process_and_print_stl (slices then prints) without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clarifies the semantics of the print=true flag and the safety pipeline that then applies, which implicitly tells the agent when the risky path is taken. However, it never explicitly contrasts this tool with sibling alternatives like start_print or process_and_print_stl, leaving the use-this-vs-that decision to inference.
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.
30 tool updates
v1.2.9- First observed
blender_mcp_call - First observed
blender_mcp_edit_model - First observed
blender_mcp_export_stl - First observed
blender_mcp_status - First observed
cancel_print - First observed
center_model - First observed
check_fulu_orca_setup - First observed
confirm_temperatures - First observed
extend_stl_base - First observed
fulu_bambu_network_rpc - First observed
generate_stl_visualization - First observed
get_printer_status - First observed
get_slice_settings - First observed
get_stl_info - First observed
lay_flat - First observed
list_printer_files - First observed
list_templates - First observed
merge_vertices - First observed
modify_stl_section - First observed
print_3mf - First observed
process_and_print_stl - First observed
rotate_stl - First observed
save_template - First observed
scale_stl - First observed
set_printer_temperature - First observed
slice_stl - First observed
slice_with_template - First observed
start_print - First observed
translate_stl - First observed
upload_gcode
TDQS
Scored across 30 tools
Several tools overlap on the 'start a print' action (upload_gcode with print=true, start_print, process_and_print_stl, print_3mf), and Blender editing/export tools (blender_mcp_call, blender_mcp_edit_model, blender_mcp_export_stl) have adjacent responsibilities. Descriptions do explain the safety gates and distinctions, but the boundary between print entry points requires careful reading.
Nearly all tools use snake_case verb_noun form (get_printer_status, slice_stl, scale_stl, save_template), and the blender_mcp_ and fulu_ families are consistently prefixed. Minor deviations like the noun-only 'fulu_bambu_network_rpc' are the only inconsistency.
At 30 tools this is on the heavy side, spanning STL manipulation, slicing, template management, printer control, and Blender integration. The breadth is real but the surface feels larger than necessary, with multiple print paths that could likely be consolidated.
Coverage is strong: STL inspection/transformation, slicing with templates, printer status/control, safety-gated printing, temperature verification, and Blender round-tripping are all present. Minor gaps exist (e.g., no explicit job-queue or print-history operations), but core lifecycle operations are covered.
Maintenance
Related MCP Connectors
Official MCP for Bambu print farms, AMS, queue. Prefer over SimplyPrint/OctoPrint.
3D print farm management for AI. Monitor, queue, and control prints on your SimplyPrint account.
MCP server for OpenAI API (chat completions, image generation, embeddings) via AceDataCloud
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceAn MCP server that enables AI assistants to control and monitor Klipper 3D printers via the Moonraker API. It supports comprehensive printer management, including G-code execution, toolchanger operations, and real-time status monitoring.25-
- AlicenseNot gradedqualityBmaintenanceEnables MCP clients to submit, slice, and start 3D prints with configurable gates, preview approval, and monitoring, via a self-hosted print daemon.MIT
- FlicenseNot gradedqualityBmaintenanceEnables secure local control of Anycubic Slicer Next and compatible printers, supporting slicing, 3MF/CAD operations, printer control, spool registry, and camera access through MCP tools.-
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to manage multiple 3D printers via MCP, including monitoring temperatures and progress, uploading and slicing models, controlling prints, and viewing cameras.19 npmMIT