Kiln
Kiln is an open-source MCP server that lets AI agents control 3D printers end-to-end — from model design and slicing to printing, monitoring, and failure recovery.
Printer Control & Monitoring
Start, pause, resume, cancel, and emergency-stop prints (M112, with latch management)
Monitor status: temperatures, job progress, speed, cost estimates, and webcam snapshots/streaming
Send validated raw G-code, set temperatures, control lights, set speed profiles (Bambu Lab)
Skip failed objects mid-print or force-override oversized models (with human confirmation)
File Management
Upload, list, analyze, and delete G-code files on printers
Analyze G-code metadata (material, temps, estimated time, layer height)
Wrap G-code as Bambu-compatible 3MF files; extract single objects from multi-object plates
Model Design & Generation
Generate 3D models from text descriptions (Meshy, Tripo3D, OpenSCAD, etc.)
Use parametric design templates; run end-to-end design-to-G-code pipelines
Merge STLs, compose multi-color/multi-material 3MF files, rotate and check model orientation
Slicing
Slice STL/3MF/OBJ/STEP files using PrusaSlicer or OrcaSlicer
Reslice with custom overrides (speed, brim, infill, temps); print multiple copies on one plate
Visualization & Preview
Render multi-angle model previews (6 angles); compare variants side by side
Preview colored/multicolor 3MF files with per-face colors
Safety & Validation
Run preflight checks and validate G-code for dangerous commands/temperature limits
Predict print failures from mesh geometry; analyze and diagnose failures live
Autonomy level controls (confirm-all, pre-screened, full-trust) and human-confirmation tokens
Fleet Management
Register and manage multiple printers; get fleet-wide live status and analytics
Job queue, print history with annotations, per-printer statistics
Firmware updates and rollbacks (Moonraker/OctoPrint)
Materials & Filament
List material profiles, track loaded materials, manage spool inventory
Check compatibility, get recommendations and substitutes; AMS/CFS multi-material system status
Calibration & Maintenance
Trigger bed leveling, vibration compensation, and flow calibration
Get bed mesh data, set auto-leveling policies
Marketplace & Fulfillment
Search MyMiniFactory and Cults3D; download and upload models directly to printers
Compare local vs. outsourced manufacturing costs; order fulfillment via Craftcloud
Webhooks, Events & Administration
Register/manage webhooks for real-time event notifications; browse recent system events
Check and activate licenses (Pro/Business/Enterprise), manage plugins, restart server
Project cost tracking and client reports (Enterprise); printer intelligence database for troubleshooting
Allows controlling AnkerMake 3D printers, including querying status, uploading files, starting prints, monitoring progress, and taking snapshots.
Allows controlling Bambu Lab 3D printers (A1, A1 Mini, P1P, P1S, X1C, X1E) via MQTT, including status, file upload, print start, monitoring, and webcam snapshots (with ffmpeg for X1 series).
Allows controlling Creality 3D printers (K1, K2, Hi, Ender V4, V3 KE) via local Moonraker ports, including status, file upload, print start, and monitoring.
Allows controlling Elegoo 3D printers (Neptune 4, OrangeStorm Giga) via SDCP or Moonraker, including status, file upload, print start, and monitoring.
Allows controlling FlashForge 3D printers, including status, file upload, print start, and monitoring.
Allows controlling any printer running OctoPrint, including status queries, file upload, print start, queue management, monitoring, and webcam snapshots.
The open-source MCP server for 3D printing.
Kiln lets AI agents (Claude Desktop, Claude Code, Codex, or any custom MCP client) drive real 3D printers end to end — Bambu Lab, Creality, Prusa, Elegoo, Voron, Sovol, AnkerMake, Artillery, FlashForge, QIDI, RatRig, and SparkX, over OctoPrint, Moonraker/Klipper, PrusaLink, and Direct USB.
In a single conversation, an agent can design a part, slice it, queue it on the right printer, monitor the camera, recover from failures, and ship the result. No human in the middle.
Reading this as an AI agent? kiln3d.com/agents is written for you rather than for the person running you: install, MCP config, the design-to-print loop, and exactly what Kiln will refuse to do and why.
pip install kiln3dQuick Start
Using Claude Desktop? Install Kiln in one click. Download kiln.mcpb and double-click it — Claude Desktop installs Kiln and wires it in (just Claude Desktop: steps 1 and 2 below are how Codex and every other AI app connect), so those steps aren't yours. Two things still are: OpenSCAD, and Kiln's terms — the command shows them and asks you to type your acceptance, which is why it's yours and not your AI's: uvx --from kiln3d kiln accept-terms. The bundle and that command both run on uv — free, with a one-line install for each platform at that link. If Claude Desktop says the server failed to start, that's uv missing: install it and restart. Updates arrive with the extension, not via kiln self-update.
Everyone else — three steps. Then ask your AI to make something.
1. Install
pip install kiln3d2. Connect your AI — Kiln sets itself up inside Claude Desktop, Claude Code, and Codex:
kiln signin # create your free account
kiln install-mcp # connects Kiln to your AI appsRestart your AI app and it can run your printer. (Claude Code and Codex can even run this whole setup for you — the one-prompt version lives at kiln3d.com/install.) Using a different MCP client? kiln install-mcp --print prints the config — or paste it yourself:
{
"mcpServers": {
"kiln": {
"command": "python3",
"args": ["-m", "kiln", "serve"]
}
}
}No install needed? Swap the command for a zero-install runner — "command": "uvx", "args": ["kiln3d", "serve"] (Python), or "command": "npx", "args": ["kiln3d"] (Node). Same server, nothing to pip install.
Drop this into Claude Desktop, Claude Code, Codex, Cursor, or any MCP-capable agent. Runs on the free tier until you sign in.
3. Ask — paste a sentence like this into your agent. Kiln does the rest:
Make me a coaster with my dog's photo on it
That's the whole happy path. Your AI does the designing, slicing, and printing — you never touch a CLI. OS-specific walkthrough (Windows, WSL 2, Linux) at kiln3d.com/install.
kiln doctor checks your whole setup and tells you exactly what to fix. kiln self-update upgrades in place when a new release lands.
# Discover printers on your network (mDNS + HTTP probe)
kiln discover
# Add your printer (see the printer table under "Supported Printers")
kiln auth --name my-printer --host http://octopi.local --type octoprint --api-key YOUR_KEY
# Other types:
# kiln auth --name prusa --host http://192.168.1.100 --type prusalink --api-key YOUR_KEY
# kiln auth --name klipper --host http://192.168.1.100:7125 --type moonraker
# kiln auth --name bambu --host 192.168.1.100 --type bambu --access-code LAN_CODE --serial SERIAL
kiln status # Printer state + job progress
kiln upload model.gcode # Upload a file
kiln print model.gcode # Start printing
kiln slice model.stl --print-after # Slice an STL and print in one step
kiln print *.gcode --queue # Batch print
kiln wait # Monitor a running print
kiln snapshot --save photo.jpg # Webcam snapshot
kiln history --status completed # Print history
# Every command supports --json for agent consumption
kiln status --jsonGlobal option: --printer <name> targets a specific printer per command. The full command reference is in Project Docs.
Claude Code — install the plugin (one-time: install uv first if you don't have it — it's free and takes one line):
claude plugin marketplace add codeofaxel/Kiln
claude plugin install kiln@kilnOr wire it by hand — add to .claude/settings.json (project) or ~/.claude/settings.json (global):
{
"mcpServers": {
"kiln": { "command": "kiln", "args": ["serve"] }
}
}Claude Code uses your ~/.kiln/config.yaml for printer credentials (set via kiln setup or kiln auth). No env vars needed if a printer is already configured.
Claude Desktop — add to ~/.config/Claude/claude_desktop_config.json:
{
"mcpServers": {
"kiln": {
"command": "python3",
"args": ["-m", "kiln", "serve"],
"env": {
"KILN_PRINTER_HOST": "http://192.168.1.100",
"KILN_PRINTER_API_KEY": "your_key",
"KILN_PRINTER_TYPE": "prusalink"
}
}
}
}Set KILN_PRINTER_TYPE to your backend: octoprint, moonraker, bambu, prusalink, elegoo, duet, or usb — or skip env vars entirely if you've run kiln setup.
Any other LLM (OpenRouter) — Kiln works with any model that supports OpenAI-compatible function calling, not just Claude:
export KILN_OPENROUTER_KEY=sk-or-...
kiln agent --model openai/gpt-4o
kiln agent --model meta-llama/llama-3.1-70b-instruct --tier essentialTool tiers auto-match model capability: essential (15 tools) for smaller models, standard (60 tools) for mid-range, full (135 tools) for stronger models. All 907 tools are available over MCP via kiln serve.
Prerequisites by printer type
Printer |
| What you need |
Prusa MK4/XL/Mini+ |
| IP + API key (Settings › Network › PrusaLink on the LCD) |
OctoPrint (any printer) |
| OctoPrint URL + API key (Settings › API) |
Klipper/Moonraker |
| Moonraker URL (usually |
Creality K1/K2/Hi/Ender V4/V3 KE |
| IP + |
Bambu Lab |
| IP + LAN access code + serial number (all on the LCD) |
Elegoo (SDCP) |
| IP only — no auth. Neptune 4 / OrangeStorm Giga use |
Duet / RepRapFirmware |
| IP only, plus the machine password if one is set ( |
Direct USB (Marlin) |
| USB cable only — no network. Ender 3, Prusa MK3, CR-10, any Marlin/RepRap printer. |
Kiln only needs IP reachability on your LAN. Ethernet-only printers are fully supported.
Optional tools: PrusaSlicer OrcaSlicer, or BambuStudio for slicing STL → G-code (brew install --cask prusaslicer); OpenSCAD for local text-to-3D generation — install the current build (brew install --cask openscad@snapshot); set KILN_GEMINI_API_KEY to enable Gemini-generated geometry.
Linux / WSL 2
pipx installs Kiln into its own isolated environment and puts kiln on your PATH. (The pip package is kiln3d; the CLI command is kiln.)
sudo apt install pipx && pipx ensurepath
git clone https://github.com/codeofaxel/Kiln.git && cd Kiln
pipx install ./kiln
sudo apt install prusa-slicer # optional: slicing for printing
sudo snap install openscad --edge # optional: the design engine (current build)
kiln verify
# Update / uninstall
git pull && pipx install --force ./kiln
pipx uninstall kiln3dWSL 2 networking: WSL 2 uses NAT, so mDNS discovery (kiln discover) won't see printers on your home network. Connect directly by IP instead (same as Ethernet-only setups).
Ethernet-only printers (no Wi-Fi)
Kiln works the same over Ethernet and Wi-Fi — it talks to printer APIs over LAN IP. Verify the printer endpoint responds, then register by IP:
curl http://<ip>/api/version # OctoPrint
curl http://<ip>:7125/server/info # Moonraker / Creality (local Moonraker)
curl -H "X-Api-Key: YOUR_KEY" http://<ip>/api/v1/status # Prusa Link
# Bambu uses MQTT — ensure port 8883 is reachable: nc -zv <ip> 8883
kiln auth --name my-printer --host http://<ip> --type prusalink --api-key YOUR_KEYIf PrusaSlicer isn't on your PATH: export KILN_SLICER_PATH=/path/to/prusa-slicer.
Bambu TLS & webcam
Kiln pins the printer certificate (TOFU) on first connection in ~/.kiln/bambu_tls_pins.json. Overrides:
export KILN_BAMBU_TLS_MODE=ca # strict CA/hostname (usually fails on stock self-signed printers)
export KILN_BAMBU_TLS_MODE=insecure # legacy, no validation — trusted LANs only
export KILN_BAMBU_TLS_FINGERPRINT=0123abcd... # explicit SHA-256 pinWebcam capture is model-dependent: A1, A1 Mini, P1P, P1S serve frames over TLS+JPEG (no extra software). The X1 series (X1C, X1E) serves RTSPS, which Kiln relays via ffmpeg — so on an X1, both snapshots and the live stream need ffmpeg (brew install ffmpeg / sudo apt install ffmpeg). can_snapshot is reported True for every Bambu model; on an X1 without ffmpeg, the attempt surfaces a clear model-specific error rather than failing silently.
Paid tiers (kiln3d.com/pricing) add Git-for-3D versioning, product templates, assembly manuals, fleet workflows, SSO + SCIM, ERP webhooks, and long-term audit logs.
Related MCP server: Thingiverse MCP Server
Why Kiln?
One control plane, any printer — OctoPrint, Moonraker, Creality, Bambu Lab, Prusa Link, Elegoo, Serial. Manage a mixed fleet from one place.
No printer? No problem — Outsource jobs to Craftcloud's 150+ manufacturing services through the hosted proxy, or use direct mode with your own provider credentials.
AI-native — 914 MCP capabilities and 242 CLI commands built for AI agents. Not a web UI with an API bolted on.
Describe it, print it — Natural-language to physical object pipeline: text or sketch → AI generation → validation → slice → print.
Decorate anything — QR codes, photos, logos, text, SVGs, and procedural textures (tiger stripe, marble, camo, wood grain, honeycomb) embossed or debossed onto any model with one command.
Manuals included — Multi-part prints can generate printable PDF assembly manuals with Bill of Materials, isometric step renders, mating arrows, and pause-and-check verification gates. (Business)
Resume, don't restart — Cancelled or failed print? Resume from the exact layer it stopped on any supported FDM printer. No filament wasted. (Pro)
Modify mid-print — Add decorations, append features, or swap materials on a live print with atomic revert if anything goes wrong. (Pro)
Smart material routing — 25 materials, 45 brand-specific filament profiles (Bambu, Prusament, Polymaker, and more) across 11 material families. Intent-based recommendations with printer capability awareness.
Prints don't fail silently — Cross-printer learning, automatic failure recovery, closed-loop AI generation feedback (failed prints auto-improve future generations), preflight safety checks on every job.
Doomed prints stopped early — Too big for the build plate, or a material your hotend can't melt? Caught before filament is wasted, rotated to fit when possible, one-command override. Pro shows the fix: true usable area, cleanest split, or the material to switch to.
Search → Slice → Print — Search and download 3D models from MyMiniFactory and Cults3D (search only), auto-slice with PrusaSlicer, OrcaSlicer, or BambuStudio, print — all from one agent conversation.
Safety at scale — 51 named per-printer safety profiles, G-code validation, heater watchdog, tamper-proof audit logs. Enterprise adds encrypted G-code at rest with key rotation, lockable profiles, RBAC, SSO, fleet site grouping, per-project cost tracking, and PostgreSQL HA.
Supported Printers
Backend | Status | Printers |
OctoPrint | Stable | Any OctoPrint-connected printer (Prusa, Ender, custom) |
Moonraker | Stable | Klipper-based printers (Voron, Ratrig, etc.) |
Creality | Stable when Moonraker is reachable | SPARKX i7, K1/K1 Max/K1C/K1 SE, K2/K2 Pro/K2 Plus/K2 SE, Creality Hi, Ender-3 V4/V3 KE, Ender-5 Max, CR-10 SE via local Moonraker. Older Marlin Creality printers use |
Bambu | Stable | Bambu Lab X1C, X1E, P1S, P1P, P2S, A1, A1 Mini, A2L, H2S, H2D, H2D Pro, H2C, X2D (via LAN MQTT) |
Prusa Link | Stable | Prusa MK4, XL, Mini+ (local REST API — type: |
Elegoo | Stable | Centauri Carbon, Saturn, Mars series (via LAN WebSocket/SDCP). Neptune 4 / OrangeStorm Giga use Moonraker. |
Duet / RepRapFirmware | Beta — not yet verified against physical hardware | Duet 2 and Duet 3 controller boards, over the same HTTP interface Duet Web Control uses. Both RepRapFirmware 2 and 3 are supported. Vision Miner 22 IDEX v4 is the first catalogued machine. Type: |
Direct USB | Stable | Any Marlin-based printer over USB (Ender 3, Prusa MK3, CR-10, etc.). No OctoPrint or Klipper needed — just a USB cable. Type: |
Kiln ships tuned profiles for 68 models across 15 brands — Creality, Bambu Lab, QIDI, Elegoo, Prusa Research, Sovol, AON3D, Artillery, Voron, AnkerMake, FlashForge, INTAMSYS, RatRig, SparkX, Vision Miner. See the full searchable list →
Architecture
graph TD
A["🤖 AI Agent<br/><sub>Claude · GPT · Custom</sub>"]
A -->|"CLI or MCP"| B["⚙️ Kiln<br/><sub>CLI + MCP Server</sub>"]
B --> C["🖨️ Your Printers"]
B --> F["🏭 Fulfillment"]
B --> D["🛒 Marketplaces"]
B --> V["📐 Designs (versioned)<br/><sub>Pro+</sub>"]
C --> E1["OctoPrint"]
C --> E2["Moonraker"]
C --> E3["Creality"]
C --> E4["Bambu"]
C --> E5["Prusa Link"]
C --> E6["Elegoo"]
F --> F1["Craftcloud"]
D --> I["MyMiniFactory"]
D --> J["Cults3D"]
V --> V1["Branches"]
V --> V2["Signed Releases"]
V --> V3["Cloud Sync"]
style A fill:#1a1a2e,stroke:#e94560,color:#fff
style B fill:#16213e,stroke:#0f3460,color:#fff
style C fill:#0f3460,stroke:#e94560,color:#fff
style F fill:#0f3460,stroke:#27ae60,color:#fff
style D fill:#0f3460,stroke:#533483,color:#fff
style V fill:#0f3460,stroke:#f59e42,color:#fff
style E1 fill:#2d2d44,stroke:#e94560,color:#fff
style E2 fill:#2d2d44,stroke:#e94560,color:#fff
style E3 fill:#2d2d44,stroke:#e94560,color:#fff
style E4 fill:#2d2d44,stroke:#e94560,color:#fff
style E5 fill:#2d2d44,stroke:#e94560,color:#fff
style F1 fill:#2d2d44,stroke:#27ae60,color:#fff
style I fill:#2d2d44,stroke:#533483,color:#fff
style J fill:#2d2d44,stroke:#533483,color:#fff
style V1 fill:#2d2d44,stroke:#f59e42,color:#fff
style V2 fill:#2d2d44,stroke:#f59e42,color:#fff
style V3 fill:#2d2d44,stroke:#f59e42,color:#fffAgents can also outsource jobs through Craftcloud fulfillment and search models on MyMiniFactory and Cults3D (search only). On Pro and up, the design store itself is versioned — branches, signed releases, and cross-machine cloud sync are first-class outputs of the system, not a side database.
Git for 3D
Designs aren't text, but they need version control. Kiln treats meshes, decorations, and mechanical features as first-class versioned artifacts: branch a design, print variants, merge what works, sign releases with cryptographic proof the mesh hasn't changed.
Three things make this different from git:
Outcome-correlated branches. Every branch is tagged with empirical print results — success rate, warp, adhesion, cost — so cross-branch A/B is automatic, not anecdotal.
3-way semantic mesh merge. Z-level / pocket / bounding-box conflict zones rendered as visual diffs, not text patches. Manufacturing tolerance, not character offsets.
Signed releases with mesh re-fingerprinting. Ed25519 signatures over a release manifest pinned to an exact mesh; verification re-computes the fingerprint to detect tamper after release.
Here's what visualize_branch_tree("my-coaster") actually emits — the same renderer the workshop, CLI, and your agent see (yellow = signed release, light blue = experiment, light red = branch with failed outcomes):
flowchart TD
subgraph tree_coaster["📐 my-coaster · design"]
v0[v0: initial]
v1[v1: emboss-1mm<br/>83% success]
v2[v2: emboss-2mm<br/>92% success · warp 2%]
v3[v3: emboss-3mm<br/>warp 5%]
v4[v4: merge winner]
rel[🔏 1.0.0]
v0 --> v1
v0 --> v2
v0 --> v3
v2 --> v4
v4 --> rel
end
classDef root fill:#f3f4f6,stroke:#374151,color:#111
classDef released fill:#ffd60a,stroke:#111,stroke-width:3px,color:#111
classDef experiment fill:#e0e7ff,stroke:#6366f1,color:#1e1b4b
classDef failed fill:#fecaca,stroke:#b91c1c,color:#7f1d1d
class v0 root
class v1 experiment
class v2 experiment
class v3 failed
class v4 experiment
class rel released
style tree_coaster fill:#ffffff,stroke:#e5e7eb,stroke-width:1pxTier | What you get |
Free | Linear local design history (save / diff / rollback) |
Pro | Branch · merge · cherry-pick · Ed25519 signed releases · solo cloud sync |
Business | Team pull requests · approval gates · orgs / teams / scopes |
Enterprise | Audit log export · SSO · step-up authentication on releases · access review |
Patent pending across semantic mesh merge, outcome-correlated branching, and signed-release-with-physical-provenance.
Tools
The Kiln MCP server (kiln serve) exposes 907 tools to agents, plus prompts and resources for 914 total MCP capabilities. Rather than list them all here, agents browse the live catalog with get_skill_manifest and ToolSearch-style discovery. A representative slice, in the order a print actually happens:
design_session
Talk to Kiln about what you're making and get back a design that matches what you asked for
The front door for making anything: goal, geometry, preview, iterate. Free, unlimited, every tier
compile_scad
Compile OpenSCAD code into a printable STL — the keyless path underneath a design session
No API key and no external service: the agent writes the geometry, Kiln compiles it locally
generate_model
Generate a 3D model from a text prompt through an external AI provider
Optional, and off unless you bring your own key (Meshy, Tripo3D, Stability, Gemini)
search_all_models
Search connected 3D model marketplaces in one call
Covers MyMiniFactory and Cults3D; downloads where the marketplace supports it
import_step_file
Import a STEP (.step/.stp) CAD file and convert it for Kiln's mesh pipeline
analyze_printability
Run a full printability analysis on a mesh: overhangs, thin walls, warping risk, bed fit
auto_orient_model
Find the print orientation that needs the least support and prints strongest
repair_mesh
Repair mesh defects — holes, degenerate faces, rounding-noise seams
The usual fix for a model an AI generator or a rough scan produced
split_mesh_to_fit
Cut one solid too big for your build plate into printable pieces that reassemble
recommend_material
Recommend materials for a use case, with the reasons and the trade-offs
decorate_surface
Put any image, text, QR code, or pattern onto a model surface as an emboss or deboss
slice_model
Slice a model (STL/3MF/STEP) to G-code using PrusaSlicer, OrcaSlicer, or BambuStudio
estimate_print_cost_from_mesh
Estimate material cost, weight, and print time before committing the printer
preflight_check
Run pre-print safety checks: printer state, temperatures, file validity, bed clearance
start_print
Start a print on a connected machine
monitor_print
One-shot print status: progress, temperatures, time remaining, cost, and a camera snapshot where the printer has one
emergency_stop
Stop a running print immediately
purge_filament
Heat the nozzle and push a short length through — the clog test, with
load_filamentandunload_filamentbeside it for a spool changeReports what the printer could actually tell: on a Bambu it reads the AMS and translates the printer's own fault code, and where a machine reports no flow signal it says so rather than claiming success
diagnose_print_failure_live
Diagnose a failing print from live printer state plus the model's own geometry
retry_print_with_fix
Diagnose what went wrong on the last print, then re-slice and print with the fix applied
resume_interrupted_print (Pro)
Resume an interrupted print with one call on any supported FDM printer
save_design_version
Save a new version of a parametric design, so you can go back to the one that worked
Linear history is free; branching, merges, and signed releases are Pro
export_step
Export a finished design as a real STEP CAD file — analytic B-rep a machine shop can open and measure
fleet_status (Business)
Live status of every printer in a fleet: state, temperatures, connection
fulfillment_quote
Get a manufacturing quote from Craftcloud's network — printing without owning a printer
Beyond this slice, the catalog covers fleet orchestration, print-failure prediction, design version control, assembly manuals, and per-machine calibration; the deeper tiers are described at kiln3d.com/pricing. The complete tool catalog, grouped by subsystem, lives in Project Docs. If you are the agent, kiln3d.com/agents covers the same ground written in the second person, including the refusals worth knowing before you hit them.
Resource URI | Description |
| System-wide snapshot (printers, queue, events) |
| Fleet listing with idle printers |
| Detailed status for a specific printer |
| Job queue summary and recent jobs |
| Detail for a specific job |
| Recent events (last 50) |
Capabilities
Search → download → print. Kiln searches MyMiniFactory and Cults3D (search only) in one call via search_all_models, downloads where supported, and uploads straight to a printer — a full design-to-print loop with no human in the middle. (Thingiverse is supported but deprecated since its Feb 2026 acquisition by MyMiniFactory; prefer MMF.) Marketplace access uses free API keys (KILN_MMF_API_KEY, KILN_CULTS3D_USERNAME + KILN_CULTS3D_API_KEY).
AI model generation. Set any provider key and it's available instantly — KILN_MESHY_API_KEY, KILN_TRIPO3D_API_KEY, KILN_STABILITY_API_KEY, KILN_GEMINI_API_KEY — or use local OpenSCAD with no key. Generated meshes are auto-validated for printability (manifold, triangle count, bounding box) before printing. kiln generate renders a 3-view preview by default.
Slicing. Wraps PrusaSlicer, OrcaSlicer, and BambuStudio for headless slicing; auto-detects installed slicers on PATH, macOS app bundles, or via KILN_SLICER_PATH. Supports STL, 3MF, STEP, OBJ, AMF with material-aware temps and smart supports.
Fulfillment (no printer required). Print through Craftcloud's network — quote, validate address, confirm, order, track — or run alongside your own printers for overflow and specialty materials. Normal users go through the hosted proxy (credentials stay server-side, spend limits enforced); operators can use direct mode with KILN_FULFILLMENT_PROVIDER=craftcloud + KILN_CRAFTCLOUD_API_KEY.
Decoration & textures. Emboss or deboss QR codes, photos, logos, text, and SVGs onto any model face, or apply procedural textures (tiger stripe, marble, camo, wood grain, honeycomb) with a single tool call.
Pricing
All local printing is free forever — status, file management, slicing, fleet control, and printing to your own printers cost nothing. Kiln charges a 5% orchestration fee on orders placed through external manufacturing services (first 3 orders each calendar month free, on every tier; $0.25 min / $200 max per order), shown transparently in every quote. Outsourced order volume is not capped on any tier.
Tier | Price | Headline |
Free | $0 | Unlimited local printing, slicing, marketplace search, safety profiles, one printer, design intelligence, linear design history. |
Pro | $49/mo | Git-for-3D branching/signed releases, product templates, procedural textures, mid-print modification, print resume, failure recovery, nozzle-wear tracking, solo cloud sync. |
Business | $199/mo | Commercial use, 3 printers + 3 seats, fleet management, cross-printer learning, QR generation, assembly manuals, team pull requests, approval gates, webhooks. |
Enterprise | Contact us | Large fleets, SSO/SCIM, RBAC, audit trail, encrypted G-code at rest, white-label manuals, 99.9% SLA, on-prem/VPC. |
Full comparison at kiln3d.com/pricing. Run kiln upgrade to activate a license key. For provider-routed orders, the provider remains merchant of record; Kiln acts as orchestration infrastructure.
Safety
Kiln is safety-first infrastructure for controlling physical machines:
Pre-flight checks validate printer state, temperatures, and files before every print
G-code validation blocks dangerous commands (firmware reset, unsafe temperatures)
Temperature limits enforce safe maximums (300 °C hotend, 130 °C bed)
Confirmation required for destructive operations (cancel, raw G-code)
Optional authentication with scope-based API keys for multi-user setups
Structured errors ensure agents always know when something fails
Packages
This monorepo contains two packages:
Package | Description | Entry point |
kiln | CLI + MCP server for multi-printer control (OctoPrint, Moonraker, Creality, Bambu, Prusa Link, Elegoo, Direct USB) |
|
octoprint-cli | Lightweight standalone CLI for OctoPrint-only setups |
|
Development
# Create a virtualenv first (required on modern Ubuntu/Debian/WSL)
python3 -m venv .venv && source .venv/bin/activate
pip install -e "./kiln[dev]"
pip install -e "./octoprint-cli[dev]"
cd kiln && python3 -m pytest tests/ -v
cd ../octoprint-cli && python3 -m pytest tests/ -vRun in Docker
docker compose up self-hosts the Kiln MCP server against your own printer — set KILN_PRINTER_TYPE/KILN_PRINTER_HOST/KILN_PRINTER_API_KEY first. This is a personal self-host quickstart, unrelated to the infrastructure behind the hosted api.kiln3d.com service. Prefer zero setup? kiln3d.com runs the hosted version for you.
Authentication (optional)
Optional API-key auth for MCP tools, disabled by default. Scopes: read, write, admin. Read-only tools never require auth.
export KILN_AUTH_ENABLED=1
export KILN_AUTH_KEY=your_secret_key
export KILN_MCP_AUTH_TOKEN=your_secret_key # clients provide their key hereWebhooks
Register HTTP endpoints for real-time event notifications:
register_webhook(url="https://example.com/hook", events=["job.completed", "print.failed"])Payloads are signed with HMAC-SHA256 when a secret is provided. Redirects are blocked by default (KILN_WEBHOOK_ALLOW_REDIRECTS=0); when enabled, each hop is SSRF-validated and HTTPS→HTTP downgrade is blocked.
Printer discovery
kiln discover # mDNS/Bonjour + HTTP subnet probingFinds OctoPrint, Moonraker/Creality, Bambu, Elegoo, and Prusa Link printers. If discovery returns nothing, register directly by IP with kiln auth.
Third-party plugins
Entry-point plugins are default-deny in production (KILN_PLUGIN_POLICY=strict). Allow specific plugins with KILN_ALLOWED_PLUGINS=my_plugin,other_plugin, or set KILN_PLUGIN_POLICY=permissive for temporary migration compatibility.
Module | Description |
| MCP server with tools, resources, and subsystem wiring |
| Printer adapter abstraction (OctoPrint, Moonraker, Creality, Bambu, Prusa Link, Elegoo) |
| Model marketplace adapters (MyMiniFactory, Cults3D, Thingiverse, metadata-only sources) |
| Slicer integration (PrusaSlicer, OrcaSlicer, BambuStudio) with auto-detection |
| Fleet registry for multi-printer management |
| Priority job queue with status tracking |
| Background job dispatcher with history-based smart routing |
| Pub/sub event bus with history |
| SQLite storage for jobs, events, and settings |
| Event-driven webhook delivery with HMAC signing |
| Optional API key authentication with scope-based access |
| Network printer discovery (mDNS + HTTP probe) |
| Text-to-model generation providers (Meshy, Tripo3D, Stability AI, Gemini Deep Think, OpenSCAD) with auto-discovery, mesh validation, and printability analysis |
| Consumer workflow for non-printer users (address validation, material recommendations, timeline/price estimation, onboarding) |
| Print cost estimation from G-code analysis |
| Multi-material and spool tracking |
| Material brand catalog, properties, and purchase-link metadata |
| Fleet material inventory and assignment tracking |
| Automated bed leveling trigger system |
| MJPEG webcam streaming proxy |
| Cloud sync for printer configs and job history |
| Internal tool-plugin discovery and registration |
| Focused MCP tool modules loaded by the plugin loader |
| G-code safety validator with per-printer limits |
| Rule-based G-code interception and safety rewriting |
| Bundled safety database (51 named printer models, temps/feedrates/flow) |
| Bundled slicer profiles (auto-generates .ini files per printer) |
| Printer knowledge base (firmware quirks, materials, failure modes) |
| Pre-validated print pipelines (quick_print, calibrate, benchmark) |
| Multi-part assembly validation and manual planning support |
| Local design history, version records, diffs, and rollback primitives |
| Multi-gate printability validation pipeline |
| Local model preview rendering |
| OpenAI function-calling schema converter (MCP → OpenAI format) |
| Tool tier definitions (essential/standard/full) for model capability matching |
| Generic agent loop for any OpenAI-compatible API (OpenRouter, direct, etc.) |
| OpenRouter integration with model catalog and auto-tier detection |
| Bundled JSON databases (safety profiles, slicer profiles, printer intelligence) |
| External-provider integration gateway (as integrations launch) |
| Auto-cooldown watchdog for idle heaters |
| Crypto wallet configuration (Solana/Ethereum for donations and fees) |
| Public manifest for kiln-pro tool discovery and REST proxy stubs |
| Free-tier decoration quota tracking and tier resolution hooks |
| Click CLI with 242 commands and JSON output |
kiln-pro (kiln3d.com) extends public Kiln with paid-tier REST serving, billing, licensing, SSO, RBAC, G-code encryption, uptime reporting, team administration, and project-cost workflows. Public Kiln exposes only the interface/proxy surface for those capabilities; the private implementation stays in kiln-pro.
Documentation
Document | Description |
Complete reference (CLI, MCP tools, adapters, config) |
Logo files live in docs/assets/ — all vector SVG, scale to any size.
File | Use |
| GitHub / social media banner (dark / light scheme) |
| Primary mark + wordmark (dark / light bg) |
| Horizontal lockup (dark / light bg) |
| Mark only (dark bg) |
| Favicon / app icon |
| Transparent bg (for dark / light UIs) |
| Square mark tile — profile picture, app tile (1024×1024) |
| Social header (1500×500) |
| iPhone wallpapers |
| MacBook wallpapers |
Every file above is generated from one geometry, so the mark is identical across all of them. Please don't redraw it — scale the vector instead.
Support Development
Kiln is free, open-source software. If you find it useful, consider sending a tip:
Solana:
kiln3d.solEthereum:
kiln3d.eth
Positioning
Messaging clarification (February 24, 2026): We clarified wording to remove ambiguity and align with existing intent; no strategy change. Kiln is orchestration and agent infrastructure for fabrication workflows. Kiln does not operate a first-party decentralized manufacturing marketplace/network. Kiln integrates with third-party providers and external provider/network adapters as integrations are available.
Non-goals: operating a first-party decentralized manufacturing marketplace/network; replacing partner supply-side networks; owning provider marketplaces instead of integrating with them; acting as merchant of record for provider-routed manufacturing orders.
License
Kiln is a project of Hadron Labs Inc.
AGPL-3.0 License — open source with copyleft. Commercial licensing available for companies that need proprietary use.
By contributing, you agree to the Contributor License Agreement.
Also listed on Smithery.
Available Tools
468 toolsacquire_printer_lockA
Acquire an exclusive lock on a printer for safe concurrent access.
Prevents multiple agents from controlling the same printer simultaneously.
Args:
printer_name: Printer to lock.
holder: Identifier of the lock holder.
timeout_seconds: Maximum time to wait for the lock.
| Name | Required | Description | Default |
|---|---|---|---|
| holder | No | agent | |
| printer_name | Yes | ||
| timeout_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It mentions exclusive lock, prevention of simultaneous control, and timeout, but lacks details on lock failure behavior, idempotency, automatic release, or side effects. This is insufficient for a tool with no annotation safety net.
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 well-structured with a clear opening statement, an explanatory sentence, and a parameter list. It is concise with no redundant information. Could be slightly more compact, but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 3 parameters, no output schema, and no annotations. The description covers purpose and parameter semantics but omits return value, error handling, and blocking vs non-blocking behavior. For a relatively simple tool, the description is adequate but not fully complete to guide an agent without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% with no parameter descriptions in the schema. The description includes an explicit 'Args' section explaining each parameter's semantic role (printer_name: Printer to lock, holder: Identifier of the lock holder, timeout_seconds: Maximum time to wait). This adds significant meaning beyond the schema's types and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it acquires an exclusive lock on a printer for safe concurrent access. The verb 'acquire' and resource 'lock on printer' are specific. It distinguishes itself from sibling 'release_printer_lock' by focusing on acquisition.
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 context by stating it prevents multiple agents from controlling the same printer simultaneously, implying when to use. However, it does not explicitly state when not to use or mention alternatives like 'release_printer_lock'. Guidelines are implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
activate_licenseA
Activate a Kiln Pro or Business license key.
Writes the key to ``~/.kiln/license`` and returns the resolved
tier info. Use ``license_status`` to check the current tier first.
Args:
key: License key string (format: ``kiln_pro_...`` or ``kiln_biz_...``).
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the write operation to '~/.kiln/license' and the return of tier info, which are key behaviors. With no annotations provided, this adequately covers transparency, though it could mention if any authentication is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loading the purpose in the first sentence, and every sentence adds value. 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?
Given the simplicity of the tool (one parameter, no output schema), the description is adequate. It covers the action, side effects, and return value. Minor room for improvement: mentioning any prerequisites or error conditions.
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 only parameter 'key' is described with format examples ('kiln_pro_...' or 'kiln_biz_...'), adding significant meaning beyond the schema's simple string type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Activate a Kiln Pro or Business license key,' specifying the verb and resource. It distinguishes itself from the sibling tool 'license_status' by mentioning it.
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?
Explicitly advises to 'Use license_status to check the current tier first,' providing clear context for when to use this tool versus an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_assembly_interfaceA
Add a mating interface between two parts in an assembly.
Defines how two parts connect (joint type and clearance),
which is used during validation and clearance checking. For
screw/anchor-based joints, ``fastener`` may provide an
explicit hardware spec so downstream manuals and BOM tools do
not have to guess from clearance alone.
Args:
assembly_json: JSON string of the current assembly state.
part_a_id: ID of the first part in the interface.
part_b_id: ID of the second part in the interface.
joint_type: Type of joint (default ``"clearance_fit"``).
clearance_mm: Clearance gap in mm (default 0.2). For
``"interference_fit"`` pass a NEGATIVE value (the
part is intentionally larger than its socket);
interference geometry is the entire point.
magnet_polarity_aligned: Only meaningful when
``joint_type == "magnetic"``. ``True`` declares
the designer has confirmed which poles face each
other in each magnet pocket; ``None`` means
unknown. Downstream tooling refuses to ship a
hand-wavy "make sure they pull together"
instruction when polarity is unknown.
fastener: Optional FastenerSpec as a dict or JSON object
string. Supported keys include ``size``, ``family``,
``length_mm``, ``length_range_mm``, ``head_type``,
``drive_type``, ``surface_type``,
``quantity_per_interface``, and ``notes``.
| Name | Required | Description | Default |
|---|---|---|---|
| fastener | No | ||
| part_a_id | Yes | ||
| part_b_id | Yes | ||
| joint_type | No | clearance_fit | |
| clearance_mm | No | ||
| assembly_json | Yes | ||
| magnet_polarity_aligned | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It explains the tool's function and parameter details but does not disclose side effects, auth needs, or return behavior. The description is adequate but lacks full behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear parameter documentation in a bullet-like format. It is slightly verbose but each sentence adds value. No redundancy, and the most critical information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description thoroughly covers parameter semantics but omits the return value or effect on the assembly state. With no output schema and 7 parameters, the missing return behavior is a notable 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?
The description provides rich, detailed explanations for every parameter, including defaults, special cases (e.g., negative clearance for interference fit), and constraints (e.g., magnet polarity only meaningful for magnetic joints). This adds significant value beyond the schema's bare titles and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds a mating interface between two parts in an assembly, specifying joint type and clearance. It distinguishes itself from sibling tools like 'add_assembly_part' by focusing on interfaces between parts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for validation and clearance checking but does not explicitly state when to use this tool vs. alternatives like 'compose_assembly_parts' or 'validate_assembly'. No prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_assembly_partA
Add a part to an existing assembly.
Parses the assembly from its JSON representation, appends
the new part, and returns the updated assembly state.
Args:
assembly_json: JSON string of the current assembly state
(as returned by create_assembly or a previous tool call).
part_id: Unique identifier for this part within the assembly.
file_path: Path to the STL/OBJ mesh file for the part.
position_x: X position offset in mm (default 0.0).
position_y: Y position offset in mm (default 0.0).
position_z: Z position offset in mm (default 0.0).
material: Filament material for the part (default ``"PLA"``).
role: Structural role of the part (default ``"structural"``).
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | structural | |
| part_id | Yes | ||
| material | No | PLA | |
| file_path | Yes | ||
| position_x | No | ||
| position_y | No | ||
| position_z | No | ||
| assembly_json | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes the behavior: parsing JSON, appending the part, and returning the updated state. It mentions that the assembly is 'existing' and that the result is 'updated assembly state', implying immutability. While it could add more about error handling or permissions, it adequately discloses the core 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?
The description is well-structured with a docstring format: purpose, process, then parameter list. It is slightly long but each sentence adds value. The front-loaded purpose is clear. It could be more concise by grouping defaults, but it is not overly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters, 3 required, and no output schema, the description covers all parameters and the return value (updated assembly state). It explains the process and default values. It lacks details on constraints (e.g., part_id uniqueness) or error scenarios, but for a moderately complex tool, it is sufficiently 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 0%, so the description must add meaning. It fully describes each parameter: assembly_json (state from previous tool), part_id (unique identifier), file_path (mesh file path), position offsets, material (filament material), role (structural role). This provides essential context beyond the schema's property names and types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Add a part to an existing assembly' with a specific verb and resource. It explains the process of parsing JSON, appending, and returning updated state. It distinguishes from sibling tools like create_assembly (creates new) and add_assembly_interface (adds interface).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that the assembly must already exist by specifying that assembly_json comes from create_assembly or previous tool calls. However, it does not explicitly state when to use this tool vs alternatives like add_assembly_interface or when not to use it. Guidance is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_interception_ruleA
Add a custom interception rule to an active session.
Args:
session_id: Target session ID.
name: Human-readable rule name.
trigger: Trigger type -- one of: temp_exceeds, temp_below,
temp_delta, feedrate_exceeds, flow_anomaly, position_limit,
command_blocked, pattern_match, always, layer_change.
action: Action to take -- one of: allow, block, modify, pause, alert.
priority: Rule priority -- one of: critical, high, medium, low.
threshold: Numeric threshold for trigger evaluation.
threshold_max: Upper bound for range-based triggers.
blocked_commands: List of G/M codes for command_blocked trigger.
pattern: Regex pattern for pattern_match trigger.
modify_params: Parameter overrides for modify action (e.g. {"F": 3000}).
message: Human-readable explanation shown when rule fires.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| action | Yes | ||
| message | No | ||
| pattern | No | ||
| trigger | Yes | ||
| priority | No | medium | |
| threshold | No | ||
| session_id | Yes | ||
| modify_params | No | ||
| threshold_max | No | ||
| blocked_commands | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It describes the action but does not discuss side effects, required permissions, or what happens on conflict (e.g., duplicate name). The message field indicates when the rule fires, but other behavioral aspects are omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a one-sentence summary followed by a bullet-like list of arguments. Every line adds value, with no redundant or vague statements.
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 11 parameters and no schema descriptions, the description explains each parameter adequately. However, it does not indicate which parameters are required (the schema lists 4 required), nor does it mention defaults like priority=medium. The output schema is present but not referenced. A small gap in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must fully compensate. It does so by listing all 11 parameters with clear meanings, enumerating valid values for trigger, action, and priority, and providing examples (modify_params). This adds critical semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Add a custom interception rule to an active session,' specifying the verb (add), resource (interception rule), and context (active session). This distinguishes it from related tools like remove_interception_rule or list_interception_sessions.
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 does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or prerequisites. It implies usage through its purpose but lacks direct guidance on deciding when adding a rule is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_mesh_chamferA
Add chamfers (flat bevels) at sharp edges.
Detects edges where adjacent faces meet at a sharp angle and
bevels them with a flat transition face. Chamfers are faster
to print than fillets and reduce stress concentration.
:param file_path: Path to the STL file.
:param distance_mm: Chamfer distance from edge in mm (default 0.5).
:param angle_threshold_deg: Edges sharper than this get chamfered (default 60).
:param output_path: Output path (defaults to ``<name>_chamfered.stl``).
:returns: Dict with sharp edge count, triangles added, and output path.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| distance_mm | No | ||
| output_path | No | ||
| angle_threshold_deg | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the core behavior (edge detection and beveling), the return value ('Dict with sharp edge count, triangles added, and output path'), and a significant side effect: the inline 3D stage opening on success and automatic decimation of oversized meshes. It does not mention file overwrite behavior or error conditions, but the provided context is substantial.
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 front-loaded with a one-sentence purpose, followed by compact parameter documentation and a return-type note. The 3D stage paragraph adds relevant behavioral context but is somewhat lengthy; still, every sentence earns its place and there is little waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mesh processing tool with no annotations and no output schema, the description is fairly complete: it explains inputs, output default, return value, and post-success behavior. It could be more complete with notes on file overwriting, input formats, and failure modes, but these are not critical gaps given the detail already present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully compensate. It does: every parameter is documented with meaningful semantics (file_path is the STL path, distance_mm is chamfer distance, angle_threshold_deg controls which edges are chamfered, output_path defaults to <name>_chamfered.stl). This adds real meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Add chamfers (flat bevels) at sharp edges.' It clearly explains the operation (detecting sharp edges and beveling them with flat transition faces) and distinguishes itself from the sibling 'add_mesh_fillet' by explicitly contrasting chamfers with fillets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by stating that 'Chamfers are faster to print than fillets and reduce stress concentration,' which helps an agent choose chamfering over filleting. It does not name add_mesh_fillet explicitly or state when not to use this tool, but the comparison provides clear contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_mesh_filletA
Add fillets (rounded transitions) at sharp edges.
Detects edges where adjacent faces meet at a sharp angle and
inserts intermediate triangles to approximate a smooth fillet.
Reduces stress concentration at corners and improves printability.
Use after ``design_scorecard()`` flags sharp corners or
``predict_print_failures()`` detects stress risers.
:param file_path: Path to the STL file.
:param radius_mm: Fillet radius in mm (default 1.0).
:param angle_threshold_deg: Edges sharper than this get filleted (default 60).
:param output_path: Output path (defaults to ``<name>_filleted.stl``).
:returns: Dict with sharp edge count, triangles added, and output path.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| radius_mm | No | ||
| output_path | No | ||
| angle_threshold_deg | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses several behaviors: edge detection and triangle insertion, purpose (reduce stress concentration, improve printability), and side effects on output. It also mentions the interactive 3D stage side effect, including decimation of oversized meshes, which is valuable. No contradictions with annotations since none exist.
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 well-structured with a clear summary, followed by usage guidance, parameter documentation, and a note about the 3D stage. It is detailed but each sentence adds value; no filler. The inline 3D stage note is extra but relevant and concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a moderately complex tool with 4 parameters, no output schema, and no annotations, the description is complete: it explains the purpose, how it works, when to use, parameters, return value (dict with sharp edge count, triangles added, and output path), and the 3D stage side effect. This is sufficient for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description explicitly explains each parameter in a :param block: file_path (path to STL), radius_mm (fillet radius with default), angle_threshold_deg (edge sharpness threshold), and output_path (output location with default). This adds meaning beyond the bare schema properties, fully compensating for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it adds fillets (rounded transitions) at sharp edges of a mesh, using specific verbs and resources. It distinguishes itself from sibling tools like 'add_mesh_chamfer' (which adds chamfers) and other mesh operations, making its purpose specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool: 'Use after design_scorecard() flags sharp corners or predict_print_failures() detects stress risers.' This clearly suggests the context and triggers, and implicitly differentiates it from alternative operations like chamfering by focusing on fillets for stress reduction and printability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_safety_profileA
Add a local safety-profile override for a printer model.
Validates the profile and saves it to this machine's override file
(``~/.kiln/local_printer_overrides.json``; the older name
``community_profiles.json`` is still read). Nothing saved here is
uploaded, pooled or shared.
An override may only TIGHTEN a curated limit. A higher number is
discarded in favour of Kiln's curated value, so this is the right
tool for a printer Kiln has never heard of, or for holding your own
machine BELOW the curated limits.
It is the WRONG tool for "my hotend is upgraded". Use
``select_printer_variant`` for that: it resolves to a ceiling Kiln
has verified against the manufacturer, instead of one you typed.
Values saved here are labelled owner-supplied in every profile
readout — Kiln never presents them as its own verified numbers.
Args:
printer_model: Short identifier for the printer (e.g.
``"my_custom_corexy"``).
profile: Dict containing at least ``max_hotend_temp``,
``max_bed_temp``, ``max_feedrate``, and ``build_volume``
(a list of 3 positive numbers ``[X, Y, Z]``). Optional
fields: ``display_name``, ``max_chamber_temp``, ``min_safe_z``,
``max_volumetric_flow``, ``notes``.
| Name | Required | Description | Default |
|---|---|---|---|
| profile | Yes | ||
| printer_model | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description comprehensively discloses behavior: it validates the profile, saves only locally to a specific file path, notes the older filename that is still read, explicitly states nothing is uploaded or shared, describes the tightening-only constraint and the rejection of higher numbers, and notes that values are labelled owner-supplied in readouts. This exceeds expectations given no annotations were provided.
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 well-structured with clear paragraphs that each add value: purpose, location/scope, constraint, strategic guidance, labeling, and argument details. It is front-loaded with the key purpose and uses markdown for file paths and code identifiers, making it scannable without unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (a validation/write operation with data structure specifics), no annotations, and no output schema, the description is remarkably complete. It covers validation, persistence, domain constraints, alternatives, and parameter structure fully, leaving no significant onboarding 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?
Even though schema description coverage is 0%, the description thoroughly explains both parameters. It defines printer_model as a 'Short identifier' and gives an example, and describes the profile dict with required keys (max_hotend_temp, max_bed_temp, max_feedrate, build_volume) and their types (e.g., 'a list of 3 positive numbers'), plus optional fields. This provides substantial meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's primary function: 'Add a local safety-profile override for a printer model.' It specifies the resource (printer model) and the action (add/override safety profile), and distinguishes it from related tools like select_printer_variant, lock_safety_profile, and list_safety_profiles by emphasizing it is for local, owner-supplied overrides that only tighten limits.
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?
Explicitly provides when to use and when not to use: 'this is the right tool for a printer Kiln has never heard of, or for holding your own machine BELOW the curated limits' and 'It is the WRONG tool for "my hotend is upgraded". Use select_printer_variant for that'. This gives clear strategic guidance and names the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_spoolB
Add a new filament spool to inventory.
Args:
material: Material type (PLA, PETG, ABS, etc.).
color: Filament color.
brand: Manufacturer brand.
weight_grams: Total spool weight in grams (default 1000).
cost_usd: Cost of the spool in USD.
| Name | Required | Description | Default |
|---|---|---|---|
| brand | No | ||
| color | No | ||
| cost_usd | No | ||
| material | Yes | ||
| weight_grams | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It implies a write operation but does not disclose side effects, required permissions, behavior on duplicates, or return value. The description lacks behavioral context beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: one sentence for purpose followed by a labeled list. It is front-loaded and avoids redundancy. Every line adds value, though structuring as a bullet list might improve readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (5 parameters, no output schema, no annotations), the description is adequate but not thorough. It covers the basic function and parameters but omits validation rules, constraints on material values, and output details. It meets minimum viability.
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 description includes an Args section that explains each parameter with examples (e.g., material types) and a default value. The schema provides no descriptions (0% coverage), so the description adds significant meaning, though it could be more precise (e.g., color format).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Add a new filament spool to inventory.' The verb 'Add' and resource 'spool' are specific. The tool is distinguishable from sibling tools like 'remove_spool' and 'list_spools' by its name and description context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'suggest_spool_swaps' or 'list_spools'. There is no mention of prerequisites, conditions, or typical scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ams_statusA
Full AMS hardware dump — all trays, humidity, RFID (Bambu Lab only).
For just the currently-active material, use ``get_active_material``
instead. For Kiln's software material tracker, use ``get_material``.
Returns what's loaded in each AMS tray: filament type, color, remaining
percentage, RFID tag, temperature ranges, and humidity.
The ``tray_now`` field usually shows which tray is currently active
(``"255"`` means none / external spool on X1/P1-style reports). A1 /
AMS Lite reports may keep ``tray_now`` at ``"255"`` while exposing
loaded AMS trays and selected/target tray fields such as ``tray_pre``
or ``tray_tar``. The ``ams_exist_bits`` and ``tray_exist_bits`` fields
are bitmasks showing which AMS units and trays are physically present.
Use this to check filament levels before printing, verify the correct
material is loaded, or select the right ``ams_mapping`` for
``start_print()``.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and excels: explains key field behaviors (tray_now='255' meaning none/external spool, A1/AMS Lite differences, bitmask fields), mentions Bambu Lab only restriction, and details return contents. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured: starts with a one-line summary, then usage guidance, return field details, edge cases, and practical applications. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description fully compensates by explaining return fields, special values, printer-specific behavior, and use cases. Comprehensive for a parameterless tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema coverage is 100% trivially. The description does not need to add parameter semantics but provides rich contextual guidance on how the tool is used without parameters, exceeding the 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?
Clearly states it provides a full AMS hardware dump including all trays, humidity, and RFID, specifically for Bambu Lab printers. Explicitly distinguishes itself from sibling tools 'get_active_material' and 'get_material' by naming when to use those instead.
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?
Provides explicit when-to-use scenarios (check filament levels before printing, verify material, select ams_mapping for start_print()) and when-not-to-use (for just active material or Kiln's tracker), including specific alternative tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_design_requirementsA
Analyze a functional requirement and return technical recommendations.
This is the internal-lookup tool that resolves a natural-language
requirement into material recommendations, applicable design
patterns, dimensional constraints, print orientation rules, and
expert guidance notes.
For the user-facing flow — capturing what a user is making at the
duty / environment / materials / safety layer and producing a
saved goal that drives generation, the audit, and the post-print
review — call ``design_session(verb="start", idea="...")`` first.
That tool internally calls this one for technical lookups; agents
calling ``analyze_design_requirements`` directly should treat it
as a pre-design analysis pass, not the user-facing entry point.
Examples:
"shelf bracket that holds 10 lbs of books"
"outdoor planter that holds water"
"phone mount for car dashboard, survives summer heat"
"snap-fit enclosure for a Raspberry Pi"
"flexible phone case that absorbs drops"
"cookie cutter, food safe"
"decorative vase, looks premium"
Args:
requirements: Natural language description of what the object
needs to do — functional needs, environment, loads, etc.
material: Optional material override (e.g. "petg"). If not
provided, the system recommends the best material.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | ||
| requirements | Yes |
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 states the tool returns technical recommendations and does not indicate destructive side effects. However, it does not explicitly confirm that the tool is read-only or mention any authentication or rate limitations. The description is adequate but lacks explicit safety assurances.
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 well-structured: it opens with the main purpose, then differentiates from a sibling tool, provides examples, and ends with parameter explanations. It is front-loaded but somewhat lengthy. Every sentence adds value, though it could be slightly more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no output schema, no enums) and the rich sibling context, the description is remarkably complete. It covers what the tool does, when to use it, how parameters work, and provides examples. There is no missing information necessary for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds significant meaning. It explains the 'requirements' parameter as 'natural language description of what the object needs to do — functional needs, environment, loads, etc.' and 'material' as optional override. This goes beyond the schema's basic type definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Analyze a functional requirement and return technical recommendations.' It specifies it is an internal-lookup tool that resolves natural-language requirements into material recommendations, design patterns, dimensional constraints, print orientation rules, and expert guidance notes. It distinguishes itself from the user-facing flow tool design_session, making its role unique among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use this tool versus the alternative: 'For the user-facing flow... call design_session(...) first. That tool internally calls this one for technical lookups; agents calling analyze_design_requirements directly should treat it as a pre-design analysis pass, not the user-facing entry point.' It provides concrete examples of valid inputs, guiding correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_generation_feedbackA
Analyze a generated model and get feedback for improvement.
Returns feedback with specific constraints to add to the
generation prompt to fix identified issues.
Args:
file_path: Path to the generated model file.
original_prompt: The original generation prompt.
failure_mode: Optional failure mode if the model was printed
and failed (e.g. ``"adhesion"``, ``"spaghetti"``).
max_overhang_angle: Maximum overhang angle in degrees.
min_wall_thickness: Minimum wall thickness in mm.
has_bridges: Whether the model has bridge features.
has_floating_parts: Whether the model has disconnected parts.
non_manifold: Whether the mesh is non-manifold.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| has_bridges | No | ||
| failure_mode | No | ||
| non_manifold | No | ||
| original_prompt | Yes | ||
| has_floating_parts | No | ||
| max_overhang_angle | No | ||
| min_wall_thickness | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully convey behavioral traits. It states the tool returns feedback (a read operation), but does not explicitly confirm it is non-destructive, nor does it mention any side effects, authentication needs, or rate limits. The description is insufficient given the lack of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a clear purpose statement and a return value description, followed by a structured parameter list. It is reasonably concise, though the parameter list is somewhat verbose. Overall, it is well-organized and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 8 parameters, no output schema, and many siblings, the description provides basic functionality and parameter info but lacks return value format details, error conditions, or usage context. It does not fully compensate for the missing output schema or annotations, leaving gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must provide parameter meaning. It includes a docstring listing each parameter with a brief explanation (e.g., failure_mode: 'Optional failure mode if the model was printed and failed'). These add value beyond the schema's titles and types, though descriptions are minimal. The effort compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes a generated model to get feedback for improvement, specifying it returns constraints to add to the generation prompt. This verb+resource pairing is specific and distinguishes it from sibling analysis tools like analyze_print_failure or analyze_warping_risk.
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 the tool is used when you have a generated model to improve, but it lacks explicit guidance on when to use it versus alternatives (e.g., other analysis tools). No when-not-to-use or prerequisite information is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_mesh_geometryA
Deep geometric and printability analysis of a 3D mesh.
Goes beyond basic validation to compute volume, surface area,
center of mass, overhang detection, connected components (floating
parts), degenerate triangles, and a composite printability score
(0-100).
Use this after generating a model to understand its geometry and
identify printability issues before sending to the slicer.
For a STEP/STP CAD file this converts it first and every metric
below is measured on Kiln's mesh copy — except an added ``exact``
block, which carries the volume, surface area and envelope read
from the CAD file's own surfaces. Those two disagree slightly
and the exact ones are the part's: quote ``exact`` when telling
a user how big their CAD part is. ``mesh_quality_scorecard``
gives the same file a fuller intake report.
:param file_path: Path to a mesh (.stl, .obj, .glb) or a CAD file
(.step, .stp), which is converted automatically.
:returns: Dict with full mesh analysis metrics, plus ``exact``
for CAD input.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full transparency burden and succeeds: it discloses CAD conversion, that metrics are measured on a Kiln mesh copy, that an 'exact' block comes from the CAD file's own surfaces, and that mesh and exact values may disagree. It also states return type and score range.
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?
Though fairly detailed, the description is front-loaded with the core purpose, then flows logically through metrics, usage timing, CAD-specific behavior, parameter docs, and returns. Every sentence contributes actionable information without padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a single parameter, the description is unusually complete: it covers input formats, the full set of computed metrics, CAD conversion nuances, exact vs expected values, and an alternative tool. An agent has enough to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the schema only says 'file_path: string'. The description compensates fully by specifying supported input formats (.stl, .obj, .glb and .step/.stp) and noting automatic conversion of CAD files, meaningfully enriching the lone parameter.
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 opens with a specific verb-resource pair: 'Deep geometric and printability analysis of a 3D mesh' and enumerates exact metrics (volume, surface area, center of mass, overhang detection, connected components, degenerate triangles, printability score). It also distinguishes itself from sibling mesh_quality_scorecard by noting that tool gives a fuller intake report, making its scope 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?
Provides explicit usage context: 'Use this after generating a model to understand its geometry and identify printability issues before sending to the slicer.' It also gives an alternative ('mesh_quality_scorecard gives the same file a fuller intake report') and notes that STEP/STP files are converted automatically, informing when it can be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_model_geometryA
Detect geometric regions in a 3D model that affect slicing.
Analyzes model geometry to identify overhangs, bridges, thin walls,
top/bottom surfaces, fine details, and curved surfaces. Each region
gets optimized slicing parameters in the adaptive plan.
Args:
model_path: Path to an STL or 3MF file for analysis.
model_stats: Pre-computed geometry statistics dict (from slicer
preview or external tool). Keys include ``height_mm``,
``overhangs``, ``bridges``, ``thin_walls``, etc.
Provide either ``model_path`` or ``model_stats`` (or both —
``model_stats`` takes precedence).
| Name | Required | Description | Default |
|---|---|---|---|
| model_path | No | ||
| model_stats | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that analysis identifies specific geometric features and mentions parameter precedence. However, it does not describe the return format, potential side effects, permissions, or error cases. The behavioral disclosure is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. It starts with a clear purpose sentence, then lists Args with bullet points. Every sentence adds value without redundancy. 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?
Given the low complexity (2 parameters, no output schema, no annotations), the description is nearly complete. It covers purpose, parameters, and usage. The only gap is not describing the return format, but without an output schema, this is acceptable. The description provides sufficient context for an AI agent to understand and use the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate fully. It explains both parameters: model_path (path to STL/3MF file) and model_stats (pre-computed dict with example keys). It clarifies that either or both can be provided and that model_stats takes precedence. This adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool detects geometric regions affecting slicing (overhangs, bridges, thin walls, top/bottom surfaces, fine details, curved surfaces). It distinguishes itself from sibling tools like 'analyze_mesh_geometry' and 'analyze_printability' by focusing on slicing-specific geometry analysis. The verb 'Detect' and resource 'geometric regions in a 3D model' are specific and precise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides adequate usage context: use when needing to identify geometric features that affect slicing, with each region getting optimized slicing parameters. However, it does not explicitly state when not to use this tool or mention alternatives among sibling tools. The guidance is clear but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_non_manifold_edgesA
Count and classify non-manifold edges in a mesh.
Reports boundary edges (shared by 1 triangle), T-junction edges
(shared by 3+ triangles), and manifold edges (shared by exactly 2).
This is the diagnostic version of the manifold check -- use it
to understand exactly how many edges are problematic before
deciding whether to repair.
A STEP/STP CAD file is converted first and the count is taken on
the converted mesh, because a non-manifold edge is a defect of
the triangles, not of the shape -- a STEP solid has none to be
defective. So on CAD input this measures KILN'S TESSELLATION,
which is worth knowing (it says whether the conversion came out
clean) and is not a finding about the user's file. ``subject``
says which artifact was measured and ``message`` says it in
words. AGENT CONTRACT: when ``subject`` is
``"kiln_tessellation"``, carry that attribution through to the
user -- never report the count as a verdict on their CAD.
:param file_path: Path to a mesh (.stl, .obj, .glb) or a
STEP/STP CAD file.
:returns: Dict with edge count breakdown, watertight status,
``subject``, ``message``, and (CAD only) ``converted_from``.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden — and delivers exceptionally. It discloses the non-obvious STEP/STP conversion behavior, warns that the count reflects 'KILN'S TESSELLATION' not the user's file, and codifies an 'AGENT CONTRACT' requiring attribution via the subject field. The explicit note that this 'is not a finding about the user's file' is precisely the kind of behavioral nuance that prevents agent misuse.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with a crisp purpose sentence, and each subsequent paragraph addresses a distinct concern (classification semantics, usage timing, CAD caveat, params, returns). The prose is somewhat verbose — the subject/message attribution warning is restated twice — but the repetition serves a genuine safety purpose for agent 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 single-parameter, read-only tool with no annotations and no output schema, the description covers every gap: input file types, return dict contents ('edge count breakdown, watertight status, subject, message, and (CAD only) converted_from'), and an important behavioral edge case (CAD conversion). Nothing needed for correct invocation or interpretation 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 schema's bare 'File Path' title conveys almost nothing, so the description must compensate — and does. It documents accepted formats ('.stl, .obj, .glb') and the additional STEP/STP CAD path, transforming an opaque string param into a fully specified input contract. For a single-parameter tool, this is complete coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence 'Count and classify non-manifold edges in a mesh' pairs a specific verb with a clear resource, and the three-way classification (boundary/T-junction/manifold edges) precisely specifies scope. It distinguishes itself from diagnostic siblings like repair_mesh by explicitly labeling itself 'the diagnostic version of the manifold check,' making its role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage timing: 'use it to understand exactly how many edges are problematic before deciding whether to repair.' It clearly positions itself within a workflow (diagnose before repair), but stops short of naming alternatives or stating explicit when-not-to-use conditions, relying on the reader to infer which sibling does the repairing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_printabilityA
Analyze a 3D model for FDM printing readiness.
Performs deep analysis of an STL or OBJ mesh including overhang
detection, thin wall analysis, bridging assessment, bed adhesion
surface estimation, and support volume estimation. Returns a
printability score (0-100), letter grade (A-F), and actionable
recommendations.
Pass ``material`` (and ``printer_id`` when a printer is
registered) so the warping, thermal-stress, and adhesion checks
run against the actual filament instead of generic PLA defaults.
On the free tier those checks use conservative safe-floor
thresholds; with Kiln Pro they are tuned to the specific
material and printer (kiln3d.com/pricing).
Args:
file_path: Path to an STL or OBJ mesh file.
nozzle_diameter: Printer nozzle diameter in mm (default 0.4).
layer_height: Print layer height in mm (default 0.2).
max_overhang_angle: Maximum overhang angle in degrees before
supports are needed (default 45).
build_volume_x: Optional build volume X dimension in mm.
build_volume_y: Optional build volume Y dimension in mm.
build_volume_z: Optional build volume Z dimension in mm.
material: Material ID for warping / thermal-stress / adhesion
analysis (default ``"pla"``).
printer_id: Optional registered printer whose real geometry
and calibration should inform the analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | pla | |
| file_path | Yes | ||
| printer_id | No | ||
| layer_height | No | ||
| build_volume_x | No | ||
| build_volume_y | No | ||
| build_volume_z | No | ||
| nozzle_diameter | No | ||
| max_overhang_angle | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description covers behavioral aspects: it describes the analysis scope, tier-dependent behavior, and parameter effects on warping/thermal checks. It does not mention side effects or rate limits, but for a read-only analysis tool, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with a summary paragraph and Args section. It is somewhat verbose but front-loaded with the core purpose. Minor redundancy exists (e.g., repeating 'analysis' in both parts), but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (9 params, no output schema), the description explains the analysis performed and return values (score, grade, recommendations). It also covers tier differences. However, it lacks detail on the output structure (e.g., format of recommendations), which would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description provides critical meaning for all 9 parameters. It explains defaults, units, and semantic context (e.g., material ID for warping analysis). This fully compensates for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes a 3D model for FDM printing readiness, specifying analyses (overhang, thin wall, bridging) and output (score, grade, recommendations). This distinguishes it from sibling tools like troubleshoot_print_issue or check_printer_material_compatibility.
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 advises passing material and printer_id for better accuracy and explains free vs Pro tier behavior. However, it does not explicitly contrast with alternatives or specify when not to use this tool, leaving room for improvement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_print_failureA
Analyze a failed print job and suggest possible causes and fixes.
Examines the job record, related events (retries, errors, progress),
and printer state at the time of failure to produce a diagnosis.
Args:
job_id: The failed job's ID from ``job_history`` or ``job_status``.
Returns a structured analysis with likely causes, observed symptoms,
and recommended next steps.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It explains that the tool examines job record, events, and printer state, and produces a diagnosis. However, it does not explicitly state whether it is read-only or if it modifies any state, so a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (5 sentences) and well-structured, with a clear purpose statement, process explanation, args section, and output description. No unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single parameter and lack of output schema, the description adequately covers input and process, and describes the output as a structured analysis. It could be more explicit about the output format, but it is largely 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?
The description adds meaningful context to the single parameter 'job_id' by specifying its source: 'from job_history or job_status'. This goes beyond the schema's minimal definition, though the schema coverage is listed as 0%, the description effectively covers it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: analyze a failed print job and suggest causes/fixes. It specifies the verb (analyze) and resource (failed print job). However, it does not differentiate from sibling tools like 'detect_print_failure' or 'analyze_print_failure_smart', so a 4 is appropriate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention when not to use it. It lacks any conditional or contextual advice, earning a 2.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_print_failure_smartA
Classify a print failure and suggest recovery steps.
Uses heuristics based on error messages, print progress, and
failure history to classify the failure type and generate an
actionable recovery plan.
Args:
progress: Print progress at failure (0.0 - 1.0).
error_message: Error message from the printer or system.
printer_name: Name of the printer that failed.
job_id: Job ID of the failed print.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | No | ||
| progress | No | ||
| printer_name | No | ||
| error_message | No |
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 mentions it uses heuristics and suggests recovery steps, but does not disclose side effects (e.g., whether it modifies state, logs data, or requires specific permissions). The behavioral impact is under-specified.
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 concise 6-line docstring that front-loads the purpose and uses, then lists args efficiently. No redundant or irrelevant sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the tool's inputs and high-level behavior but omits the output format (e.g., how recovery steps are structured). Given no output schema, this gap leaves the agent uncertain about the return value's structure. Still adequate for an analysis tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description's Args section adds meaning for all 4 parameters: progress range (0.0-1.0), error_message, printer_name, job_id. This compensates significantly for the schema lack.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool classifies a print failure and suggests recovery steps, using heuristics based on error messages, progress, and failure history. This distinguishes it from sibling tools like 'analyze_print_failure' (likely simpler) and 'detect_print_failure' (detection only).
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 use when a print failure occurs to get classification and recovery steps, but does not explicitly state when not to use or compare to alternatives. Sibling tools are not mentioned, 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.
analyze_print_fileA
Analyze a G-code file on the printer and extract its metadata.
Reads the file header to extract slicer-embedded metadata such as
material type, estimated print time, temperatures, layer height,
and filament usage. This is especially useful when filenames are
meaningless (e.g. ``test5112.gcode``) and the agent needs to
understand what a file will print.
.. note::
For multi-object .gcode.3mf files, also consider using
``list_plate_objects()`` to see individual objects on the plate.
Args:
filename: Name or path of the file as shown by ``printer_files()``.
Returns a JSON object with:
- ``filename``: the file name
- ``metadata``: extracted metadata (material, time, temps, slicer, etc.)
- ``has_metadata``: whether any metadata was found
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It explains it reads the file header (non-destructive) and lists the metadata extracted. However, it does not explicitly state that the operation is read-only or mention potential side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, well-structured with a note, and front-loaded. Every sentence adds value without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is quite complete for a simple tool: purpose, usage context, input format, and return structure. It could mention error cases or prerequisites, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% coverage, but the description adds meaning by specifying the filename is as shown by 'printer_files()'. This helps the agent locate the correct file.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes a G-code file and extracts metadata. It specifies the verb 'analyze' and resource 'G-code file', and distinguishes from siblings like 'printer_files' and 'list_plate_objects'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use: 'when filenames are meaningless' and recommends an alternative tool ('list_plate_objects') for multi-object files. This provides clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_print_snapshotA
Analyze a webcam snapshot for print monitoring quality.
Checks image brightness, variance, resolution, and format to determine
if the snapshot is usable for print monitoring.
Args:
file_path: Path to the snapshot image file.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description describes the analysis but does not explicitly state that it is read-only or non-destructive. For a tool with no annotations, the burden is on the description to disclose behavioral traits; it partially meets this by describing the checks but omits safety information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences plus an args line. It front-loads the action and contains no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 param, no output schema, no annotations), the description covers the purpose and checks but lacks specification of return value (e.g., score, boolean) and error cases. Moderate completeness for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter file_path is described as 'Path to the snapshot image file,' providing context beyond the schema's type string. With 0% schema description coverage, this compensation is adequate but not exceptional.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes a webcam snapshot for print monitoring quality, listing specific checks (brightness, variance, resolution, format) and the output determination (usability). It distinguishes itself from sibling tools like analyze_print_file by focusing on snapshots.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for webcam snapshots but does not explicitly state when to use this tool vs alternatives (e.g., analyze_print_failure). No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_scad_codeA
Analyze the structure of OpenSCAD code.
Parses parameters, modules, and library imports to understand
the code's architecture. Use this before modifying code to know
what modules exist and what each one does.
Args:
scad_code: OpenSCAD source code.
| Name | Required | Description | Default |
|---|---|---|---|
| scad_code | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden. It discloses that the tool 'parses parameters, modules, and library imports' to understand architecture, implying a read-only analysis. However, it does not explicitly state that it is non-destructive or mention any limitations or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core purpose. The inclusion of an 'Args' section with parameter description is useful, though slightly redundant with the schema. Every sentence contributes valuable information with minimal fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is no output schema, the description should specify the return format or structure to inform the agent's next steps. It mentions understanding architecture but does not describe the output (e.g., list of modules, parameters, imports). This leaves the agent without sufficient guidance on how to use the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description adds crucial meaning by stating 'OpenSCAD source code' for the 'scad_code' parameter. This clarifies what the string should contain beyond the bare type, though further detail like encoding or size limits is absent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Analyze the structure of OpenSCAD code' with a specific verb and resource. It details what is parsed (parameters, modules, library imports) to understand architecture, distinguishing it from sibling tools like 'compile_scad' or 'modify_scad_module'.
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?
Explicitly advises 'Use this before modifying code to know what modules exist and what each one does,' providing clear when-to-use context. It implicitly positions itself as a prerequisite for modification tools, though it does not mention when not to use it or list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_structural_risksA
Analyze an STL mesh for structural weak points.
Goes beyond printability to find **structural** risks:
- **thin_neck**: narrow cross-sections that will snap under load
- **stress_concentration**: abrupt section changes that focus stress
- **cantilever**: unsupported overhanging geometry
- **sharp_corner**: concave edges that initiate cracks
- **insufficient_base**: topple risk from height-to-base ratio
- **weak_layer_adhesion**: overhangs in structurally critical areas
Returns risk locations as (x, y, z) coordinates in mm so agents
can reason about *where* problems are, not just *that* they exist.
:param file_path: Path to the STL file.
:param min_cross_section_mm2: Minimum safe cross-section area (default 4).
:param sharp_angle_threshold_deg: Angle for sharp edge detection (default 60).
:returns: Dict with ``risks`` list, each containing location, severity, and description.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| min_cross_section_mm2 | No | ||
| sharp_angle_threshold_deg | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It explains return format (risks list with locations) but does not disclose whether tool modifies the file, requires permissions, or has side effects. Adequate but not comprehensive.
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?
Description is well-structured with bullet points for risk types and clear sections for returns and parameters. Slightly verbose but efficient overall.
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 complexity (multiple risk types, three parameters, no output schema), description covers key aspects: risks, coordinate return, param details. Could mention output schema or severity scale, but still reasonably 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 has 0% parameter descriptions, but description includes :param section explaining file_path, min_cross_section_mm2 (with default), and sharp_angle_threshold_deg (with default). This adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it analyzes STL mesh for structural weak points, listing specific risk types (thin_neck, stress_concentration, etc.) and contrasting with printability analysis. This distinguishes it from siblings like analyze_printability.
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?
Description implies use for structural analysis beyond printability but does not explicitly state when to use this tool versus alternatives like assess_load_bearing or analyze_warping_risk. No exclusions or when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_warping_riskA
Analyze warping risk for a 3D model based on geometry and material.
Examines the mesh for warping risk factors: large flat surfaces that
tend to curl at corners, tall/narrow geometry prone to thermal
contraction pulling, and sharp base corners that lift. Cross-references
with the material's known warping tendency (from thermal properties).
Returns a risk assessment with:
- risk_level: "low", "moderate", "high", or "critical"
- score_deduction: impact on overall printability score
- large_flat_surfaces: detected flat areas prone to warping
- height_to_base_ratio: geometry aspect ratio risk factor
- material_warping_tendency: material's inherent warp behavior
- recommendations: actionable mitigation advice
Args:
file_path: Path to STL or OBJ file to analyze.
material: Material ID (e.g. "pla", "abs", "petg"). Defaults to PLA.
Used to look up thermal warping tendency.
printer_id: Optional registered printer whose real geometry
and calibration should inform the analysis.
Examples:
analyze_warping_risk("/path/to/model.stl", material="abs")
analyze_warping_risk("/path/to/plate.stl") # defaults to PLA
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | pla | |
| file_path | Yes | ||
| printer_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description describes the analysis and returns a risk assessment, but does not disclose behavioral traits such as read-only nature, required permissions, or computational intensity. It lacks full disclosure of side effects or safety information.
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 well-structured with a clear purpose, details on what it examines, output fields, parameters, and examples. It is concise enough while being thorough; each section adds value, though some wording could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description provides comprehensive information about return fields (risk_level, score_deduction, etc.), parameters with defaults and examples, and the overall workflow. It covers all necessary context for an agent to use the tool 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?
The description adds meaning beyond the schema by explaining file_path as 'Path to STL or OBJ file', material with examples and default, and printer_id with its purpose. This compensates for the schema's lack of descriptions, effectively covering all three parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes warping risk for a 3D model based on geometry and material. It distinguishes itself from sibling tools like 'analyze_printability' by focusing specifically on warping risk factors.
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 explains what the tool does and provides examples, but does not explicitly state when to use this tool over alternatives like 'analyze_printability' or 'analyze_model_geometry'. No when-not or alternative guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
annotate_printB
Add notes to a completed print record (e.g., quality observations, issues).
Args:
job_id: The job ID of the print to annotate.
notes: The annotation text to attach.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | Yes | ||
| job_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the function but does not disclose consequences (e.g., mutability, reversibility, or error handling). The tool modifies a print record, but safety or side effects are unaddressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: a single sentence for the main action, followed by a brief parameter list. No redundant information; every sentence adds value.
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 tool with two required parameters, the description covers the core function and parameter meaning. However, it omits behavior for edge cases (e.g., appending vs. overwriting notes, handling nonexistent print IDs) and does not describe the return value.
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 description includes an 'Args:' section that explains each parameter beyond the bare schema (e.g., 'job_id: The job ID of the print to annotate,' 'notes: The annotation text to attach'). Since the input schema lacks property descriptions, this adds meaningful context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('add notes to a completed print record') and gives examples ('quality observations, issues'). The verb 'annotate' is specific, distinguishing it from recording other outcomes. However, it doesn't explicitly differentiate from siblings like 'record_print_outcome' which may also accept notes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for completed prints but provides no guidance on when to use this tool versus alternatives (e.g., 'record_print_outcome' for structured data). No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_decorationA
Apply a saved decoration to a new model — proven settings, one call.
Loads a previously saved decoration and applies it to the target
model using the exact settings that worked before. Automatically
resolves depth, mode, and image style from the proven recipe.
This is the magic tool — decorations that took many iterations
to perfect can be replayed on any model in one call.
:param name: Decoration name or slug.
:param model_path: Path to the target model (STL or OBJ).
:param material: Override material (empty = use proven or detect
from printer).
:param face: Which face to decorate (auto, top, bottom, etc.).
:param printer_id: Optional printer ID for material detection.
:returns: Dict with decorated model path and settings used.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| face | No | auto | |
| name | Yes | ||
| material | No | ||
| model_path | Yes | ||
| printer_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full disclosure weight — and it delivers. It transparently discloses the inline 3D stage side effect, automatic decimation of oversize meshes, and host-dependent fallback behavior ('in hosts that render MCP Apps panels... attaches a browser stage link for hosts that don't'). It falls short of a 5 only because it omits error/failure behavior and what happens when the named decoration doesn't exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with a punchy one-liner, then the core value prop, then params, then rich behavioral notes — a logical downward-spiral of detail. The only waste is 'This is the magic tool —' which is marketing fluff that doesn't add functional info. The param docs use reST format with helpful types but add a bit of noise. Otherwise, every other sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 params, side-effectful 3D stage, no output schema), the description covers all essential dimensions: purpose, params, return value ('Dict with decorated model path and settings used'), and side effects. The gap is that it doesn't discuss error conditions, performance expectations for large models, or whether the tool mutates the original file. It's thorough, but a few edge-case behaviors would make it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Param semantics are excellent. The description's docstring block provides meaning for all 5 params, even though schema coverage is 0%. It explains name is a 'slug', model_path accepts 'STL or OBJ' formats, material is an 'Override (empty = use proven or detect from printer)', face has values 'auto, top, bottom, etc.', and printer_id is 'for material detection'. This exactly compensates for the empty schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line 'Apply a saved decoration to a new model — proven settings, one call' is a specific verb+resource+scope statement. It's further clarified with 'Loads a previously saved decoration and applies it to the target model using the exact settings that worked before,' clearly distinguishing this from sibling decoration tools like decorate_surface by emphasizing the 'replay a proven recipe' angle.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use: when you have a saved, proven decoration to replay ('proven settings, one call', 'decorations that took many iterations to perfect can be replayed'). However, it never explicitly names an alternative (e.g., 'use decorate_surface for new decorations') or provides when-NOT-to-use guidance. The usage context is clear but implicit rather than explicit, and no exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_design_reinforcementsA
Analyze a mesh for structural risks, then auto-apply fixes.
This is the **one-step design hardening tool** — it runs the full
structural analysis pipeline, then applies every applicable fix:
- **Thin necks** → thickened walls (+material at narrow sections)
- **Sharp corners** → filleted edges (stress concentration eliminated)
- **Insufficient base** → wider base plate (stabilizing geometry added)
- **Cantilevers** → triangular gusset ribs (deflection reduced 3-10x)
Returns a before/after structural score so agents can see the
improvement. Reinforcements that can't be auto-applied (like
``reorient``) are listed in ``skipped`` with guidance.
Requires OpenSCAD for base plate and gusset operations.
:param file_path: Path to the STL file to reinforce.
:param output_path: Output path (defaults to ``<name>_reinforced.stl``).
:param fillet_radius_mm: Fillet radius for sharp corners (default 1.5).
:param wall_thicken_mm: Amount to add to thin walls (default 0.6).
:param base_height_mm: Height of stabilizing base plate (default 2.0).
:returns: Dict with before/after scores, applied/skipped reinforcements.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| output_path | No | ||
| base_height_mm | No | ||
| wall_thicken_mm | No | ||
| fillet_radius_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses multiple behavioral details: auto-applies fixes, specific transformation types (thickened walls, fillets, base plate, gussets), returns before/after scores and skipped list, requires OpenSCAD, and opens an interactive 3D stage with automatic decimation. It doesn't explicitly state whether the original file is modified vs. creating a new one, but the output_path parameter implies output to a new file.
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 lengthy but well-organized, starting with a one-sentence summary followed by bullet lists of fixes and parameters, then an additional note about the 3D stage. Every sentence contributes useful information, especially given the need to compensate for the schema's lack of descriptions. Slightly verbose but justified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (mesh analysis + automatic fixes), no annotations, no output schema, and minimal schema descriptions, the description covers the essential aspects: inputs, outputs, dependencies, skipped items, and interactive stage behavior. It lacks error handling details and exact return structure, but overall provides enough context for an agent to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does so thoroughly, documenting all five parameters with their meanings and defaults: file_path, output_path, fillet_radius_mm, wall_thicken_mm, and base_height_mm. This adds significant semantic value beyond the bare types and defaults in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb-resource combination: 'Analyze a mesh for structural risks, then auto-apply fixes.' It further distinguishes itself as 'the one-step design hardening tool' that runs the full analysis pipeline and applies every applicable fix, setting it apart from siblings that likely only analyze or recommend.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when you want both analysis and automatic fixes in one step. It also notes what it does NOT do ('Reinforcements that can't be auto-applied (like reorient) are listed in skipped with guidance'), giving context for limitations. However, it does not explicitly name alternatives like analyze_structural_risks or recommend_design_reinforcements, so an agent might not know when to choose those instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arrange_parts_on_plateA
Pack multiple STL files onto a virtual build plate.
Uses greedy bottom-left bin-packing (largest parts first) to
efficiently arrange parts with configurable spacing. Reports
which parts fit, which overflow, and plate utilization.
Supports printing multiple copies of parts via the copies parameter.
:param file_paths: JSON array of file paths, e.g. ``["/tmp/a.stl", "/tmp/b.stl"]``.
:param plate_width_mm: Build plate width in mm (default 256).
:param plate_depth_mm: Build plate depth in mm (default 256).
:param spacing_mm: Minimum gap between parts in mm (default 5).
:param copies: Optional JSON dict of filename->count, e.g. ``{"part.stl": 3}``.
:param printer_id: Optional supported printer model id. When
provided, printer intelligence supplies the plate size.
:returns: Dict with arranged_parts, overflow_parts, plate_utilization, summary.
| Name | Required | Description | Default |
|---|---|---|---|
| copies | No | ||
| file_paths | Yes | ||
| printer_id | No | ||
| spacing_mm | No | ||
| plate_depth_mm | No | ||
| plate_width_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden of behavioral disclosure. It describes the algorithm and output but does not state side effects (e.g., file modifications, permissions required). The tool appears to be a read-only arrangement, but this is not explicitly confirmed.
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 well-structured with a summary, algorithm explanation, and parameter list. It is informative but slightly verbose; however, the detail is justified given the lack of schema descriptions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all parameters, algorithm, and output keys. It lacks explanations of error handling (e.g., missing files) and prerequisites, but overall it provides sufficient context for a tool with no output schema and no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides detailed parameter descriptions in a docstring format, including defaults, examples, and expected formats (e.g., JSON arrays for file_paths, dict for copies). This adds significant value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Pack multiple STL files onto a virtual build plate.' It specifies the verb 'pack' and the resource 'STL files onto a build plate,' distinguishing it from sibling tools like 'auto_arrange_parts_on_plate' by emphasizing configurable parameters.
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 explains the algorithm and what the tool reports but does not explicitly state when to use this tool versus alternatives like 'auto_arrange_parts_on_plate.' It lacks guidance on context or exclusions, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assess_load_bearingA
Analyze load-bearing characteristics of a mesh from its geometry.
Infers structural behavior by analyzing surface normals, shape type,
and cross-section distribution:
- **primary_load_axis**: which direction the part resists force
- **load_surfaces**: which surfaces bear load (with area fractions)
- **weak_axis**: the most vulnerable direction for failure
- **recommended_print_orientation**: how to orient for maximum strength
- **layer_direction_concern**: how FDM layers affect structural integrity
This is the difference between "PLA is good for prototypes" (lookup)
and "this bracket should be printed on its side because the load path
crosses layer boundaries" (geometric reasoning).
:param file_path: Path to the STL file.
:returns: Dict with load analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description bears full burden. It describes the analysis outputs but does not disclose whether the tool is read-only, modifies the file, has side effects, or requires specific file validity. A read-only analysis tool should state 'does not modify the file' for full transparency.
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 front-loaded with a clear summary and bulleted outputs, then a clarifying example. The example sentence is slightly verbose but adds value. Overall efficient for the detail provided.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains the return dictionary keys and the reasoning approach. It covers what the tool does and the main input requirement. Missing error conditions or limitations, but for a single-parameter tool, it is reasonably 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?
The only parameter 'file_path' is described as 'Path to the STL file', adding format specificity beyond the schema's 'File Path'. However, it does not clarify if the path must be local or remote, or if file existence is checked. With 0% schema coverage, the description partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes load-bearing characteristics from mesh geometry. It lists specific outputs (primary_load_axis, load_surfaces, etc.) and contrasts with simple material lookup, distinguishing it from sibling tools like analyze_mesh_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?
The description implies use when geometric reasoning is needed (e.g., 'this bracket should be printed on its side'), but does not explicitly state when not to use or suggest alternative tools. The example helps contextualize, but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_original_designA
Run a ruthless audit of an original design before printing.
Combines design briefing, prompt enhancement, mesh validation,
printability scoring, orientation analysis, advanced diagnostics,
and regeneration feedback into a single report.
Use this after generating or modeling a new part to answer:
"Is this genuinely ready to print, and if not, what exact changes
should the agent make next?"
Args:
file_path: Path to STL or OBJ file.
requirements: Functional requirements the design must satisfy.
material: Optional material constraint (e.g. "petg").
printer_model: Optional printer model ID (e.g. "bambu_a1").
build_volume_x: Optional build volume X override in mm.
build_volume_y: Optional build volume Y override in mm.
build_volume_z: Optional build volume Z override in mm.
nozzle_diameter: Printer nozzle diameter in mm.
layer_height: Layer height in mm.
max_overhang_angle: Supportless overhang threshold in degrees.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | ||
| file_path | Yes | ||
| layer_height | No | ||
| requirements | Yes | ||
| printer_model | No | ||
| build_volume_x | No | ||
| build_volume_y | No | ||
| build_volume_z | No | ||
| nozzle_diameter | No | ||
| max_overhang_angle | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden. It details the internal steps (design briefing, mesh validation, etc.) and indicates the output is a single report. It does not mention side effects like file modification, but given the audit nature, it is likely read-only. The description adds significant context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficient: a clear overview, a usage sentence, and a structured parameter list. Every sentence adds value, and the structure is easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 10 parameters and no output schema, the description explains inputs and the nature of the output (a report answering readiness). However, it lacks details on the report format (structured vs. text) and does not specify if the tool modifies any files. Still, it covers the essential functionality well.
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 description's 'Args' section adds meaningful descriptions for all 10 parameters, including examples (e.g., 'petg', 'bambu_a1') and units (e.g., degrees for max_overhang_angle). The input schema only provides types and defaults, so the description enriches understanding substantially.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Run a ruthless audit of an original design before printing.' It lists the specific aspects combined into a report and answers a precise question. No other sibling tool has an identical purpose; this is a comprehensive audit distinct from more focused analysis tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'after generating or modeling a new part.' It also frames the question the tool answers. However, it does not mention when not to use it or provide alternatives, which would improve guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auto_arrange_parts_on_plateA
Calculate non-overlapping XY positions for multiple parts on a print plate.
Use this **before** :func:`compose_multicolor_3mf` when you have multiple
separate objects (e.g., two coasters) to print in one job. Parts that
share the same ``group`` index are treated as a multi-color unit and
placed at the *same* XY position (they overlap intentionally).
Returns a list of positioned part specs ready to pass directly to
``compose_multicolor_3mf``.
Arrangement strategy (free tier): simple left-to-right row layout. For
maximum plate density (2D bin-packing), use kiln-pro.
Example -- two coasters, each with a body + QR layer::
positioned = auto_arrange_parts_on_plate(part_specs=[
{"stl_path": "/tmp/c1_body.stl", "extruder": 1, "group": 0, "material": "PLA Grey"},
{"stl_path": "/tmp/c1_qr.stl", "extruder": 2, "group": 0, "material": "PLA Black"},
{"stl_path": "/tmp/c2_body.stl", "extruder": 1, "group": 1, "material": "PLA Grey"},
{"stl_path": "/tmp/c2_qr.stl", "extruder": 2, "group": 1, "material": "PLA Black"},
], plate_width=256, plate_depth=256, gap_mm=5)
# -> each part now has "x", "y" set; pass to compose_multicolor_3mf
Args:
part_specs: List of dicts, each with:
* ``stl_path`` (str) -- absolute path to the STL
* ``extruder`` (int) -- 1-indexed AMS slot
* ``group`` (int, optional) -- parts sharing a group get the same
XY position (multi-color unit). Default: each part is its own group.
* ``name`` (str, optional) -- label in slicer
* ``color`` (str, optional) -- hex preview color
* ``material`` (str, optional) -- filament label (also triggers
compatibility checks when passed to compose_multicolor_3mf)
plate_width: Print plate X dimension in mm (default 256 for
legacy callers without a printer id).
plate_depth: Print plate Y dimension in mm (default 256 for
legacy callers without a printer id).
gap_mm: Minimum spacing between groups in mm.
printer_id: Optional supported printer model id. When
provided, printer intelligence supplies the plate size.
Returns:
Dict with ``success``, ``parts`` list (each part has ``x``, ``y`` set),
``group_count``, and ``message``.
| Name | Required | Description | Default |
|---|---|---|---|
| gap_mm | No | ||
| part_specs | Yes | ||
| printer_id | No | ||
| plate_depth | No | ||
| plate_width | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It describes arrangement strategy, group handling, defaults, and return format. Does not mention side effects or authentication, but those are not needed for this calculation tool. Slight lack of detail on error cases but overall transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (overview, usage, example, args, returns). Slightly verbose with docstring-style formatting, but every part is informative. Could be shortened without losing clarity.
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 5 parameters, no output schema, and sibling tools, the description covers input format, output format (dict with success, parts, group_count, message), and usage context. Complete enough for correct agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description compensates fully with a detailed Args section explaining each parameter, including nested fields of part_specs, defaults, and purpose of printer_id. Adds significant meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool calculates non-overlapping XY positions for parts on a print plate. The verb 'calculate' and resource 'positions' are specific. Although it doesn't explicitly distinguish from sibling 'arrange_parts_on_plate', the name and description imply automatic arrangement.
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?
Explicitly states when to use: before compose_multicolor_3mf with multiple separate objects. Also provides alternative: for maximum density, use kiln-pro. Explains group index behavior for multi-color units.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auto_color_by_heightA
Split a 3D model into horizontal color zones by Z-height.
Divides the model's height into N equal bands. Faces that
cross a band edge are cut exactly at it, so the line where two
colors meet is the straight horizontal line the bands name —
never a sawtooth of whole faces, on any tessellation. The
cut faces are capped at the band planes, so each zone of a
closed model is itself a closed solid ready to slice.
Produces separate STL files per zone and (if available) a
multicolor 3MF ready for AMS/MMU printers.
Zero cloud dependencies — pure geometry.
:param input_path: Path to a binary STL file.
:param num_colors: Number of color zones (default 4).
:param color_palette: List of hex colors (e.g.
``["#FF0000", "#00FF00"]``). Defaults to white/red/black/grey.
:returns: Dict with zone STL paths, hex colors, face counts
(boundary faces are cut and capped, so counts can exceed
the input's), per-zone ``watertight`` verdicts, AMS slot
mapping, weight estimates, and optional 3MF path.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| input_path | Yes | ||
| num_colors | No | ||
| color_palette | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and excels: it details precision cutting of crossing faces, capping behavior, per-zone closed-solid output, generation of STL/3MF files, zero cloud dependencies, and the inline 3D stage including automatic decimation of oversized meshes and browser fallback. This is exemplary behavioral disclosure.
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 opens with a strong one-line summary followed by tightly organized behavioral details and a clearly labeled 'INLINE 3D STAGE' callout. It's longer than typical but every sentence contributes distinct information; slight wordiness in the inline-stage section keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there's no output schema and no annotations, the description goes far: it documents parameters, return structure, file formats, and interactive viewer behavior. It's complete for the tool's complexity, though the return dict's edge cases (e.g., what happens with fewer colors than requested) are left speculative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate — and it does via reST-style parameter docs: binary STL for input_path, default 4 for num_colors, and hex list defaults for color_palette, plus returns documentation. Loses a point for not noting valid ranges, format validation, or error behavior, but it adequately makes up for the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Split[s] a 3D model into horizontal color zones by Z-height' — a specific verb+resource+scope. It's readily distinguishable from siblings like auto_color_by_region conceptually, but it doesn't explicitly reference or contrast with that sibling, so it doesn't fully earn 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?
Usage context is implied through the description of Z-height banding and the 3MF output for AMS/MMU printers, suggesting when this tool is appropriate. However, there is no explicit 'use this instead of X' guidance, no exclusions, and no mention of when to choose a region-based or alternative coloring tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auto_color_by_regionA
Split a 3D model into color zones by geometric region.
Supports multiple assignment methods:
- ``"z_height"``: horizontal bands by Z-height (default) —
faces crossing a band edge are cut exactly at it and the
cuts are capped, so the color boundary is a straight line
on any tessellation and each zone of a closed model is
itself a closed solid ready to slice
- ``"normal"``: group by face normal direction
(top / bottom / sides)
- ``"random"``: random face assignment for artistic prints
The 3MF takes whichever form actually prints: z_height bands
become one closed solid per color; normal/random colorings
follow the surface, so the mesh stays ONE watertight object
with the colors painted per triangle — slicers that support
color import (BambuStudio, OrcaSlicer) offer to map each
color to a filament on open.
Zero cloud dependencies — pure geometry.
:param input_path: Path to a binary STL file.
:param num_colors: Number of color zones (default 4).
:param method: Assignment method — ``"z_height"``,
``"normal"``, or ``"random"``.
:param color_palette: List of hex colors. Defaults to
white/red/black/grey.
:returns: Dict with zone STL paths, hex colors, face counts,
AMS slot mapping, weight estimates, and optional 3MF path.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | z_height | |
| input_path | Yes | ||
| num_colors | No | ||
| color_palette | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It thoroughly explains the behavior for each method, including edge cutting, capping, closed solids for z_height, surface painting for others, and slicer compatibility. It also discloses side effects like the inline 3D stage, automatic decimation, and dependency-free geometry. This goes beyond typical transparency.
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 long but each section adds value: method explanations, technical outcomes, slicer guidance, and the stage note. It is well-structured with bullet-like formatting, though slightly verbose. Every sentence earns its place, and it is front-loaded with core functionality before diving into details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple assignment methods, variable output formats, and an interactive stage side effect), the description is remarkably complete. It covers prerequisites (input_path), return values (zone STL paths, colors, face counts, AMS mapping, weights, 3MF), and post-behavior (opens 3D stage). Since there is no output schema, the description bears full responsibility, and it fulfills it thoroughly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description fully explains each parameter. It defines input_path as a binary STL path, num_colors with default 4, method with allowed values and defaults, and color_palette with default hex list. It also describes the return dict structure, adding meaning beyond the schema's sparse property definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Split a 3D model into color zones by geometric region.' It specifies a precise verb (split), a resource (3D model), and the method (by region), and distinguishes itself from sibling tools like auto_color_by_height by covering multiple assignment methods (z_height, normal, random).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides detailed context on when to use the tool, explaining the different methods and their outcomes (closed solids vs. watertight object). It does not explicitly name alternatives or exclusion cases, but it clearly implies when it is appropriate, and the distinction from auto_color_by_height is evident from the title and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auto_orient_modelA
Find the optimal print orientation for a 3D model.
Evaluates multiple rotations of the model and scores each based
on bed adhesion, support requirements, print height, and
overhang coverage. Optionally applies the best orientation and
writes a reoriented STL file.
Args:
file_path: Path to an STL or OBJ mesh file.
candidates: Number of candidate orientations to evaluate
(default 24).
nozzle_diameter: Printer nozzle diameter in mm (default 0.4).
apply: If True, apply the best orientation and write the
reoriented STL to disk.
output_path: Output path for the reoriented STL. Only used
when ``apply`` is True. Defaults to
``<input>_oriented.stl``.
| Name | Required | Description | Default |
|---|---|---|---|
| apply | No | ||
| file_path | Yes | ||
| candidates | No | ||
| output_path | No | ||
| nozzle_diameter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behaviors (evaluation, scoring, optional write) but lacks details on side effects (e.g., does writing a new STL overwrite the original? Permissions needed?). Without annotations, more explicit behavioral context would improve transparency.
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 well-structured with a clear first sentence followed by bullet-like parameter explanations. It is concise, with no redundant or irrelevant information. Every sentence serves a 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?
The description covers the main functionality and parameters, but lacks detail on return values (no output schema) and scoring criteria. For a tool with moderate complexity and no annotations, more completeness on output behavior would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must explain parameters. It does so for all five: file_path, candidates, nozzle_diameter, apply, output_path, including defaults and conditional use. This adds significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose ('Find the optimal print orientation for a 3D model') and details how it works (evaluates rotations, scores based on adhesion, supports, etc.). It distinguishes itself from siblings like 'optimize_print_orientation' by specifying the evaluation criteria and optional file writing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (when needing optimal orientation) but does not explicitly state when not to use or mention alternatives. Given sibling tools like 'optimize_print_orientation' and 'analyze_model_geometry', more explicit guidance would help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
await_generationA
Wait for a generation job to complete and return the final status.
Polls the provider until the job reaches a terminal state or the
timeout is exceeded. Useful for agents that want to block until
a model is ready.
Args:
job_id: Job ID from ``generate_model``.
provider: Provider that owns the job.
timeout: Max seconds to wait for generation (default 600 = 10 min).
poll_interval: Seconds between polls (default 10).
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| timeout | No | ||
| provider | No | meshy | |
| poll_interval | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It clearly explains the polling behavior, terminal state condition, timeout, and blocking nature. It does not disclose what happens on timeout (e.g., exception or status), but overall provides good transparency.
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 paragraph with a structured Args section. It is relatively concise but could be slightly more compact. It front-loads the purpose and then details parameters, which is good.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple but the description lacks detail on the return value (final status) - e.g., format or possible values. It does not explain error handling or timeout behavior. Given no output schema, this is a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It lists all 4 parameters with explanations: job_id is required, provider defaults to 'meshy', timeout defaults to 600 seconds, poll_interval defaults to 10 seconds. This adds significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to wait for a generation job to complete and return the final status. It uses specific verbs like 'Wait', 'polls', and 'block', and distinguishes from sibling tools like 'generation_status' by emphasizing synchronous blocking behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: 'Useful for agents that want to block until a model is ready.' It implies when to use this tool (synchronous waiting) but does not explicitly state when not to use it or mention alternatives like polling via 'generation_status'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
await_print_completionA
Wait for the current print to finish and return the final status.
Polls the printer (or a specific queued job) until it reaches a
terminal state: completed, failed, cancelled, or the timeout is
exceeded. This lets agents fire-and-forget a print and pick up the
result later without managing their own polling loop.
Args:
job_id: Optional job ID from ``submit_job()``. When provided,
tracks that specific job through the queue/scheduler. When
omitted, monitors the printer directly for idle/error state.
timeout: Maximum seconds to wait (default 7200 = 2 hours).
poll_interval: Seconds between status checks (default 15).
brief_id: Optional saved-goal id from ``design_session``. When
the brief resolves, the terminal-outcome response gains a
``design_goal`` block with the design's duty / environment /
safety notes — so the agent surfacing the print result can
answer "did this match the goal?" without a separate
lookup. Best-effort: missing kiln-pro silently skips.
Returns a dict with ``outcome`` (completed / failed / cancelled /
timeout), final printer state, elapsed time, completion percentage
history, and (when ``brief_id`` resolves) a ``design_goal`` block.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | No | ||
| timeout | No | ||
| brief_id | No | ||
| poll_interval | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully bears the burden of behavioral disclosure. It details the polling behavior, terminal states, timeout, and return structure (outcome, final state, elapsed time, completion history, optional design_goal block). It also notes best-effort for brief_id. This is comprehensive.
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 well-structured with a purpose statement, behavior paragraph, and parameter docstring. It is relatively concise given the amount of information, though slightly longer than minimal. Every sentence adds value, but could be tightened slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a polling tool with optional parameters and no output schema, the description covers the return value format thoroughly. It addresses the main use case, optional features, and edge cases like timeout. It is complete for an agent to understand and use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains each parameter's purpose and effect: job_id (track specific job vs. monitor printer), timeout (max wait), poll_interval (status check frequency), and brief_id (adds design_goal if resolves). This adds significant meaning beyond the schema's type and default values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Wait for the current print to finish and return the final status.' It uses specific verbs ('await', 'polls') and resource ('print completion'), and distinguishes from sibling tools by focusing on blocking wait versus fire-and-forget, which differentiates it from monitoring or cancellation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (fire-and-forget, avoid manual polling) and explains the optional job_id and brief_id parameters. However, it does not explicitly state when NOT to use it or compare with alternatives like monitor_print, so it lacks explicit exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backup_databaseA
Back up the Kiln database with optional credential redaction.
Creates a copy of the SQLite database. By default, sensitive fields
(API keys, access codes, payment refs) are replaced with "REDACTED"
in the backup.
Args:
output_path: Destination file path. Defaults to
``~/.kiln/backups/kiln-YYYYMMDD-HHMMSS.db``.
redact: If ``True`` (default), redact credentials in the backup.
| Name | Required | Description | Default |
|---|---|---|---|
| redact | No | ||
| output_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes that a copy of SQLite database is created and sensitive fields are redacted by default. No annotations provided, so description carries full burden. It adds basic behavioral details but omits potential side effects like database locking or performance impact.
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?
Description is concise and front-loaded with purpose. The Args section adds clarity but is slightly formal. No wasted sentences; every sentence contributes 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 2 parameters, no output schema, and no annotations, the description covers purpose, default behavior, and both parameters adequately. It lacks error scenarios or prerequisites but is sufficient for basic usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description compensates well. It explains output_path default pattern and redact default and meaning. This adds significant value beyond the schema's bare types and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Back up the Kiln database with optional credential redaction,' using specific verb and resource. Among sibling tools, none are database backup, so it is well-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives or when not to use it. With hundreds of sibling tools, lack of usage context makes it hard for an agent to select this tool appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bed_level_statusA
Check bed leveling status and whether leveling is needed.
Args:
printer_name: Target printer. Omit for the default printer.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It correctly indicates a non-destructive read operation, but does not disclose any side effects, permissions, or behavioral details beyond the basic function.
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 highly concise with two short sentences and a brief args section. Every word adds value, with no redundancy or unnecessary detail.
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 status check with one optional parameter and no output schema, the description is adequate. It explains what the tool does and the single parameter. However, it could mention the return format or status indicators.
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 description adds meaningful context to the single parameter 'printer_name' beyond the schema (which only provides type and default). It clarifies the purpose and default behavior, compensating for the 0% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Check' and clearly states the resource 'bed leveling status' and what it determines ('whether leveling is needed'). It effectively distinguishes from sibling 'trigger_bed_level' which performs a different action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for checking leveling status but provides no explicit guidance on when to use this tool versus alternatives. There is no mention of prerequisites, limitations, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boolean_mesh_opA
Perform a CSG boolean operation on two or more STL meshes.
Uses OpenSCAD's boolean engine to compute:
- **union**: combine multiple bodies into one
- **difference**: subtract subsequent bodies from the first
- **intersection**: keep only the overlapping region
Requires OpenSCAD installed on the system.
**Use cases:**
- Subtract a cylinder from a block to create a hole
- Combine multiple parts into a single printable body
- Create complex shapes from simple primitives
:param operation: ``"union"``, ``"difference"``, or ``"intersection"``.
:param file_paths: List of STL file paths (minimum 2).
:param output_path: Output path (defaults to a temp file).
:returns: Dict with result path, operation, and triangle count.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | ||
| file_paths | Yes | ||
| output_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does a good job: it discloses the OpenSCAD dependency, output file behavior (defaults to temp), return values, and the inline 3D stage side effect with decimation behavior. It could add more about failure modes or file overwrite semantics, but it provides substantial transparency.
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 front-loaded with the main purpose, then uses headings and bullet points to organize operation types, use cases, params, return, and the 3D stage note. Every sentence adds value and the structure makes it easy 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 complex mesh operation tool, the description covers the operation types, external dependency (OpenSCAD), parameter semantics, return format, and the unique inline stage behavior. No output schema exists, but the return dict is described. This is comprehensive for the tool's complexity.
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?
Despite the schema having zero parameter descriptions, the docstring fully explains each parameter: operation's allowed values, file_paths requiring a minimum of 2, and output_path defaulting to temp. It also explains the semantic effect of each operation choice.
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 starts with 'Perform a CSG boolean operation on two or more STL meshes', which clearly identifies the specific verb and resource. It enumerates the three operation types (union, difference, intersection) and provides concrete use cases, distinguishing it from sibling tools like merge_stl.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit use cases (e.g., subtract cylinder from block, combine parts) that clarify when to use this tool. However, it does not mention alternative tools or when not to use it, so it stops short of a full exclusion discussion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browse_modelsB
Browse Thingiverse models by popularity, recency, or category.
Args:
browse_type: One of "popular", "newest", or "featured".
page: Page number (1-based, default 1).
per_page: Results per page (default 10, max 100).
category: Optional category slug to filter by (e.g. "3d-printing",
"art"). Use ``list_categories`` to see available slugs.
Returns model summaries similar to ``search_models``.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| category | No | ||
| per_page | No | ||
| browse_type | No | popular |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose all behavioral traits. It states the basic behavior and return similarity to search_models, but omits details about side effects, authentication needs, rate limits, or pagination limits beyond per_page max.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, covering the tool's purpose, parameters, and a note on related tools in a compact block. The structure (paragraph with inline arguments) is efficient, though not highly formatted.
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 4 parameters, no output schema, and no annotations, the description covers the essential input semantics and references list_categories. It lacks return format details beyond a vague reference to search_models, which limits completeness for an agent needing to process 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 coverage is 0%, so the description carries the burden. It explains browse_type (three options), page, per_page (default and max), and category with an example slug. It adds value beyond the schema but does not fully define all parameter nuances (e.g., behavior of default values).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (browse) and the resource (Thingiverse models) with specific sorting criteria (popularity, recency, category). It differentiates from 'list_categories' by mentioning that tool for category slugs. However, it does not explicitly distinguish from sibling 'search_models' beyond noting similar return format.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use the tool (browsing by type/ category) and references 'list_categories' for valid slugs. It lacks explicit guidance on when not to use this tool (e.g., versus searching) or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_generation_promptA
Build a design-aware generation prompt for original 3D creation.
This is the best pre-generation tool for original designs. It takes
a natural-language idea and appends manufacturing constraints,
printer-fit limits, and material guidance so text-to-3D backends
receive a prompt grounded in real printability constraints.
When provider is specified, the prompt length is optimized for that
backend. Use provider="openscad" for maximum constraint injection
(100K chars), "meshy" for lean prompts (600 chars), or omit for
the default limit.
Args:
requirements: Natural language description of the desired part.
material: Optional material override (e.g. "petg").
printer_model: Optional printer model ID (e.g. "bambu_a1").
provider: Optional generation provider (e.g. "openscad", "meshy",
"gemini"). Controls prompt length budget.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | ||
| provider | No | ||
| requirements | Yes | ||
| printer_model | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool appends manufacturing constraints, printer-fit limits, and material guidance, and that prompt length is optimized per provider. It does not mention return format or side effects, but for a stateless builder, it is fairly transparent about its 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?
The description is well-organized, starting with the core purpose, then usage guidelines, then parameters. Every sentence adds value; there is no redundancy or fluff. It is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose and parameters well but lacks explicit mention of return value (e.g., the built prompt string) and does not address error cases or prerequisites. For a tool that outputs a prompt, the omission of return format is a gap given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must add meaning. It describes each parameter: requirements (natural language description), material (optional override with example), printer_model (optional with example), provider (optional, controls prompt length budget). These descriptions provide essential semantics beyond bare types.
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 'Build a design-aware generation prompt for original 3D creation' and positions it as 'the best pre-generation tool for original designs', clearly identifying the verb (build) and resource (generation prompt) with a specific scope (original designs), distinguishing it from siblings like build_parametric_prompt or improve_generation_prompt.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly recommends use for original designs and explains provider-specific length optimization with examples (openscad, meshy, gemini), providing clear context. It does not directly state when not to use it or name alternatives, but the focus on original design implies exclusion of other tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_material_overridesA
Auto-generate slicer override dict for a specific material.
Combines material thermal data (from the material database) with
printer-specific tuning (from printer intelligence) to produce a
ready-to-use JSON override dict for ``reslice_with_overrides`` or
``run_reslice_and_print``.
This is the key tool for material switching — call it to get the
correct temperatures, speeds, and retraction settings when changing
from one material to another.
Example workflow::
# 1. Get overrides for PETG on your printer
overrides = build_material_overrides("petg", "bambu_a1")
# 2. Reslice and print with those overrides
run_reslice_and_print(model_path, overrides=json.dumps(overrides["overrides"]))
Args:
material_id: Target material (e.g. ``"petg"``, ``"tpu"``).
printer_id: Optional printer model for printer-specific tuning.
If omitted, uses material database defaults.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_id | No | ||
| material_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; the description discloses it auto-generates and combines data to produce a JSON dict. It does not mention side effects, error handling, or permissions. The behavior is mostly implied but lacks deep transparency.
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 well-structured with a summary, details, and an example. It is relatively concise but the code block adds length; however, it adds value for understanding the workflow.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and moderate complexity, the description explains input, output purpose, and usage in a workflow. It covers the essential context but omits error handling and edge cases.
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?
With zero schema description coverage, the description adds meaning by explaining material_id as the target material and printer_id as an optional printer model. It provides examples and clarifies behavior when omitted, though it doesn't specify allowed values or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool auto-generates a slicer override dict for a specific material, combining material thermal data with printer-specific tuning. It distinguishes itself from siblings as the key tool for material switching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit example workflow and states it is the key tool for material switching, giving clear when-to-use guidance. However, it does not explicitly mention when not to use or contrast with alternatives like get_material_slicing_profile.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_parametric_promptA
Build a prompt optimized for parametric OpenSCAD code generation.
Returns an enhanced prompt with OpenSCAD-specific instructions that
guide AI to produce well-structured parametric code with named
variables, descriptive comments, and material-aware design limits.
Use this instead of build_generation_prompt when you want the AI to
generate editable OpenSCAD code rather than a mesh file.
Args:
requirements: Natural language description of the desired part.
material: Optional material override (e.g. "petg").
printer_model: Optional printer model ID (e.g. "bambu_a1").
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | ||
| requirements | Yes | ||
| printer_model | No |
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 explains the tool returns an enhanced prompt with OpenSCAD-specific instructions for structured code, named variables, comments, and material-aware limits. This adds behavioral context beyond the basic purpose, though it does not cover potential side effects or performance implications.
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 compact, with the main purpose in the first sentence and a clear usage directive in the second paragraph. It avoids redundancy and is front-loaded, though the phrase 'enhanced prompt' appears twice.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema, the description does not specify the return type (e.g., a string). It does cover the tool's function and parameters adequately for a simple generation tool, but omitting the output format leaves room for ambiguity. The contrast with one sibling helps, but more sibling differentiation could improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% coverage (no parameter descriptions), so the description must compensate. It briefly explains each parameter: 'requirements: Natural language description of the desired part,' 'material: Optional material override (e.g. petg),' and 'printer_model: Optional printer model ID (e.g. bambu_a1).' This adds meaning beyond the raw schema types but is not highly detailed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool 'Build a prompt optimized for parametric OpenSCAD code generation,' which is a specific verb+resource combination. It directly contrasts with the sibling tool build_generation_prompt, indicating distinct functionality for generating editable OpenSCAD code versus mesh files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: 'Use this instead of build_generation_prompt when you want the AI to generate editable OpenSCAD code rather than a mesh file.' This provides clear usage context and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cache_designC
Cache a 3D design file for faster access and version tracking.
Args:
file_path: Path to the design file to cache.
label: Human-readable label for the cached design.
material: Intended material for this design.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | ||
| material | No | ||
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the tool 'caches for faster access and version tracking' but does not disclose behavioral traits like whether it overwrites existing caches, requires authentication, has storage limits, or if version tracking is automatic. The description is too brief to provide meaningful transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise (two sentences plus parameter list) but lacks structure. It front-loads the purpose, which is good, but the parameter descriptions are in a list format inside a docstring, which is acceptable. However, it could be improved by including a brief example or clarifying the output. It earns its place but barely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters, no annotations, and no output schema, the description is incomplete. It does not explain what happens after caching (e.g., return value, side effects like file storage location), whether the operation is reversible, or any errors that might occur. For a tool with moderate complexity, more detail is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It lists all three parameters with basic explanations: 'Path to the design file to cache', 'Human-readable label for the cached design', 'Intended material for this design'. These add meaning beyond the schema's titles, but are still minimal. For example, 'label' and 'material' could benefit from constraints or examples. Baseline 3 is appropriate given the descriptions are present but not detailed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: caching a 3D design file for faster access and version tracking. It uses a specific verb ('Cache') and resource ('3D design file'), and the mention of 'faster access and version tracking' differentiates it from general caching utilities. However, it doesn't explicitly distinguish from similar tools like 'cache_design_with_source' or 'cache_model', but the context helps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., cache_model or cache_design_with_source). It also lacks any 'when not to use' or prerequisites. The tool appears to be for storing a design for faster access, but no context is given about when caching is appropriate or when to use other caching tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cache_design_with_sourceB
Cache a design file alongside its parametric source code.
Stores the STL/3MF file in the design cache and attaches the
OpenSCAD source code and generation prompt so the design can
be re-generated or tweaked later.
Args:
file_path: Path to the design file (STL, 3MF, etc.).
scad_source: OpenSCAD source code that produced this file.
generation_prompt: The prompt used to generate the design.
provider: Generation provider name (e.g. "openscad", "gemini").
tags: Optional tags for search.
filament_type: Material type (e.g. "PLA", "PETG").
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| provider | No | openscad | |
| file_path | Yes | ||
| scad_source | Yes | ||
| filament_type | No | ||
| generation_prompt | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must convey behavioral traits. It describes the action (storing and attaching), implying a write operation, but does not disclose details such as whether existing cache entries are overwritten, authentication requirements, side effects, or return values. The description provides basic transparency but leaves gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, beginning with a one-line summary followed by a short explanatory paragraph and a properly formatted argument list. Every sentence adds value, and there is no unnecessary content. It could be slightly more condensed but remains well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 6-parameter complexity, no output schema, and no annotations, the description covers the core functionality but does not fully equip an agent. It lacks return value details, overwrite behavior, and retrieval instructions. While it explains what is stored, it omits the outcome of the operation and post-call state, limiting completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage for parameters, so the description must compensate. It lists all 6 parameters with brief explanations (e.g., 'file_path: Path to the design file'), which adds meaning beyond the schema's titles. However, it lacks details like path format, file existence requirements, or constraints on provider values. The explanations are adequate but minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Cache a design file alongside its parametric source code.' It specifies the verb 'Cache', the resource 'design file' and 'parametric source code', and explains that it stores the STL/3MF file and attaches the OpenSCAD source and prompt. This distinguishes it from sibling tools like 'cache_design' which likely cache only the 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 lacks any guidance on when to use this tool versus alternatives such as 'cache_design' or 'cache_model'. It does not mention prerequisites, conditions, or when to avoid using it. The only implicit differentiation is the inclusion of source code, but no explicit 'when-to-use' or 'when-not-to-use' instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cache_modelA
Add a 3D model file to the local cache for reuse across jobs.
Copies the file into ``~/.kiln/model_cache/`` and stores metadata
(source, prompt, tags, dimensions) in the database. Duplicate files
are detected automatically by SHA-256 hash.
Args:
file_path: Path to the model file on disk.
source: Origin — ``"thingiverse"``, ``"myminifactory"``, ``"meshy"``,
``"openscad"``, ``"upload"``, etc.
source_id: Marketplace thing ID or generation job ID.
prompt: For generated models, the text prompt used.
tags: Comma-separated tags (e.g. ``"benchy,calibration,test"``).
dimensions: JSON object with bounding box in mm, e.g.
``'{"x": 60, "y": 31, "z": 48}'``.
metadata: Optional JSON object with extra data.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| prompt | No | ||
| source | Yes | ||
| metadata | No | ||
| file_path | Yes | ||
| source_id | No | ||
| dimensions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behaviors: file copying to '~/.kiln/model_cache/', metadata storage in a database, and duplicate detection via SHA-256. This goes beyond the schema, especially since no annotations are provided. It clearly indicates a write operation and explains the caching mechanism.
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 well-structured with a concise summary followed by parameter details in an 'Args:' block. It is front-loaded with the purpose. A slight reduction in parameter detail (e.g., more compact format) could improve conciseness, but it is already efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters, 2 required, no output schema, and zero schema description coverage, the description provides complete coverage: explains all parameters, gives examples, describes the caching process and duplicate detection. It is self-sufficient for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden. It provides detailed explanations for all 7 parameters, including examples for 'source' (enum-like list), 'tags' (comma-separated example), and 'dimensions' (JSON object with bounding box format). This adds significant meaning beyond the schema's type-only 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?
The description clearly states it adds a 3D model to a local cache for reuse across jobs, with specific details about storage location and metadata. While the verb and resource are specific, it does not explicitly distinguish from sibling tools like 'cache_design' or 'get_cached_model', leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does but provides no guidance on when to use it versus alternatives like 'cache_design' or 'delete_cached_model'. There is no mention of prerequisites, when not to use, or when to prefer another tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calibrate_directA
Send calibration commands directly to the printer adapter.
For a full guided calibration pipeline (home + bed level + intelligence
guidance), use ``run_calibrate`` instead. This tool sends raw calibration commands via
MQTT (Bambu) or G-code (OctoPrint/Moonraker) automatically. The printer
must be idle — calibration cannot run during a print.
Available options (printer-specific -- not all printers support all):
- ``"bed_leveling"``: Auto bed mesh probing and Z offset calibration
- ``"vibration"``: Input shaper / vibration compensation tuning
- ``"flow"``: Extrusion flow / first-layer inspection calibration
- ``"all"``: Run all available calibration routines
When no options specified, defaults to bed leveling only.
Bambu printers support all options. OctoPrint/Moonraker support
``bed_leveling`` and ``vibration``. Other printers may not support
remote calibration.
| Name | Required | Description | Default |
|---|---|---|---|
| options | No |
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 discloses that commands are sent automatically and lists options, but does not describe potential side effects, error conditions, or the tool's return value. It mentions a key precondition (printer idle) but lacks depth on what changes occur on the printer.
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 well-structured with paragraphs and bullet points, starting with the core purpose. Every sentence adds value without redundancy, making it efficient for an AI agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description covers purpose, usage, and parameter semantics well. However, it omits information about the tool's return value or success/failure indication, which would be useful for an agent to handle the result correctly. Overall, it is complete for basic invocation but slightly lacking in post-invocation behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'options' has no schema description (0% coverage), but the description thoroughly explains the allowed values (bed_leveling, vibration, flow, all), default behavior (bed leveling only), and printer-specific support. This fully compensates for the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sends calibration commands directly to the printer adapter, distinguishing it from the sibling run_calibrate which is a full pipeline. It specifies the method (MQTT or G-code) and lists available options, making the purpose 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?
Explicitly tells when to use calibrate_direct vs run_calibrate, states the printer must be idle, and details printer-specific support for options. This provides clear context for appropriate invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_printA
Cancel the currently running print job.
Sends cancel via MQTT (Bambu) or REST API (OctoPrint/Moonraker)
automatically.
The printer must have an active job (printing or paused).
:param printer_name: Which printer to stop. Omit to stop the default
printer, which is what this did before it could be aimed. Owning
more than one printer is free at every tier (only running them at
the same time is a fleet feature), so the second machine is a
supported setup on a free licence — and control of a hot machine
is never something a licence takes away.
:param preserve_temperatures: When ``True``, re-asserts the pre-cancel
hotend + bed (+ chamber, if expected_chamber_target is provided)
targets immediately after the cancel command, so the printer
does NOT cool down. Use this when you plan to swap in a
different file (e.g., a mid-print decoration resume 3MF) and need
bed adhesion + nozzle temperature held across the cancel-then-
start-print transition. Without this, Bambu firmware defaults
to cooling on cancel, which can warp the existing part or kill
bed adhesion on a partial print you're about to resume.
Default ``False`` preserves legacy behaviour (cool down to idle).
:param expected_tool_target: Optional caller-supplied tool target to
preserve. When provided AND ``preserve_temperatures=True``,
this overrides the introspected ``state.tool_temp_target``.
Useful when the printer was paused and the firmware has already
cleared the target (so a fresh state read returns 0) but the
caller knows what the pre-pause target was.
:param expected_bed_target: Same as above, for the bed. This is
the primary fix for Bambu A1 long-pause-then-cancel: the bed
target sometimes reads back as 0 from MQTT cache after a long
pause, and without an explicit override the cancel preservation
skips the bed restore.
:param expected_chamber_target: Optional chamber target (M141) to
re-assert via raw G-code. Not all printers expose chamber
heating via the adapter API, so this is sent as a raw M141
command best-effort. Pass ``None`` to skip chamber preservation.
WARNING: Cancellation is irreversible -- the print cannot be resumed
from where it left off UNLESS a resume-mode 3MF has been pre-staged
(see ``decorate_during_print`` and ``revert_mid_print``).
| Name | Required | Description | Default |
|---|---|---|---|
| printer_name | No | ||
| expected_bed_target | No | ||
| expected_tool_target | No | ||
| preserve_temperatures | No | ||
| expected_chamber_target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key side effects: it sends cancel via MQTT/REST, optionally preserves temperatures, and warns that without preserve_temperatures the printer cools down, potentially warping the part. It also clearly states that cancellation is irreversible unless a pre-staged resume-mode 3MF exists. These behaviors are explained, though the repetitive phrasing adds noise.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely verbose and contains duplicated, nonsensical phrases (e.g., 'which is what this did before it could be aimed' and 'Owning more than one printer is free...'). It repeats the same warnings and parameter explanations multiple times, making it far longer than necessary. The structure is unclear due to this redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides substantial context about temperature preservation, firmware behavior, and irreversible cancellation, suggesting completeness. However, the garbled text and repetition make it difficult to parse, and some context (e.g., exact error conditions) is missing. It covers the main points but not in a clean, coherent manner.
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 description explains each parameter beyond the schema: printer_name (which printer), preserve_temperatures (whether to keep temperatures), and expected_bed/tool/chamber targets (overrides for temperature preservation when firmware might clear them). This adds meaning to the schema, though the wording is convoluted and repetitive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Cancel the currently running print job.' This is specific and distinguishes it from sibling tools like pause_print or emergency_stop. However, the rest of the description contains verbose and garbled text (e.g., 'which is what this did before it could be aimed') that slightly obscures the clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions a precondition ('The printer must have an active job') and notes that cancellation is irreversible unless a resume-mode 3MF is pre-staged. It also explains temperature behavior with preserve_temperatures. However, it does not explicitly compare with alternatives like pause_print or emergency_stop, so guidance on when to choose this tool over others is limited.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_print_recoveryB
Cancel an active recovery session.
Args:
session_id: The session_id to cancel.
reason: Optional reason for the cancellation.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| session_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action without any details on effects, reversibility, permissions, or side effects of canceling a session.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with no wasted words. It gets straight to the point with a single action sentence followed by parameter explanations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple cancellation tool with two parameters and no output schema, the description is adequate but lacks mention of the return value or any post-cancellation behavior. It covers the basics but could be slightly more 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?
The schema had no parameter descriptions (0% coverage), so the description adds significant value by explaining the purpose of each parameter: 'session_id: The session_id to cancel. reason: Optional reason for the cancellation.' This is clear and helpful.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Cancel an active recovery session', which is a specific verb and resource. This distinctively differentiates from sibling tools like 'complete_print_recovery', 'plan_print_recovery', and 'start_print_recovery'.
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 does not provide any guidance on when to use this tool versus alternatives, such as when to cancel versus complete a recovery session. No context or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_print_service_orderB
Cancel a print service order.
Only orders that have not started printing can be cancelled.
Args:
order_id: The order ID to cancel.
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without any annotations, the description carries the full burden of disclosing behavior. It only states the precondition and the cancellation action, omitting details on side effects, idempotency, error handling, or permissions, which are critical for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded, with no extraneous words. The precondition and parameter are stated concisely. However, the parameter description is redundant, slightly reducing efficiency.
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 cancellation tool with one parameter and no output schema, the description fails to mention return behavior, error conditions, or how to obtain the order_id. It lacks completeness for an agent to reliably use the tool without external context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no value beyond the schema for the 'order_id' parameter, merely restating its purpose ('to cancel'). With 0% schema coverage, the description was expected to provide format, constraints, or context, but it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Cancel) and the resource (print service order), with a specific precondition that only unstarted orders can be cancelled, effectively distinguishing it from sibling tools like cancel_print or cancel_job.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear condition for when the tool can be used ('orders that have not started printing') but does not explicitly guide when to choose this tool over alternatives like cancel_print or cancel_job, nor does it mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_queued_jobA
Remove one job from the print queue while it is still WAITING.
Queue bookkeeping only: this marks the row cancelled and never sends
anything to a printer. To STOP a job the machine has already
started, use ``cancel_print`` — that is the tool that talks to the
hardware.
Args:
job_id: The job ID to cancel.
Only a job still in the QUEUED state can be cancelled here. A job
that has reached the machine (starting, printing, or paused) is
refused with ``code="PRINT_IN_PROGRESS"`` rather than cancelled,
because marking the row cancelled would leave the queue claiming a
print had stopped while the printer carried on running it.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the operation is 'Queue bookkeeping only' and never sends anything to the printer, and explains the refusal behavior with code='PRINT_IN_PROGRESS' and the rationale behind it. This is highly transparent about side effects and limitations.
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 well-structured: starts with a one-sentence summary, then explains behavior, alternatives, and constraints. Every sentence adds value—no fluff. It is front-loaded with the most important information and is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter) and lack of output schema, the description covers all necessary context: what it does, when to use it, error conditions, and behavioral effects. It is complete for an agent to correctly select and invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one required parameter (job_id) with no description, and schema_description_coverage is 0%. The description provides 'job_id: The job ID to cancel.' This is minimal but does add meaning beyond the parameter name. Since it's a simple identifier with no additional semantics, a score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Remove one job from the print queue while it is still WAITING.' It uses a specific verb (remove) and resource (print queue), and distinguishes itself from cancel_print (which stops a started job). This is a clear, specific purpose that differentiates from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: only for jobs in the QUEUED state. It also provides an explicit alternative: 'To STOP a job the machine has already started, use cancel_print'. This gives clear when-to-use and when-not-to-use guidance, along with the error code for invalid states.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_queued_jobsA
Cancel ALL queued print jobs at once.
The bulk companion to ``cancel_queued_job`` (which cancels one job by id).
Cancels every job currently in the QUEUED state — clear a backed-up
queue in one call instead of cancelling one job at a time.
- ``printer_name``: limit the sweep to one printer's queued jobs; omit
to clear every queued job.
- ``dry_run=True``: preview exactly which jobs WOULD be cancelled and
change nothing. Run this first when clearing a large queue.
Safety: this never cancels a running print. Only jobs still in the
QUEUED state are cancelled; each job's status is re-checked immediately
before cancelling, so a job that has already started printing (or
finished, or was cancelled elsewhere) is skipped rather than
interrupted. Use ``cancel_print`` to stop the job that is actually
running. Each cancel emits the same ``JOB_CANCELLED`` event as
``cancel_queued_job``.
Returns ``{success, dry_run, count, cancelled, skipped, message}`` —
``count`` always equals ``len(cancelled)``; ``skipped`` is a list of
``{job_id, reason}`` for jobs that were not cancelled.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses safety behavior: it never cancels a running print, re-checks job status immediately before cancelling, skips jobs that are no longer queued, and emits the same `JOB_CANCELLED` event. It also explains `dry_run` behavior and the return payload, providing strong transparency.
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 structured with a leading summary, a clear bullet for parameters, and a safety/return section. Every sentence adds value, and the key purpose is front-loaded in the first sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema and no annotations, the description is remarkably complete: it covers scope, parameter behavior, safety guarantees, event side effects, and the exact return structure. An agent has enough context to invoke this tool correctly and avoid destructive mistakes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description compensates thoroughly: `printer_name` scopes the sweep to one printer and omitting it clears everything, while `dry_run=True` previews without changing anything. This adds meaningful semantics beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Cancel ALL queued print jobs at once,' a specific verb and resource with clear scope. It distinguishes itself from the sibling `cancel_queued_job` by positioning as the bulk companion and clarifying it targets the QUEUED 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?
It explicitly says to use this when clearing a backed-up queue instead of cancelling one job at a time, and it names the alternative: 'Use `cancel_print` to stop the job that is actually running.' This gives clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_split_planB
Cancel all pending/in-progress parts of a split plan.
Args:
plan_id: The plan ID to cancel.
| Name | Required | Description | Default |
|---|---|---|---|
| plan_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must disclose behavioral traits. It states 'cancel' but omits details on side effects, reversibility, or what happens to the plan after cancellation. For a mutating tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the key action. The args block is efficient but the overall content is notably brief, leaving some questions unanswered without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description should more fully explain the tool's behavior. It does not address what 'cancel' entails (e.g., deletion, status change, impact on related data), leaving the agent uncertain about the outcome.
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 schema has 0% description coverage, so the description adds value by explaining 'plan_id' as 'The plan ID to cancel.' However, it provides minimal additional context beyond the parameter's purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Cancel' and resource 'split plan', specifying it applies to pending/in-progress parts. This distinguishes it from sibling tools like 'split_plan_status' (status check) or 'plan_assembly_split' (creation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a split plan is pending/in-progress and needs cancellation, but lacks explicit context on when to use this over other cancel tools (e.g., cancel_job, cancel_print). No alternatives or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
center_model_on_bedA
Center a mesh on the build plate and place at z=0.
Translates the model so it sits centered on the bed with its
lowest point touching the build plate.
:param file_path: Path to the STL file.
:param bed_x_mm: Build plate X dimension (default 256).
:param bed_y_mm: Build plate Y dimension (default 256).
:param printer_id: Optional supported printer model id. When
provided, printer intelligence supplies the bed size.
:param output_path: Output path (defaults to overwriting input).
:returns: Dict with translation applied.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| bed_x_mm | No | ||
| bed_y_mm | No | ||
| file_path | Yes | ||
| printer_id | No | ||
| output_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden and does a solid job: it discloses the transformation applied, the output_path default of overwriting the input, the return value, and the inline 3D stage side effect. It falls short only of explaining failure/edge-case behavior such as what happens for meshes larger than the bed.
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 front-loaded with a clear summary, followed by structured parameter documentation and a useful inline-stage note. The only minor redundancy is that the second sentence restates the first, but overall every section earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity, lack of annotations, and absence of an output schema, the description is largely complete: it covers purpose, all parameters, defaults, return value, and a notable side effect. It could be more complete by describing conflict behavior between printer_id and explicit bed dimensions, but it is sufficient for safe invocation.
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 schema has no descriptions, but the tool description documents every parameter with meaning: file_path is the STL file, bed_x_mm and bed_y_mm are build plate dimensions with defaults, printer_id optionally supplies bed size via printer intelligence, and output_path defaults to overwriting the input. This fully compensates for the 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Center a mesh on the build plate and place at z=0.' It clearly defines the operation and its effect, distinguishing it from sibling tools like rotate_model or auto_orient_model by focusing on horizontal centering and z=0 placement.
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 about when to use this tool versus alternatives such as auto_orient_model, rescale_model, or rotate_model. The description implies its use case through its purpose, but it does not state when-not-to-use it or mention alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cfs_statusA
Discover Creality CFS/CFS-C status through local Moonraker.
This is the Creality counterpart to ``ams_status()``, but the public
protocol is not equivalent to Bambu AMS. Creality documents CFS control
through Creality Print and printer UI; Kiln therefore performs read-only
Moonraker discovery (`/printer/objects/list`, candidate object queries,
and `/printer/gcode/help`) and reports any visible CFS slots/macros.
The response includes ``hardware_unverified=True`` and
``active_slot_control_supported=False`` until slot load/unload/mapping
commands are validated against real Creality hardware or official API docs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It discloses read-only behavior, specific endpoints, and limitations (hardware_unverified, active_slot_control_supported). This provides solid transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three sentences, front-loaded with the purpose and structured logically. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description is fairly complete. It explains the mechanism and expected response fields, though the output structure is not fully detailed.
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 schema has zero parameters, so no parameter information is needed. According to guidelines, baseline is 4 for 0 params. The description adds no param info, which is acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool discovers Creality CFS/CFS-C status via Moonraker. It distinguishes itself from the sibling tool 'ams_status' by noting it is a counterpart but not equivalent, providing a specific verb and 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?
The description implies usage for checking CFS status and contrasts with ams_status, but does not explicitly state when to use it versus alternatives or provide exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_ambient_conditionsA
Check if the printer's chamber temperature is safe for a material.
Reads the current chamber temperature from the connected printer
and checks it against material-specific thermal limits. Warns
about conditions like:
- Chamber too hot for PLA (softening risk)
- Chamber too cold for ABS/ASA (warping risk)
- Thermal runaway (exceeds printer safety profile max)
- Cool-down advisory after a high-temp print
All checks are local — no data leaves the machine.
Args:
material: Filament material type (e.g. "PLA", "ABS", "PETG").
If not provided, only checks against printer max.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the reading and warning behavior and emphasizes local data processing. Without annotations, this carries the transparency burden and does so well, though it omits what happens if no warning (likely just success).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using bullet points for clarity, and each sentence adds value. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, parameter semantics, and key behavioral aspects. However, it does not specify the output format or return value, which would be helpful given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides examples of valid materials and explains the behavior when material is null, which the schema does not. This fully compensates for 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states its purpose: checking chamber temperature safety for a given material, with specific examples of warnings. It is distinct from sibling tools like 'check_material_environment' by focusing on temperature limits.
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 explains when to provide a material vs without, and notes that checks are local. However, it does not explicitly state when to prefer this tool over alternatives, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_assembly_clearancesA
Check clearances between all mating parts in an assembly.
Returns a list of clearance check results indicating whether
each interface meets its clearance requirements.
Args:
assembly_json: JSON string of the current assembly state.
default_clearance_mm: Default clearance gap in mm to use
when an interface does not specify one (default 0.2).
| Name | Required | Description | Default |
|---|---|---|---|
| assembly_json | Yes | ||
| default_clearance_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that it returns a list of clearance check results and that it checks each interface against requirements. It implicitly suggests a read-only operation, but does not explicitly state that it does not modify the assembly or require specific permissions. With no annotations provided, the description carries full burden and is only moderately transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively concise, with a short summary, a line about return type, and structured parameter descriptions. The 'Args:' section is helpful given no schema descriptions, though it adds some verbosity. Overall efficient and well-organized.
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 tool with two parameters and no output schema, the description covers the purpose and high-level return. It would benefit from specifying the structure of each clearance result (e.g., fields like 'interface_id', 'clearance', 'required', 'pass'), but the current description is sufficient for an agent to understand the tool's output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description includes a clear docstring for both parameters: assembly_json is 'JSON string of the current assembly state' and default_clearance_mm is 'default clearance gap in mm' with a default value. This adds substantial meaning beyond the schema's type information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Check' and the resource 'clearances between all mating parts in an assembly'. It distinguishes the tool's purpose from siblings like 'validate_assembly' by focusing specifically on clearances, though it does not explicitly differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It does not specify prerequisites or when not to use it (e.g., the assembly must be valid JSON). There is no mention of context like 'use for clearance verification, not general assembly validation'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_autonomyA
Check whether the agent may execute a tool without human confirmation.
Pass the tool name, its safety level, and optional operation context (material, time, temperatures) to get a decision. Use this before calling confirm-level tools to decide whether to proceed or ask.
| Name | Required | Description | Default |
|---|---|---|---|
| bed_temp | No | ||
| material | No | ||
| tool_name | Yes | ||
| tool_temp | No | ||
| safety_level | Yes | ||
| estimated_time_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It indicates the tool returns a decision based on inputs, but does not explicitly state whether it is read-only, modifies state, or requires specific permissions. The behavioral detail is adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first sentence states purpose, second provides usage guidance and parameter overview. No redundant information, front-loaded with key action. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks details about the output format (e.g., boolean, string) and valid values for 'safety_level'. Without an output schema, the agent needs to infer what 'decision' means. For a check tool, this is a gap that reduces full autonomy.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description adds meaning by grouping parameters: required 'tool_name' and 'safety_level', plus optional context (material, time, temperatures). It clarifies the purpose of each parameter group but does not specify valid values for 'safety_level' (e.g., enum).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'check' and resource 'autonomy' (whether the agent may execute a tool without human confirmation). It distinguishes from the sibling 'get_autonomy_level' by specifying use context: 'Use this before calling confirm-level tools to decide whether to proceed or ask.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use the tool: 'Use this before calling confirm-level tools to decide whether to proceed or ask.' It does not provide exclusions or alternatives, but the context is clear enough for an agent to infer appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_firmware_statusA
Check firmware version for a specific printer by name (fleet-level, firmware manager).
Use this in multi-printer setups. For single-printer setups where you
don't need to specify a name, use ``firmware_status`` instead.
Args:
printer_name: Printer to check.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Describes a read operation ('check firmware version') but lacks details on authentication, permissions, or any side effects. Adequate for a simple query.
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 purpose, then usage guidelines, then parameter description. 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?
Given simple schema (1 parameter) and no output schema, the description covers purpose, usage context, and parameter intent. Could mention what the return value contains (e.g., version string), but not strictly necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must add meaning. The description says ''printer_name: Printer to check'', which adds minimal context beyond the schema field name. Could clarify expected format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks firmware version for a specific printer by name, and distinguishes from sibling ''firmware_status'' by specifying multi-printer vs single-printer context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use this tool (multi-printer setups) and when not to (single-printer setups), naming the alternative ''firmware_status''.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_material_environmentA
Check whether a material is compatible with an environment.
Args:
material: Material ID from the design knowledge base.
environment: Natural language environment description.
| Name | Required | Description | Default |
|---|---|---|---|
| material | Yes | ||
| environment | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description does not disclose any behavioral traits such as side effects, permissions, rate limits, or return value details. Simply states the function.
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?
Extremely concise: one-line purpose plus clear parameter descriptions. No wasted text, front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequately explains parameters but lacks output specification (e.g., what the check returns). Missing any context about potential limitations or required preconditions. Acceptable for a simple check tool but gaps remain.
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?
Adds meaning beyond schema: material is described as 'Material ID from the design knowledge base' and environment as 'Natural language environment description'. This clarifies param types and sources, though no format constraints given.
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 verb 'check' and specific resource 'material compatibility with environment'. Distinguishes from siblings like check_material_match which checks material-material compatibility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. No mention of prerequisites, exclusions, or context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_material_matchA
Check whether the material Kiln has on record matches what a print expects.
Answers about Kiln's material RECORD, which normally holds what a person
or agent typed via ``set_material`` — not a sensor reading. Three
answers, and the third one matters: ``match: true`` (the record agrees),
``match: false`` (it disagrees — worth stopping for), and ``match: null``
(nothing is recorded for this printer, so this is neither a match nor a
mismatch and the spool needs an eye on it). ``sensed`` says whether a
machine reported the material; when it is false, do not tell the user
the material is confirmed.
Args:
expected_material: The material the print file requires.
printer_name: Target printer. Omit to resolve the active printer.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_name | No | ||
| expected_material | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description discloses behavior such as the record vs. sensor distinction, the three possible match values, and guidance on the 'sensed' field.
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 somewhat verbose with the explanatory paragraph about record and three answers, but remains structured and readable.
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?
Explains the output semantics (match true/false/null, sensed) giving sufficient context for a check tool, though no explicit output schema exists.
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?
Adds meaning to both parameters: expected_material is the print file requirement, printer_name is the target printer with omission resolving to the active printer.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks whether the recorded material matches the print's expected material, distinguishing from sibling tools by focusing on the record vs. sensor distinction.
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?
Provides context on when to act (e.g., stop on false match, check spool on null) but does not explicitly compare with alternative tools like get_material or set_material.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_material_sufficiencyA
Check if a printer has enough material for a print job.
When material is insufficient, generates actionable suggestions
including shelf spool availability, pause-and-swap hints, and
purchase links. Suggestions that point at OTHER machines are a
fleet-wide answer and need Kiln Business; the check itself —
does THIS printer have enough — works on every tier.
Args:
printer_name: Name of the printer to check.
required_grams: Amount of material needed in grams.
material_type: Optional material type filter.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_name | Yes | ||
| material_type | No | ||
| required_grams | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of transparency. It discloses that insufficient material triggers suggestions, but does not clarify if the check is read-only, the output format, or edge cases. Moderate transparency, but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: purpose first, then behavior details, then parameter list. It avoids unnecessary fluff but could integrate the tier limitation more smoothly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers core functionality and suggestions, but lacks details on output format, edge cases, and behavior when material is sufficient. More context needed for an agent to use it effectively.
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?
Since schema has 0% description coverage, the description compensates by listing each parameter with a brief explanation. This adds meaning beyond types and required status, though more detail on formats or allowed values would improve clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks if a printer has enough material for a print job, with a specific verb and resource. It distinguishes itself from siblings by emphasizing that this check is for a single printer and works on every tier, while fleet-wide suggestions require a different tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use the tool (checking a specific printer's sufficiency) and notes that fleet-wide suggestions need Kiln Business. However, it does not explicitly name alternative tools for fleet-wide checks, leaving some guidance gaps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_multi_material_pairingA
Check if two materials can be co-printed in dual extrusion.
Returns compatibility (yes/no), interface adhesion quality,
notes on temperature management, and soluble support dissolution
instructions when applicable.
Use this when a user asks "can I print PLA with TPU?" or
"what support material works with ABS?" or planning any
multi-material / dual-extrusion print.
Args:
material_a: First material (e.g. "pla", "abs").
material_b: Second material (e.g. "tpu", "hips", "pva").
| Name | Required | Description | Default |
|---|---|---|---|
| material_a | Yes | ||
| material_b | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool returns compatibility, adhesion quality, temperature notes, and dissolution instructions. For a non-destructive check tool, this is sufficient transparency. It does not mention side effects or auth needs, but those are typically irrelevant for such a tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is fairly concise, with two short paragraphs and a clear Args section. The first line immediately states the purpose. A slight redundancy exists in the Args section (which mirrors the schema), but overall it is well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-string-parameter tool with no output schema, the description covers purpose, parameter semantics, return values, and usage examples. It is contextually complete given the tool's simplicity and the richness of sibling tools that provide alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, and the tool has only two parameters. The description adds meaning by labeling each ('First material', 'Second material') and providing examples ('pla', 'abs', 'tpu'). This helps the agent understand the expected values beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's verb ('Check if two materials can be co-printed') and the specific resource ('dual extrusion'). It distinguishes from siblings like 'check_material_match' or 'find_material_substitute' by focusing on multi-material pairing and listing return fields (compatibility, adhesion quality, temperature notes).
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?
Explicit usage examples are provided ('can I print PLA with TPU?', 'what support material works with ABS?'), which helps the agent decide when to invoke this tool. It does not explicitly list when not to use it or mention alternative tools, but the examples clearly target multi-material planning.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_my_tierA
Check the user's current Kiln subscription tier (Free / Pro / Business / Enterprise) and explain WHY they're on it.
Use this whenever the user asks any tier / plan / subscription /
paywall / access question — for example: "what tier am I on",
"why does it say I need Pro", "do I have to pay for this",
"what's my plan", "why isn't this Pro feature working", "did
my subscription not activate", "what's the difference between
Free and Pro", "I just paid but I'm still seeing free tier",
"can I use the texture engine", "do I have access to fleet
management", "what unlocks at Business", "how do I upgrade".
Walks the live tier-resolution chain on the user's machine
(KILN_LICENSE_KEY env var → ~/.kiln/license file → OAuth
session at ~/.kiln/auth_tokens.json → cached entitlement →
free-tier fallback) and reports:
- effective_tier: one of 'free', 'pro', 'business', 'enterprise'
- resolution_chain: list of every step with which matched
- matched_source: which step actually determined the tier
- agent_summary: a plain-English one-liner you can show
the user verbatim
- pricing_url: link to send the user if they want to upgrade
No arguments. Free-tier safe — does NOT require a license
to call. Available to every user.
Common interpretation:
- effective_tier="free", matched_source="kiln_pro_install":
kiln-pro not installed on this machine. User can still
use Pro features via api.kiln3d.com if signed in.
- effective_tier="free", matched_source="default":
kiln-pro installed but no auth — needs `kiln signin` or
KILN_LICENSE_KEY.
- effective_tier="pro" (or higher) with matched_source=
"license_manager_resolve" and "oauth_session" matched=True
in the chain: user is signed in via OAuth and the
entitlement on file gives them this tier.
Returns:
dict with success/effective_tier/resolution_chain/
matched_source/agent_summary/tier_rank/pricing_url.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description fully carries the behavioral disclosure burden. It details exactly what the tool does: 'Walks the live tier-resolution chain on the user's machine' and lists the sources checked (env var, license file, OAuth session, cached entitlement, free-tier fallback). It also discloses that it is free-tier safe and does not require a license, which is critical behavioral information. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: a clear one-sentence purpose, followed by a bulleted list of example user queries, then a detailed explanation of the resolution chain and output fields, and finally common interpretation cases. While it is lengthy, every section adds value for an agent needing to interpret results. It is front-loaded with the most critical information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is no output schema, the description fully describes the return value structure (dict with effective_tier, resolution_chain, matched_source, agent_summary, tier_rank, pricing_url) and explains common interpretations. The tool has zero parameters and a straightforward purpose, and the description leaves no gaps in understanding what the tool returns and how to use the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters and schema coverage is 100%. The description reiterates 'No arguments.' Without parameters, there is little to add. The baseline score of 3 is appropriate because the description confirms the absence of parameters, which is consistent with the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a clear verb+resource: 'Check the user's current Kiln subscription tier and explain WHY they're on it.' It explicitly enumerates the tiers (Free/Pro/Business/Enterprise) and distinguishes itself from sibling tools like 'license_status' or 'upgrade_kiln' by focusing on explaining the reason behind the tier. The many example queries further reinforce the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidelines: 'Use this whenever the user asks any tier / plan / subscription / paywall / access question' with a comprehensive list of example queries. It also states 'No arguments. Free-tier safe — does NOT require a license to call. Available to every user.' and includes common interpretation scenarios. This clearly tells the agent when to use the tool and that it has no prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_orientationA
Check if a model's orientation is stable for printing.
Analyzes the height-to-base ratio and warns if the model is likely to
wobble or fail mid-print. Suggests reorientation if needed.
:param model_path: Path to the STL or OBJ model file.
:returns: Dict with stability assessment.
| Name | Required | Description | Default |
|---|---|---|---|
| model_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully explains behavior: analyzes height-to-base ratio, warns about wobble/fail, suggests reorientation. It is non-destructive and returns a dict assessment. However, it does not mention side effects, auth needs, or rate 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?
The description is concise (5 lines), front-loaded with the action, and each sentence adds value. No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter, no annotations, and no output schema, the description covers purpose, input, output type, and behavior. It could be more specific about the returned dictionary structure, but overall it is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the schema by stating the file format (STL or OBJ) and that the parameter is a file path. It also notes the return type (Dict with stability assessment). Schema description coverage is 0%, so the description compensates well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: checking model orientation stability for printing. It specifies analysis of height-to-base ratio and warning/ suggestion. It differentiates from siblings like 'auto_orient_model' or 'analyze_printability' by focusing on orientation stability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for verifying orientation stability before printing but does not explicitly state when to use this tool versus alternatives such as 'auto_orient_model' or 'optimize_print_orientation'. No exclusions or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_printer_healthB
Run a comprehensive health check on a printer.
Monitors hotend/bed temperature stability, print progress, and
detects anomalies like temperature drift or unexpected shutdowns.
Args:
printer_name: Name of the printer to check.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description discloses monitoring aspects and anomaly detection, which is useful. But with no annotations, it lacks details on side effects (e.g., whether it's read-only, requires locking, or has rate 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?
Short and front-loaded with the action. However, the args section is redundant with the schema. Still efficient 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?
Given no output schema and no annotations, the description covers basic purpose but misses return value format, prerequisites, and behavioral context. Adequate but incomplete for a comprehensive tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter with 0% schema description coverage. The description adds 'Name of the printer to check,' which is minimal and just restates the schema. Does not compensate for the lack of schema detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it performs a comprehensive health check on a printer, specifying what it monitors (temperature stability, print progress, anomalies). However, it does not differentiate from siblings like 'check_print_health' or 'printer_status' which may have similar functions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Absence of when-not to use or prerequisites. With many sibling tools, explicit usage context is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_printer_material_compatibilityA
Check if a specific printer can handle a material.
Returns compatibility status (compatible / needs_upgrade /
not_compatible), any required hardware upgrades (enclosure,
hardened nozzle, dry box), and practical notes.
Use this when a user asks "can my Ender 3 print nylon?" or
another specific printer/material question.
Args:
printer: Printer model ID (e.g. "ender3", "bambu_x1c",
"prusa_mk4", "voron_2"). Use underscores, lowercase.
material: Material to check (e.g. "nylon", "abs").
| Name | Required | Description | Default |
|---|---|---|---|
| printer | Yes | ||
| material | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses return values (status, upgrades, notes) and suggests no destructive behavior. However, it does not mention auth requirements, rate limits, or error conditions, which are relevant for a query tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear structure: one-line purpose, return format, usage case, and Args section. No unnecessary 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 simple 2-param tool with no output schema, the description adequately explains inputs, outputs, and typical use case. Could mention if printer/material must be in a known catalog, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% coverage (no descriptions on properties). The description compensates by providing example values, format (underscores, lowercase), and context for both printer and material parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks printer-material compatibility and returns status, upgrades, and notes. It uses specific verb+resource, but does not explicitly differentiate from sibling tools like check_printer_material_support.
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?
Provides explicit usage context with a user question example. Offers format guidance for parameters (e.g., 'use underscores, lowercase'). Lacks when-not-to-use guidance, but the example sufficiently frames when to invoke.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_printer_material_supportA
Check if a printer supports one specific material.
Returns compatibility status (``"compatible"`` or ``"needs_upgrade"``),
required hardware upgrades (enclosure, hardened nozzle, dry box, etc.),
and material-specific notes for the printer.
**See also:** ``check_printer_material_compatibility`` for the same
check with design-intelligence context and alternative suggestions.
Args:
printer_id: Printer model identifier (e.g. ``"bambu_a1"``,
``"ender3"``, ``"prusa_mk4"``).
material_id: Material to check (e.g. ``"petg"``). Required so this
hosted surface cannot enumerate a printer's complete matrix.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_id | Yes | ||
| material_id | Yes |
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 discloses the return structure (compatibility status, upgrades, notes), implying a read-only operation without side effects. However, it does not explicitly state it is side-effect-free or mention any authentication needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (three lines plus parameter details), well-structured with a header, return info, see-also, and parameter section. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity, no annotations, and no output schema, the description covers all essential aspects: purpose, usage context, parameters, return values, and an alternative tool. It is complete for an agent to use 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?
The input schema has 0% description coverage, so the description must compensate. It provides clear, example-rich descriptions for both parameters, including an explanation for why material_id is required. This adds significant meaning beyond the schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks printer support for a specific material, with a verb ('check') and resource ('printer material support'). It distinguishes itself from the sibling 'check_printer_material_compatibility' by noting the difference in context and suggestions.
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 'See also' section explicitly points to an alternative tool for design-intelligence context, telling the agent when to use this tool vs the sibling. The parameter note about not enumerating the full matrix also guides usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_print_healthA
Perform a single-shot health assessment of the current print.
Unlike ``watch_print`` (which starts a background monitoring
thread), this tool runs one check cycle and returns immediately.
It is designed for quick "is the print OK right now?" queries
from an agent without starting persistent background tasks.
Checks performed:
* **Printer connectivity** — is the printer online?
* **Temperature** — are hot-end and bed within 15 °C of target?
* **Print progress** — current completion, layer count, ETA.
* **Error state** — any active firmware error codes.
If *model_path* is supplied, adhesion risk is also evaluated via
``analyze_printability``.
Args:
printer_name: Named printer to query. Omit for the default.
model_path: Optional path to the model being printed.
Enables geometry-based adhesion risk analysis.
material: Filament material (e.g. ``"PLA"``, ``"ABS"``).
Passed to adhesion analysis when *model_path* is provided.
printer_id: Printer model ID (e.g. ``"bambu_a1"``).
Used for printer-intelligence lookups.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | ||
| model_path | No | ||
| printer_id | No | ||
| printer_name | No |
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 discloses the checks performed (connectivity, temperature, progress, error state) and mentions adhesion analysis if model_path is supplied. However, it does not explicitly state that the tool is read-only or has no side effects, which is important for a health assessment tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: a concise introductory sentence, a bullet list of checks, and a clear 'Args:' section. It is front-loaded with the core purpose and contrast to watch_print. Every sentence adds value without unnecessary verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 optional parameters, no enums, no output schema, and no nested objects, the description covers the tool's behavior and parameter usage well. It explains the checks performed and how parameters affect behavior. However, it does not describe the output format or return values, which would enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It does so effectively with an 'Args:' section explaining each parameter's purpose and dependencies (e.g., model_path enables adhesion analysis, material is passed to that analysis). This adds crucial meaning beyond the schema's type-only definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it performs a 'single-shot health assessment' of the current print, distinguishing it from 'watch_print' which starts a background thread. It lists specific checks (connectivity, temperature, progress, error state), making the purpose specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly contrasts this tool with 'watch_print', indicating when to use a quick check versus persistent monitoring. It states it is for 'quick is the print OK right now? queries' without starting background tasks. However, it does not explicitly mention when not to use it or list all alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_print_readinessA
Single-call print readiness check with optional auto-repair.
Runs the full validation battery: parseable, manifold, no floating
regions, overhangs within limits, fits build plate, no degenerate
triangles.
With ``auto_fix=True``, automatically repairs degenerate triangles,
closes holes, and removes floating regions.
:param file_path: Path to mesh file.
:param auto_fix: Attempt automatic repairs (default False).
:param output_path: Where to write the fixed file.
:param bed_x_mm: Build plate X dimension (default 256).
:param bed_y_mm: Build plate Y dimension (default 256).
:param bed_z_mm: Build plate Z dimension (default 256).
:param printer_id: Optional supported printer model id. When
provided, printer intelligence supplies the build volume.
:returns: Dict with can_print verdict, issues, and actions taken.
| Name | Required | Description | Default |
|---|---|---|---|
| auto_fix | No | ||
| bed_x_mm | No | ||
| bed_y_mm | No | ||
| bed_z_mm | No | ||
| file_path | Yes | ||
| printer_id | No | ||
| output_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses actions performed (validation checks, auto-repair) and return value, but fails to mention side effects like file system writes (output_path), idempotency, or potential destructive behavior. The description is adequate but incomplete.
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 well-structured with a summary, bullet lists of checks, and parameter documentation. It is appropriately detailed but slightly verbose; every sentence contributes value, though could be tightened.
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 7 parameters, no output schema, and no annotations, the description covers the tool's purpose, parameters, and return value. It lacks error handling, prerequisites, or performance details, but is relatively complete for the tool's apparent scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It provides detailed parameter descriptions including defaults, roles, and usage notes for all 7 parameters (file_path, auto_fix, output_path, bed dimensions, printer_id). This fully explains parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a single-call print readiness check with optional auto-repair, listing the specific validation checks. However, it does not explicitly differentiate from sibling tools like 'validate_and_prepare_mesh' or 'analyze_printability', which may overlap in purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context that it is a comprehensive check, but lacks explicit guidance on when to use this tool versus alternatives, no when-not recommendations, and no exclusions. It only implies usage by listing capabilities.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_step_supportA
Check which STEP import backends are available on this system.
Returns a dict listing each backend (FreeCAD, Gmsh, the OCCT
kernel, CadQuery) with its availability status and priority.
If none is found,
includes ``install_help`` (prose) and ``remedy`` (structured) —
prefer ``remedy``: its ``actionable_by_caller`` flag tells you
whether the user can fix this (``kiln install-step-backend``) or
whether they're on a hosted server where they cannot.
Call this before ``import_step_file`` to verify the system is
ready for STEP conversion.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses the return structure (dict with backends, availability, priority, install_help, remedy) and how to use the results (prefer remedy). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise and well-structured. Each sentence adds value: purpose, return details, conditional fields, usage guidance. No fluff, and front-loaded with main 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, but description adequately explains return values and their interpretation. Given no parameters and clear workflow integration, the description 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?
No parameters exist, so schema coverage is 100%. With 0 parameters, baseline is 4. Description does not need to add parameter info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the purpose with a specific verb ('Check') and resource ('STEP import backends available on this system'). It distinguishes itself from sibling tools like import_step_file by indicating this is a prerequisite check.
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?
Explicitly instructs to call before import_step_file to verify readiness. Provides guidance on interpreting the remedy field, especially the actionable_by_caller flag. No explicit alternatives mentioned, 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.
clean_agent_memoryA
Remove all expired agent memory entries.
Entries with a TTL that has elapsed are permanently deleted. Returns the count of entries removed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses the destructive nature (permanent deletion of expired entries) and the return value (count of removed entries). It does not require further behavioral details for this simple 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?
Three concise sentences, each adding value. Front-loaded with the core action, followed by details and return type. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and no output schema, the description fully explains the action, permanence, and return value. It is complete for an agent to understand and invoke 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?
There are no parameters, so schema coverage is 100%. The description adds no param info, which is acceptable. Baseline 4 applies per rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool removes expired agent memory entries, using specific verbs like 'Remove' and 'permanently deleted'. It distinguishes from sibling tools like delete_agent_note by targeting all expired entries rather than a specific note.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (clean up expired memory) but does not explicitly state when not to use or mention alternative tools for specific deletions. Context is clear but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_emergency_stopA
Acknowledge and clear a printer's emergency stop latch.
This is a safety-critical operation. The latch may be blocked from
clearing if critical interlocks are still active (e.g. thermal sensor
failure). Call ``emergency_status()`` first to check whether clearing
is possible.
:param printer_name: Printer whose latch to clear.
:param acknowledgement_note: Free-text note explaining why the e-stop is
being cleared (required -- cannot be empty).
:param acknowledged_by: Identity of the person or system clearing the
latch (default ``"operator"``).
:returns: Updated latch state, or an error if critical interlocks prevent
clearing.
See also: ``emergency_status()``, ``emergency_stop()``.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_name | Yes | ||
| acknowledged_by | No | operator | |
| acknowledgement_note | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses safety-critical nature, possible blockage by interlocks, requirement for non-empty note, and default operator identity. Could add more on failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Multi-paragraph but well-structured with sections. Every sentence adds value. Slightly verbose but appropriate for safety tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, prerequisite, parameter details, and return description. Lacks output format details or error types, but adequate given safety-critical nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% coverage; description documents all three parameters: printer_name, acknowledgement_note (required, non-empty), acknowledged_by (optional, default 'operator'). Adds constraints not in schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Acknowledge and clear a printer's emergency stop latch' uses a specific verb and resource. It clearly distinguishes from sibling tools like emergency_stop (triggers stop) and emergency_status (checks status).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly recommends calling emergency_status() first to check if clearing is possible. References sibling tools. Does not explicitly state when not to use, but the context implies conditions like active interlocks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_printer_errorA
Clear a latched error on the PRINTER so it will accept prints again.
Different from ``clear_emergency_stop``, which releases Kiln's own safety
latch. This one acknowledges an error the FIRMWARE is holding — the state
the machine itself reports — after which pre-flight checks pass again.
Reach for it when ``printer_status`` reports ``error`` and the printer's
own screen looks fine. That combination is not a Kiln bug; the firmware
really is still reporting the fault, and on some machines dismissing the
on-screen message clears the notification without clearing the state.
Before this existed there was no way out of that from Kiln at all — only a
power cycle — so one bad print locked the machine out of every later one.
What it does NOT do is fix the cause. A printer that halted for a real
fault will halt again the moment it retries, which is the honest outcome:
this reconciles Kiln with the machine, it does not overrule the machine.
Nothing is cleared while a print is running.
:param printer_name: Target printer. Omit for the default printer.
:returns: Whether the acknowledgement was sent, plus the printer state
read back afterwards so the caller can see whether it took.
See also: ``printer_status()``, ``preflight_check()``, ``emergency_stop()``.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: it acknowledges a firmware-held error, reconciles Kiln with the machine, does not fix the underlying cause, may halt again on retry, and is blocked during an active print. It also states the return value—whether the acknowledgement was sent plus the read-back printer state. This is exemplary transparency for a state-mutating 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?
Though relatively long, every sentence adds real value: scope, differentiation from a sibling, exact trigger condition, non-goals, runtime constraint, parameter description, return behavior, and cross-references. It is well-structured in digestible paragraphs and avoids redundancy. The length is justified by the conceptual complexity of distinguishing firmware vs. Kiln latches.
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?
This simple one-parameter tool is completely documented despite no annotations and no output schema. The description covers purpose, usage condition, behavior, side effects, limitations, parameter semantics, return value, and related tools. There is nothing an agent would need to know about this tool that is missing from the description.
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 schema only provides `printer_name` as an optional string/null with a default of null, and schema description coverage is 0%. The description compensates fully with ':param printer_name: Target printer. Omit for the default printer.' This adds complete semantic meaning beyond the schema, directly addressing the single parameter's purpose and optionality.
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 opens with a specific verb and resource: 'Clear a latched error on the PRINTER so it will accept prints again.' It clearly distinguishes itself from the sibling `clear_emergency_stop` by contrasting Kiln's own safety latch vs. firmware-reported errors. This leaves no ambiguity about what the tool does or how it differs from related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit trigger condition: use when `printer_status` reports `error` and the printer's own screen looks fine. It also states what it does NOT do (fix the cause, overrule the machine) and notes that nothing is cleared during a print. This provides strong when-to-use and when-not-to-use guidance, while explicitly referencing `clear_emergency_stop` as an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
client_cost_reportA
Get a cost report for all projects belonging to a client.
Aggregates costs across all projects for a given client identifier,
useful for invoicing and chargeback.
Args:
client: Client or cost-center identifier.
Requires Enterprise license.
| Name | Required | Description | Default |
|---|---|---|---|
| client | Yes |
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 mentions the 'Requires Enterprise license' constraint but does not explicitly state that the tool is read-only (implied by 'Get') or describe any side effects. The description adds some useful context but misses opportunities to fully disclose behavior beyond the license requirement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: three sentences that first state the purpose, then add detail about aggregation and use case, and finally describe the parameter and license requirement. Every sentence contributes meaning without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has one parameter, no output schema, and no annotations. The description adequately explains the input but does not describe the output format or content of the cost report. Given the lack of additional structured data, the description should provide more detail about what the report contains 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?
The input schema has one required parameter ('client') with no description. The description adds meaning by noting it can be a 'Client or cost-center identifier,' which provides an alternative interpretation. Schema description coverage is 0%, so the description adds significant value, though it could be more detailed (e.g., format or usage examples).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get a cost report for all projects belonging to a client.' It uses a specific verb ('Get') and resource ('cost report'), and distinguishes itself from siblings by focusing on client-level aggregation, which is unique among the many cost-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use the tool: 'useful for invoicing and chargeback.' While it does not explicitly exclude alternatives or mention when not to use it, the context is clear and helps the agent infer appropriate scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloud_sync_configureC
Configure and start cloud sync.
Args:
cloud_url: Base URL of the cloud sync endpoint.
api_key: API key for authentication.
interval: Sync interval in seconds (default 60).
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | Yes | ||
| interval | No | ||
| cloud_url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for behavioral disclosure. It only states the tool configures and starts cloud sync, but omits critical details like side effects (e.g., overwriting existing config), blocking behavior, or error handling. This lack of transparency could lead to unexpected outcomes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with a clear one-line purpose followed by a structured args list. It is front-loaded with the key action. The format is efficient, though it could be slightly more detailed without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a configuration tool that likely has side effects and dependencies, the description is incomplete. It does not mention whether the sync runs in the background, whether network connectivity is required, or what happens on failure. Related sibling tools suggest a need for usage context that is absent.
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 description's args section adds minimal meaning beyond the input schema, such as 'Base URL of the cloud sync endpoint' for cloud_url, which is slightly more descriptive than the schema's title 'Cloud Url'. However, with 0% schema description coverage, the description should provide more comprehensive explanations, especially for required parameters like api_key.
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 'Configure and start cloud sync', which clearly identifies the action (configure and start) and resource (cloud sync). However, it does not explicitly differentiate from sibling tools like 'cloud_sync_now' and 'cloud_sync_status', which could cause confusion about when to use this tool instead of those.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not specify that it is for initial setup, whether it can be called multiple times, or any prerequisites. Without such guidelines, an agent may misuse the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloud_sync_nowA
Trigger an immediate cloud sync cycle.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only states action without disclosing behavioral traits such as network dependency, data synchronization impact, or potential latency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no redundant words, directly conveys the action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Minimal description for a simple action; lacks output schema or behavioral context, but adequate for a straightforward trigger with no params.
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?
No parameters exist, so description trivially adds no additional parameter meaning; baseline 4 for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'trigger' and resource 'cloud sync cycle', distinguishing it from sibling tools like cloud_sync_configure and cloud_sync_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool or when to prefer alternatives; lacks context for prerequisites or side effects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloud_sync_statusA
Get the current cloud sync status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden. It only states 'Get', implying read-only, but does not disclose whether it triggers side effects, returns cached data, or requires authentication.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no wasted words. It efficiently communicates the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool, the description is adequate but lacks detail on what 'status' entails (e.g., sync progress, last sync time). No output schema to compensate.
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?
With 0 parameters and 100% schema coverage, the baseline is 4. The description adds no parameter info, but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'current cloud sync status', distinguishing it from sibling tools like 'cloud_sync_configure' and 'cloud_sync_now'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, such as checking status before initiating a sync. No context on prerequisites or ideal scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
community_statsA
Get overall print-registry statistics.
``stats`` covers this install: total records, unique models,
printers, materials, and overall success rate. ``community``
adds the size of the shared pool everyone contributes to —
counts only, available to anyone signed in.
Works offline: the local numbers are always returned.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description discloses offline behavior, return structure (stats vs community), and access requirements (signed-in for community). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise and well-structured. Purpose is front-loaded, additional detail in second paragraph. Every sentence serves a 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 zero-parameter tool with no output schema or annotations, the description adequately explains the return format, contents, and offline behavior. No 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?
No parameters, so schema provides no semantic gap. Description adds meaning by explaining what the two return sections contain, which is valuable context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get overall print-registry statistics' and distinguishes between 'stats' and 'community' sub-sections. It is specific and differentiates from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description mentions offline capability and that community counts are available for signed-in users, but does not explicitly state when to use this tool versus alternatives or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_material_propertiesA
Compare two materials using a fixed public safety/process field set.
Use this when deciding between materials for a project (e.g. PLA vs PETG
for an outdoor bracket) or when switching materials for a reprint. Deeper
engineering trade-offs are answered one question at a time by kiln-pro
(https://kiln3d.com).
Args:
material_a: First material (e.g. ``"pla"``).
material_b: Second material (e.g. ``"petg"``).
| Name | Required | Description | Default |
|---|---|---|---|
| material_a | Yes | ||
| material_b | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as whether the tool is read-only, destructive, requires specific permissions, or has rate limits. The phrase 'fixed public safety/process field set' hints at non-destructive behavior, but it is not explicit. The description fails to fill the transparency gap left by missing annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: a single paragraph for purpose and usage, plus a compact list for parameters. Every sentence adds value without redundancy. The structure is front-loaded with the main action, making it easy 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 simple tool with two string parameters and no output schema, the description covers the core purpose and usage. However, it does not describe the return value format or any additional behavior (e.g., does it return a score, recommendation, or side-by-side comparison?). This lack of return-value information reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description compensates by providing example values for each parameter ('material_a: First material (e.g. "pla")' and similarly for material_b). This adds meaningful context beyond the schema's titles. However, it does not specify allowed values or constraints (e.g., a list of valid materials), leaving some ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Compare two materials using a fixed public safety/process field set.' It provides concrete examples (PLA vs PETG) and distinguishes itself from other comparison tools by mentioning the 'fixed' field set and directing deeper questions to kiln-pro.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('when deciding between materials... or when switching materials for a reprint') and when not to ('Deeper engineering trade-offs are answered one question at a time by kiln-pro'). This provides clear guidance on alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_mesh_versionsA
Compare two mesh files and report geometric differences.
Computes volume change, surface area change, dimension deltas,
center-of-mass shift, printability delta, and an approximate
Hausdorff distance showing how far the meshes differ spatially.
Useful for verifying that a repair, rescale, or regeneration
actually improved the model.
:param file_a: Path to the reference (original) mesh.
:param file_b: Path to the modified mesh.
:returns: Dict with comparison metrics and ``meshes_identical`` flag.
| Name | Required | Description | Default |
|---|---|---|---|
| file_a | Yes | ||
| file_b | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It lists computed metrics and return format, indicating a read-only operation, but does not disclose permissions, file format assumptions, or error handling. The transparency is adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at roughly 80 words, front-loads the purpose, and organizes metrics and parameters in a clear, scannable manner. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains return values (dict with metrics and flag). It covers purpose, usage, parameters, and output. Missing are error conditions or file format restrictions, but for the complexity level, it is fairly 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?
The description adds meaning beyond the schema by labeling file_a as 'reference (original) mesh' and file_b as 'modified mesh'. Schema coverage is 0% in structured form, so the description compensates well. However, it leaves out file format details and validation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'compare', resource 'mesh files', and expected output 'geometric differences'. It is specific enough to distinguish from sibling tools like analyze_mesh_geometry or diff_design_versions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Useful for verifying that a repair, rescale, or regeneration actually improved the model', giving context on when to use. It does not mention when not to use or provide alternative tools, but the guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_print_optionsA
Compare local printing cost vs. outsourced manufacturing.
Runs a local cost estimate and (if Craftcloud is configured) fetches
a fulfillment quote, then returns a side-by-side comparison to help
agents recommend the best option.
Args:
file_path: Path to the G-code file (for local) or model file
(STL/3MF for fulfillment). If a G-code file is provided,
only local estimate is returned.
material: Filament material for local estimate (PLA, PETG, etc.).
fulfillment_material_id: Material ID from ``fulfillment_materials``
for the outsourced quote. If omitted, the fulfillment quote
is skipped.
quantity: Number of copies for fulfillment (default 1).
electricity_rate: Cost per kWh in USD (default 0.12).
printer_wattage: Printer power consumption in watts (default 200).
shipping_country: ISO country code for fulfillment shipping.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | PLA | |
| quantity | No | ||
| file_path | Yes | ||
| printer_wattage | No | ||
| electricity_rate | No | ||
| shipping_country | No | US | |
| fulfillment_material_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It explains that it runs a local cost estimate and optionally a fulfillment quote, returning a side-by-side comparison. It does not disclose any destructive actions, authentication needs, rate limits, or other behavioral traits beyond the basic workflow.
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 structured with a summary sentence, a brief workflow explanation, and a bullet-like Args section. It is front-loaded with the purpose. While concise, the Args section could be formatted more cleanly (e.g., actual bullet points) for better readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 7 parameters and no output schema, the description covers conditional behavior and parameter defaults. However, it does not detail the return value structure beyond 'side-by-side comparison', which is a gap since no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero description coverage, but the tool description provides detailed explanations for all 7 parameters, including purpose, defaults, and conditional usage (e.g., file_path explanation, fulfillment_material_id omitted skips fulfillment). This adds significant value beyond the schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool compares local printing cost vs. outsourced manufacturing, with specific verb 'compare' and resource 'print options'. It distinguishes itself from sibling tools like 'compare_material_properties' by focusing on cost comparison.
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 explains when to use the tool (to compare costs) and includes conditional behavior: if G-code is provided, only local estimate; if fulfillment_material_id omitted, skip fulfillment quote. However, it does not explicitly state when not to use it, nor mention alternatives such as 'estimate_cost' or 'fulfillment_quote'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_rendersA
Render 2-4 models side by side in a single comparison image.
General-purpose visual diff tool — compare any 3D models at the same
camera angle in one image. Each model is rendered individually then
stitched together with labels.
**Use cases:**
- Texture or decoration variants (compare 3 pattern options)
- Design iterations (before vs after)
- Material color comparisons
- Parameter sweeps (small / medium / large)
Returns a single PNG image path that can be displayed inline.
Supports 2-4 models per comparison. When 4 models are provided
they are arranged in a 2x2 grid; otherwise a single row.
Args:
paths: 2-4 file paths (STL, 3MF, OBJ, or SCAD).
labels: Custom labels for each model. Defaults to A, B, C, D.
angle: Camera angle for all renders. One of ``isometric``,
``front``, ``right``, ``top``, ``bottom``, ``back``.
width: Per-model image width in pixels (default 800).
height: Per-model image height in pixels (default 600).
colors: Optional hex color per model (e.g. ``["#F72323", "#2323F7"]``).
| Name | Required | Description | Default |
|---|---|---|---|
| angle | No | isometric | |
| paths | Yes | ||
| width | No | ||
| colors | No | ||
| height | No | ||
| labels | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so description carries full burden. Describes rendering pipeline (individual renders stitched with labels) and return type (PNG path). Lacks details on performance, error handling, or side effects; but for a read-only render tool this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Efficient structure: overview sentence, use cases, output description, then parameter list. No unnecessary words; every sentence adds value. Front-loaded with main 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?
Given 6 parameters and no output schema, description covers key aspects: purpose, use cases, arrangement logic, return type, and all parameters. Minor omissions: no mention of error handling or behavior with invalid inputs, but overall sufficient for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% but description fully compensates with detailed parameter explanations: paths (file types, count), labels (defaults), angle (enum list), width/height (defaults), colors (hex array). Adds meaning beyond schema types and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states 'Render 2-4 models side by side in a single comparison image,' with clear verb and resource. Distinguishes from siblings like render_model_preview (single render) and compare_mesh_versions (mesh diff) by specifying it's a visual diff for any 3D models.
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?
Provides clear use cases (texture variants, design iterations, material colors, parameter sweeps) and constraints (2-4 models, layout rules). Does not explicitly state when not to use, but context implies it's for multi-model comparisons; alternatives are not named but are differentiable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compile_scadA
Compile OpenSCAD code into an STL file.
Takes OpenSCAD source code OR a path to a .scad file, compiles
it using the local OpenSCAD binary, and returns the path to the
generated STL. Supports Kiln's bundled BOSL2 library.
For surface() heightmap operations (photo emboss, lithophane),
increase timeout to 600+ seconds.
Args:
scad_code: Valid OpenSCAD source code (provide this OR scad_path).
scad_path: Path to a .scad file (provide this OR scad_code).
timeout: Maximum compilation time in seconds (default 300).INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No | ||
| scad_code | No | ||
| scad_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden. It reveals the use of a local binary, BOSL2 support, the inline 3D stage side effect, automatic mesh decimation, and the caveat that the PNG preview is not the whole experience. This goes beyond a basic 'compile' statement, though it does not mention failure modes, file cleanup, or permission implications.
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 front-loaded with the core purpose and input modes, followed by a timeout tip and structured Args list. The inline 3D stage paragraph is somewhat long and uses ALL CAPS, but it conveys important behavioral context. Each sentence contributes useful information, though the staging explanation could be tightened slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers the key operational aspects: inputs, compilation process, return value, timeout guidance, and the post-success 3D stage behavior. It is sufficiently complete for an agent to invoke and interpret the result, though error handling and file lifecycle details are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must fully compensate for parameter meaning. It provides an explicit Args section explaining scad_code and scad_path are mutually exclusive options, and timeout defaults to 300 seconds with a scenario-specific increase to 600+. This adds significant semantic value beyond the raw schema 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?
The description opens with a specific verb+resource pair: 'Compile OpenSCAD code into an STL file.' It then details the two input modes (source code or .scad path), the local OpenSCAD binary, and the return value (path to generated STL), making the tool's purpose unmistakable. This clearly distinguishes it from siblings like validate_openscad_code, analyze_scad_code, and tweak_and_compile_scad.
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 clear context for when to use the tool (compiling SCAD to STL) and provides a specific time-based guideline for surface() heightmap operations ('increase timeout to 600+ seconds'). It also explains the OR relationship between scad_code and scad_path, which guides invocation. However, it does not explicitly name alternatives or state when not to use this tool in favor of a sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
complete_print_recoveryA
Mark a recovery session as completed.
On failure (success=False) AND when ``alternative_printers``
is supplied AND kiln-pro is installed, the response carries
a ``reroute_recommendation`` block — the rerouter's seven-rule
verdict on whether the failed job should move to one of the
alternatives. Recommendation only; the agent must run the
actual reroute via ``submit_job`` / ``start_print``.
Args:
session_id: The session_id to complete.
success: Whether the recovery was ultimately successful.
notes: Final notes about the recovery outcome.
alternative_printers: Optional fleet of alternative
printer dicts (each with ``printer_id`` plus optional
``is_idle``, ``supported_materials``,
``build_volume_mm``, ``success_rate``). When
supplied alongside ``success=False``, the response
will include a ``reroute_recommendation`` from the
pro rerouter (patent KILN-003 claim 5). Single-printer
setups can omit this.
completion_pct_at_failure: How far the failed print got
(0.0–1.0). Below 10% the rerouter prefers
same-device restart over reroute. Defaults to 0
(treated as low progress).
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| success | Yes | ||
| session_id | Yes | ||
| alternative_printers | No | ||
| completion_pct_at_failure | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses behavioral traits: the conditional inclusion of a 'reroute_recommendation' in the response, the impact of 'completion_pct_at_failure' on rerouter logic, and the fact that the recommendation is advisory only. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a summary sentence, a condition block, and a parameter list. It is front-loaded with the main action. Minor detail like 'patent KILN-003 claim 5' is slightly tangential but does not detract significantly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 params, no output schema, no annotations), the description covers behavior, parameter semantics, and the conditional response. It also tells the agent what to do next. It could mention the default response on success, but the provided information is sufficient for most use cases.
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 schema has 0% description coverage, so the description carries full burden. It provides detailed explanations for all 5 parameters, including structure for 'alternative_printers' and behavioral context for 'completion_pct_at_failure' (threshold effect). This adds significant value beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Mark a recovery session as completed,' which is a specific verb+resource. It clearly distinguishes this tool from sibling recovery tools like 'plan_print_recovery' and 'start_print_recovery' by focusing on completion and the optional reroute recommendation.
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 clearly states when to use the tool (to complete a recovery session) and provides guidance on when the reroute recommendation appears (on failure with alternative printers and kiln-pro installed). It also instructs the agent to call other tools for actual reroute. However, it does not explicitly exclude usage in other scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compose_assembly_partsA
Compose all assembly parts into a single output STL file.
Merges the individual part meshes according to their
positions and writes the combined model to ``output_path``.
Args:
assembly_json: JSON string of the current assembly state.
output_path: File path where the composed STL will be written.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| output_path | Yes | ||
| assembly_json | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, but the description discloses important behavioral side effects: on success it opens Kiln's interactive 3D stage, oversized meshes are decimated automatically for the stage, and the PNG preview is only a starting point. It does not mention overwrite behavior or failure modes, so it stops 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?
The description is front-loaded with a clear purpose sentence, followed by behavior, Args, and a labeled INLINE 3D STAGE section. The stage explanation is a bit verbose, especially the parenthetical host-specific details, but each sentence contributes useful operational context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description covers the operation, both parameters, the output file, the viewer side effect, and automatic mesh decimation. It omits overwrite semantics and error conditions, but an agent has enough context to invoke the tool correctly in most cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the Args block adds meaningful semantics: assembly_json is 'a JSON string of the current assembly state' and output_path is 'where the composed STL will be written.' It does not detail the internal structure of assembly_json, but it compensates reasonably for a two-parameter tool.
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 opens with a specific statement, 'Compose all assembly parts into a single output STL file,' and elaborates with 'Merges the individual part meshes according to their positions and writes the combined model to output_path.' This clearly identifies the verb, resource, and output, and distinguishes it from sibling merge/compose tools by targeting all assembly parts into one STL.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, nor are alternatives named. The phrase 'current assembly state' and the merging behavior imply it is meant for turning an assembled model into a combined STL, but the description does not contrast it with similar sibling tools like compose_models or merge_stl.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compose_modelsA
Merge multiple mesh files into a single combined model.
Concatenates all triangle geometry from the input files into one
output STL. No boolean operations — bodies are simply combined.
Useful for multi-part assemblies or adding components to a design.
**See also:** ``merge_mesh_files`` for the same operation with
a different parameter style, or ``merge_stl`` for positional
offset support.
:param file_paths: List of .stl/.obj/.glb file paths to merge.
:param output_path: Path for the combined output STL.
:returns: Dict with merge statistics.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| file_paths | Yes | ||
| output_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the full burden. It discloses key behavioral facts: no boolean operations, output format is STL, returns a dict with stats, opens an inline 3D stage, and auto-decimates oversized meshes. It even clarifies the PNG preview is not the whole experience.
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 well-structured with a clear summary, see-also, parameter docs, and a dedicated inline-stage section. It is somewhat long, but each part adds value; however, the INLINE 3D STAGE paragraph could be condensed without losing essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and moderate complexity, the description covers all critical aspects: operation semantics, parameter meanings, return type, side effects (3D stage), and differences from close alternatives. It is sufficiently complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description compensates by defining file_paths as 'List of .stl/.obj/.glb file paths' and output_path as 'Path for combined output STL.' This adds format and purpose beyond bare schema names, though it could specify details like extension handling or path behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Merge multiple mesh files into a single combined model.' It further clarifies the operation ('Concatenates all triangle geometry... into one output STL') and explicitly distinguishes from sibling tools via 'See also: merge_mesh_files... or merge_stl...'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage context ('Useful for multi-part assemblies or adding components to a design') and names alternatives with differentiators ('merge_mesh_files for the same operation with a different parameter style, or merge_stl for positional offset support').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compose_multicolor_3mfA
Compose a multi-color / multi-material .3mf from multiple STL files.
Creates a **single print-ready .3mf** containing all parts with per-part
AMS/extruder slot assignments. This is the correct way to send a
multi-color design to any FDM printer — the printer receives one file,
not multiple.
Compatible with:
* **BambuStudio / Bambu A1, X1, P1 + AMS** — reads ``Metadata/model_settings.config``
* **PrusaSlicer / MMU** — reads ``slic3rpe:extruder`` on each ``<item>``
* **Cura** and any 3MF-capable slicer
Typical two-color workflow::
# 1. Export body STL (main color, e.g. grey PLA)
# 2. Export accent STL (second color, same coordinate origin)
# 3. Compose:
result = compose_multicolor_3mf(parts=[
{"stl_path": "/tmp/body.stl", "extruder": 1,
"name": "body", "color": "#AAAAAA", "material": "PLA Grey"},
{"stl_path": "/tmp/qr_pads.stl", "extruder": 2,
"name": "qr_code", "color": "#111111", "material": "PLA Black"},
])
# 4. Upload and print:
upload_file(result["output_path"])
start_print(result["output_path"])
Args:
parts: List of part dicts. Each dict requires:
* ``stl_path`` (str) — absolute path to the STL for this part
* ``extruder`` (int) — 1-indexed AMS slot (1 = AMS tray 1 on Bambu)
Optional per-part keys:
* ``name`` (str) — label shown in the slicer object list
* ``color`` (str) — hex preview color e.g. ``"#AAAAAA"`` (display only)
* ``material`` (str) — filament label e.g. ``"PLA Grey"`` (display only)
output_path: Where to write the .3mf. Defaults to a temp file whose
path is returned in the result.
Returns:
Dict with ``success``, ``output_path``, ``parts``, ``total_triangles``,
``total_vertices``, ``extruder_map``, and ``message``.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| parts | Yes | ||
| output_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses post-processing behavior: opens an interactive 3D stage, auto-decimates oversized meshes, and notes the PNG preview is not the full experience. Since no annotations are provided, this transparency is fully covered by the description.
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 detailed and well-structured with sections for purpose, compatibility, workflow, parameters, and returns. While slightly long, the example and clarity justify the length; no redundancy detected.
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 the tool's purpose, parameters, output format, return values, and behavioral side effects. It is comprehensive for a tool of this complexity, including notes on viewer behavior and mesh handling.
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 schema has no descriptions, but the description thoroughly explains 'parts' (required/optional keys) and 'output_path' (default behavior). Includes a concrete example that maps parameter names to values, adding meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool composes a multi-color .3mf from multiple STL files, with a specific verb and resource. It distinguishes itself by emphasizing it produces a single print-ready file for FDM printers, differentiating from other file-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use: 'This is the correct way to send a multi-color design to any FDM printer.' Also includes compatibility details and a workflow example, making the use case unambiguous relative to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compose_part_from_primitivesA
Build a functional part by composing geometric primitives with booleans.
The **CAD-aware generation path** -- instead of asking text-to-mesh AI
to guess at geometry, describe parts as a tree of primitives combined
with boolean operations. Produces exact, deterministic, functional parts.
**SAFETY DEFAULT (changed 2026-04-15):** ``center_on_bed=True`` is the
default. OpenSCAD primitives are natively centered on the model origin
(``cylinder(h,r)`` produces geometry centered on X/Y = (0,0), which
means half the geometry lives at NEGATIVE X/Y). Sending such an STL
to most FDM printers (Bambu, Prusa, Ender, Creality) — whose bed
origin is the front-left corner — causes the nozzle to drive off-bed
into the purge/wipe assembly on layer 1. This happened once on a
Bambu A1 (incident #0, 2026-04-15, nearly damaged the printer).
With ``center_on_bed=True`` the output STL is translated so it sits
centered on the build plate and its lowest point touches z=0. Set
``center_on_bed=False`` only if your downstream flow expects
origin-centered geometry (e.g. further CAD composition).
**Operation format** -- each item is either a primitive or boolean:
Primitive: ``{"type": "primitive", "shape": "<shape>",
"params": {...}, "translate": [x,y,z], "rotate": [rx,ry,rz]}``
Boolean: ``{"type": "boolean", "operation": "union|difference|intersection",
"children": [op1, op2, ...]}``
**Primitive shapes and params:**
- cube: ``{"size": [x,y,z]}`` or ``{"size": scalar}``
- cylinder: ``{"h": height, "r": radius}`` or ``{"h", "r1", "r2"}``
- sphere: ``{"r": radius}``
- cone: ``{"h": height, "r1": bottom_r, "r2": top_r}``
- torus: ``{"major_r": ring_radius, "minor_r": tube_radius}``
- wedge: ``{"width": w, "depth": d, "height": h}``
- hex_prism: ``{"r": radius, "h": height}`` -- hexagonal (for nuts)
- text: ``{"text": "string", "size": 10, "depth": 2}``
- rounded_cube: ``{"size": [x,y,z], "radius": 1}``
- pipe: ``{"h": height, "outer_r": 10, "inner_r": 8}``
Requires OpenSCAD installed on the system.
:param operations: List of operation dicts (primitive/boolean tree).
:param output_path: Output path (defaults to temp file).
:param center_on_bed: Translate output to bed-center (default True).
:param bed_x_mm: Build plate X dimension for centering (default 256).
:param bed_y_mm: Build plate Y dimension for centering (default 256).
:param printer_id: Optional supported printer model id. When
provided, printer intelligence supplies the bed size.
:returns: Dict with result path, SCAD code, triangle count, and
(if centered) ``bed_centered=True`` + applied translation.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| bed_x_mm | No | ||
| bed_y_mm | No | ||
| operations | Yes | ||
| printer_id | No | ||
| output_path | No | ||
| center_on_bed | No |
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 discloses the safety default change with a specific incident reference, explains the centering behavior and its implications for FDM printers, and describes the output behavior including the inline 3D stage and decimation. It also notes the return values (result path, SCAD code, triangle count, bed_centered flag). This is rich behavioral context beyond what the schema 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?
The description is long but well-structured with clear sections (CAD-aware generation path, safety default, operation format, primitive shapes, requirements, params). It front-loads the core purpose and then provides necessary detail. Some redundancy exists (e.g., repeating the safety incident), but it's justified for emphasis. It earns its length given the complexity of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 params, nested operations structure, no output schema), the description is remarkably complete. It covers the operation tree format, all primitive shapes, the safety-critical centering behavior, the OpenSCAD dependency, and the return value structure. It even mentions the inline 3D stage behavior. There's no output schema, so the description's explanation of returns is essential and provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does: it explains the 'operations' parameter in detail with the operation format and all primitive shapes and params. It also explains 'center_on_bed', 'bed_x_mm', 'bed_y_mm', and 'printer_id' semantics. However, it doesn't explicitly describe 'output_path' beyond 'defaults to temp file', which is minor. The description adds significant meaning beyond the schema's bare property names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Build a functional part by composing geometric primitives with booleans.' It specifies the verb (build/compose), the resource (functional part from geometric primitives), and the method (boolean operations). It distinguishes itself from sibling tools like 'compose_assembly_parts' and 'compose_models' by focusing on primitives and booleans, and from 'boolean_mesh_op' by being CAD-aware and deterministic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool: 'instead of asking text-to-mesh AI to guess at geometry, describe parts as a tree of primitives combined with boolean operations.' It also explains the safety default and when to set center_on_bed=False ('only if your downstream flow expects origin-centered geometry'). It mentions the requirement of OpenSCAD installed, which is a prerequisite. It doesn't explicitly name alternative tools, 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.
configure_ssoA
Configure SSO (OIDC or SAML) for Enterprise authentication.
Enterprise feature. Sets up single sign-on with your identity provider
(Okta, Google Workspace, Azure AD, Auth0, etc.).
Args:
issuer_url: IdP issuer URL (e.g. ``https://accounts.google.com``).
client_id: OIDC client ID or SAML entity ID.
protocol: ``"oidc"`` or ``"saml"``.
client_secret: OIDC client secret (optional for public clients).
redirect_uri: Callback URL after auth. Default: ``http://localhost:8741/sso/callback``.
allowed_domains: Comma-separated email domains (e.g. ``"acme.com,partner.org"``).
role_mapping: JSON string mapping IdP groups to Kiln roles
(e.g. ``'{"admins":"admin","devs":"engineer"}'``).
| Name | Required | Description | Default |
|---|---|---|---|
| protocol | No | oidc | |
| client_id | Yes | ||
| issuer_url | Yes | ||
| redirect_uri | No | ||
| role_mapping | No | ||
| client_secret | No | ||
| allowed_domains | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description partially compensates by detailing parameters and providing examples, but it does not disclose side effects (e.g., whether SSO is immediately activated, whether existing config is overwritten) or return behavior. Essential behavioral traits are missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a clear single-line summary and organized as an Args block. It is slightly lengthy but justified given the complexity of 7 parameters. Every sentence adds value, though could be slightly more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers parameters well but omits return value information, prerequisites (e.g., admin role), and potential failure modes. The tool's complexity warrants more contextual depth.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries full burden. It adds significant meaning by explaining each parameter with examples, defaults, and optionality (e.g., client_secret optional for public clients, role_mapping JSON string). This greatly aids agent understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool configures SSO for enterprise authentication, specifying protocols (OIDC/SAML) and listing identity provider examples. It distinguishes well from unrelated sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (enterprise feature, setting up SSO) but does not explicitly state when to use this tool over related siblings like sso_status, sso_login_url, or sso_exchange_code. No alternatives or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confirm_actionA
Execute a previously requested action that requires confirmation.
When ``KILN_CONFIRM_MODE`` is enabled, destructive tools (safety level
``"confirm"`` or ``"emergency"``) return a confirmation token instead of
executing immediately. Pass that token here to proceed.
Args:
token: The confirmation token returned by the original tool call.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description bears full burden. It discloses that the tool executes a previously requested action and explains the token mechanism. No contradictions or hidden behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with a clear purpose statement, conditional context, and a parameter docstring. No wasted words, front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple single-parameter tool with no output schema, the description fully covers purpose, usage, and parameter meaning. No 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?
The input schema has no parameter description (0% coverage). The description compensates by explaining 'token' as 'The confirmation token returned by the original tool call,' adding essential meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Execute a previously requested action that requires confirmation,' which is a specific verb+resource. It distinguishes itself from siblings by explaining the unique confirmation mechanism.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool: 'When KILN_CONFIRM_MODE is enabled, destructive tools return a confirmation token... Pass that token here.' It provides clear context and behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confirm_print_recoveryA
Confirm that a recovery plan should proceed.
For plans requiring human confirmation, transitions from
``awaiting_confirmation`` to ``executing``.
Args:
session_id: The session_id to confirm.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
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 for behavioral disclosure. It describes the state transition but does not mention side effects, permissions required, or whether the action is reversible. More transparency about what happens after confirmation would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. The main purpose is stated in the first line, followed by a brief explanation and a properly formatted Args section. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers the essential aspects: what it does, when to use it, and what input is needed. It could be more complete by noting idempotency or failure cases, but overall it is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds minimal meaning to the single parameter 'session_id' by stating 'The session_id to confirm.' With schema description coverage at 0%, the description provides some context but lacks richer details like format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action and resource: 'Confirm that a recovery plan should proceed.' It specifies the state transition from 'awaiting_confirmation' to 'executing', which distinguishes it from sibling tools like 'cancel_print_recovery' and 'complete_print_recovery'.
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 states the context: 'For plans requiring human confirmation, transitions from awaiting_confirmation to executing.' This implies when to use the tool, but does not explicitly mention when not to use it or provide direct alternatives. However, given sibling tool names, the usage is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connect_provider_accountA
Connect a local printer to a provider account (integration path).
Args:
name: Human-readable printer name (e.g. "Prusa MK4 #2").
location: Geographic location (e.g. "Austin, TX").
capabilities: Optional dict of printer capabilities (build volume,
supported materials, etc.).
price_per_gram: Price per gram of filament in USD (optional).
Registers this printer with the configured partner provider
integration (currently 3DOS).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| location | Yes | ||
| capabilities | No | ||
| price_per_gram | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. However, it only states the action (connects/registers) without describing side effects, permissions required, reversibility, error behavior, or impact on existing connections. The mention of 'currently 3DOS' provides limited context but is insufficient for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (a few sentences), front-loaded with the main purpose, and includes a structured parameter list. No unnecessary information or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the purpose and all parameters, but lacks information on return values (no output schema), error handling, prerequisites (e.g., configured provider account), and behavioral context. Given the absence of annotations and the complexity of the sibling toolset, the description is minimally adequate but leaves gaps for safe usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description includes an 'Args' section that explains each parameter with examples and meaning (e.g., name as human-readable, location as geographic, capabilities as optional dict, price_per_gram as price). This fully compensates for the schema's lack of descriptions, making the parameters highly clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: connecting a local printer to a provider account (integration path) and registering it with 3DOS. It uses specific verbs ('connect', 'register') and identifies the resource, differentiating it from sibling tools like 'register_printer' by highlighting the provider integration aspect.
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 does not provide any guidance on when to use this tool versus alternatives (e.g., 'register_printer' or other printer connection tools). It only states the purpose without indicating prerequisites, exclusions, or scenarios where other tools would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consumer_onboardingA
Get the guided onboarding workflow for users without a 3D printer.
Returns a step-by-step guide covering model discovery/generation, material recommendations, pricing, ordering, and delivery tracking. Perfect for first-time users who want to manufacture a custom part.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It describes a retrieval operation (returns a guide) with no mention of side effects, state changes, or prerequisites. While the behavior is implied to be safe and non-destructive, the description lacks explicit disclosure about authentication requirements or potential impacts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with three well-structured sentences. The first sentence immediately conveys the primary purpose, the second lists key contents, and the third provides context. No redundant or unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema), the description adequately covers the returned guide's scope. However, it omits any mention of prerequisites (e.g., user account) or post-action expectations, leaving minor gaps for a first-time user.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so schema description coverage is 100%. The description does not need to add parameter information, but it also does not add any extra semantic context beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states exactly what the tool does: 'Get the guided onboarding workflow for users without a 3D printer,' specifying the target audience and the content of the guide (model discovery, material recommendations, etc.). This distinguishes it from siblings like 'get_started' or other onboarding tools by focusing on users without a 3D printer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates the tool is 'Perfect for first-time users who want to manufacture a custom part,' providing clear use context. However, it does not explicitly state when not to use it or mention alternative tools, leaving some ambiguity about scenarios where other tools might be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contribute_community_printA
Contribute a print outcome to the community registry.
Adds an anonymous print record for community aggregation.
Only geometric signatures and settings are stored — never
file contents, user IDs, or file paths.
Args:
geometric_signature: Geometric signature from fingerprinting.
printer_model: Printer model name.
material: Material used.
settings: Print settings dict.
outcome: ``"success"``, ``"failed"``, or ``"partial"``.
quality_grade: Grade from ``"A"`` to ``"F"`` (default ``"B"``).
failure_mode: Optional failure description.
print_time_seconds: Print duration in seconds.
job_id: The print's job id when known — it anchors the
federation dedupe key, so a print that was also
watched (or recorded via ``record_print_outcome``)
ships to the community pool once, not twice.
geometric_signature_v2: ``fingerprint_model``'s
``geometric_signature_v2``. Pass it: it is what keeps
this contribution from being averaged into a different
design that shares the older signature.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | No | ||
| outcome | Yes | ||
| material | Yes | ||
| settings | Yes | ||
| failure_mode | No | ||
| printer_model | Yes | ||
| quality_grade | No | B | |
| print_time_seconds | No | ||
| geometric_signature | Yes | ||
| geometric_signature_v2 | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden and does well: it states anonymity, exactly what is stored, what is never stored, and how job_id prevents duplicate federation contributions. It could add return behavior or error semantics, but the privacy and data-flow transparency are strong.
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 front-loaded with purpose and privacy, then uses a structured Args block. Every sentence and argument explanation serves a functional or safety-relevant purpose, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter write tool with no annotations and no output schema, this description is quite complete: it covers purpose, privacy guarantees, dedupe, and all parameter meanings. It is only slightly incomplete in not describing the tool's response/return value or failure behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the Args section compensates fully by explaining every parameter beyond the schema. It provides outcome enum values, quality grade range and default, optionality, job_id dedupe meaning, and the geometric_signature_v2 rationale, adding substantial semantic value.
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 opens with a clear verb and resource: "Contribute a print outcome to the community registry." It immediately clarifies the anonymous aggregation purpose and differentiates from the related record_print_outcome flow by explaining the dedupe semantics around job_id.
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?
Guidance is mostly implied rather than explicit. The dedupe note about record_print_outcome and watched prints gives context on when job_id matters, but the description never directly states when to choose this tool over record_print_outcome or other community-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_assemblyB
Create a new empty assembly.
Returns the assembly state as a JSON-serialisable dict that
must be passed back to subsequent assembly tools.
Args:
name: Human-readable name for the assembly.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must fully disclose behavior. It discloses that the tool returns a JSON-serialisable dict that must be passed back, which is crucial for proper usage. However, it lacks details on side effects, idempotency, or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences explaining the purpose and return value, followed by a clear args section. It avoids unnecessary detail and is well-structured for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single parameter and no output schema, the description covers the essential usage flow (create and pass to subsequent tools). However, it does not explain what an assembly is in this context or any prerequisites, which might be needed for complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% parameter description coverage. The description adds 'Human-readable name for the assembly' for the 'name' parameter, which provides semantic context beyond the schema's type-only definition. However, it could give more constraints like uniqueness or length limits.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new empty assembly', identifying the verb (create) and resource (empty assembly). It distinguishes itself from sibling tools like add_assembly_part or compose_assembly_parts by emphasizing 'empty' and noting the return value must be passed to subsequent assembly tools, indicating it is the initial step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that this tool is used as the first step in assembly creation by stating the returned state must be passed to subsequent assembly tools. However, it does not provide explicit guidance on when not to use it or alternatives among the many sibling assembly tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_print_service_orderA
Create a Print-as-a-Service order and get a quote.
Provide ONE of ``model_path``, ``model_url``, or ``prompt``.
Returns a quote with local and fulfillment options. Call
``print_service_quote`` with the order ID to confirm.
Args:
model_path: Local path to a 3D model file.
model_url: URL to download a 3D model.
prompt: Text prompt for AI model generation.
material: Material type (default ``"pla"``).
intent: Print intent — ``"strong"``, ``"pretty"``, or ``"cheap"``.
quantity: Number of copies (default 1).
color: Desired color (optional).
prefer_local: Prefer local printing (default True).
printer_name: Specific local printer name (optional).
max_budget_usd: Maximum budget in USD (optional).
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | ||
| intent | No | ||
| prompt | No | ||
| material | No | pla | |
| quantity | No | ||
| model_url | No | ||
| model_path | No | ||
| prefer_local | No | ||
| printer_name | No | ||
| max_budget_usd | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It mentions returning a quote but does not describe side effects (e.g., order persistence, resource reservation), authentication requirements, rate limits, or potential destructiveness. The word 'create' implies mutation, but no safety details are given.
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 structured with a clear first line stating purpose, a usage note, and a clean Args list. It is appropriately sized for 10 parameters and front-loaded, though slightly verbose in the Args section.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description only vaguely mentions 'returns a quote with local and fulfillment options.' Missing details on output format, error handling, and prerequisites. Completeness is adequate but not thorough for a 10-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries full burden. It explains all 10 parameters, including defaults for material, quantity, prefer_local, and lists example intents (strong, pretty, cheap). This adds significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a Print-as-a-Service order and returns a quote. It specifies the mutually exclusive inputs (model_path, model_url, or prompt) and includes a reference to a sibling tool (print_service_quote) for confirmation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some usage guidance (require one of three inputs, call print_service_quote to confirm) but does not explicitly state when not to use this tool or compare with other siblings like print_service_status or cancel_print_service_order.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectA
Create a project for cost tracking.
Manufacturing bureaus use projects to allocate printer time, material
costs, and fulfillment fees to specific client engagements.
Args:
name: Project name (e.g. ``"Widget Batch 42"``).
client: Client or cost-center identifier.
description: Optional project description.
budget: Optional budget cap in the configured currency.
Requires Enterprise license.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| budget | No | ||
| client | Yes | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It states 'Requires Enterprise license' but does not mention idempotency, side effects (e.g., duplicate handling), error conditions, or return value. This is a significant gap for a creation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficient: a clear purpose sentence, a contextual paragraph, a structured Args list, and a requirement note. The contextual paragraph adds value but could be condensed. Overall, it is well-organized and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description should explain return values and error scenarios, but it does not. It includes the enterprise license prerequisite. For a simple creation tool, the coverage is adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description's Args section is critical. It provides meaningful descriptions for all four parameters, including an example for name and clarifying the client as a cost-center identifier. However, it could add constraints (e.g., name length, budget format).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a project for cost tracking, using a specific verb ('create') and resource ('project'). It distinguishes itself from siblings like log_project_cost and project_cost_summary by emphasizing the creation aspect and the usage context for manufacturing bureaus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context that projects are used to allocate costs to client engagements, implying use when a new cost-tracking project is needed. However, it lacks explicit guidance on when not to use this tool or what alternatives exist, such as log_project_cost for adding costs to existing projects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cross_section_viewA
Compute a 2D cross-section of a mesh at a cutting plane.
Slices the mesh perpendicular to the chosen axis and returns
contour polygons and cross-sectional area. Useful for inspecting
internal geometry (e.g., wall thickness, hole placement).
:param file_path: Path to STL file.
:param plane: Axis perpendicular to the cut -- "x", "y", or "z".
:param offset_ratio: Fractional position 0.0-1.0 (default 0.5 = midpoint).
:param offset_mm: If set, absolute position in mm (overrides offset_ratio).
:returns: Dict with contour_count, contour_points, cross_section_area_mm2.
| Name | Required | Description | Default |
|---|---|---|---|
| plane | No | z | |
| file_path | Yes | ||
| offset_mm | No | ||
| offset_ratio | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains that the tool slices the mesh and returns contour polygons and area, implying it is read-only. No annotations are provided, so the description carries the burden, but it lacks details on computational cost, limitations, or error handling.
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 well-structured with a single-sentence summary, followed by a detailed explanation and parameter list. It is concise without being overly brief, though it could be slightly more terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters, no schema descriptions, no output schema, and no annotations, the description is fairly complete. It explains all parameters and return values, though additional examples or error handling notes would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning beyond the schema, explaining each parameter: file_path (path to STL file), plane (axis perpendicular to cut), offset_ratio (fractional position 0.0-1.0), and offset_mm (absolute position in mm, overriding offset_ratio). Schema description coverage was 0%, so this compensation is valuable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool computes a 2D cross-section of a mesh at a cutting plane, using specific verbs and resources. It distinguishes itself from sibling tools like analyze_mesh_geometry or repair_mesh by focusing on cross-sectional analysis.
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 specifies the tool is useful for inspecting internal geometry such as wall thickness and hole placement. However, it does not provide explicit guidance on when not to use it or mention alternative tools for other analyses.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
database_statusA
Check database backend status and configuration.
Reports whether Kiln is using SQLite or PostgreSQL, the connection status, and key metrics. Useful for verifying a PostgreSQL migration or diagnosing connectivity issues.
Requires Enterprise license.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses what the tool reports (SQLite/PostgreSQL, connection status, key metrics) and requires an Enterprise license. No annotations provided, so description carries full burden.
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 plus a license note, front-loaded with purpose and actionable context. 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?
Fully adequate for a zero-parameter, read-only tool. Covers purpose, reported info, use cases, and licensing.
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?
No parameters exist; schema coverage is 100% (empty). The description adds no parameter info, but baseline for zero-param tools is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Check') and resource ('database backend status and configuration'), clearly distinguishing it from sibling tools like health_check or kiln_health by focusing on database details.
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?
Provides explicit use cases: 'Useful for verifying a PostgreSQL migration or diagnosing connectivity issues.' Does not explicitly state when not to use, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decorate_surfaceA
Put any image, text, or pattern onto a 3D model surface.
For repeating patterns (wood grain, camo, honeycomb) that tile across
the entire surface, use ``apply_geometric_texture`` or
``apply_procedural_texture`` instead. This tool is for one-off
content placement (logos, text, images).
Takes a model and content (image file, text string, SVG) and returns
a new STL with the content embossed or debossed onto the surface.
Automatically detects the best face for placement and scales content
to fit. Single-color coin-relief style — no multi-material needed.
**Content types** (auto-detected from *content* string):
- **Image file** (PNG/JPG/SVG): ``"/path/to/photo.jpg"``
- **Text**: ``"text:KILN"`` or ``"text:Hello World"``
**Image styles** for raster images:
- ``"auto"`` — detects the image kind: a logo/wordmark/line-art
image routes to ``"stencil"`` (crisp traced strokes); a
continuous-tone photo routes to ``"coin"``
- ``"coin"`` — histogram-equalized posterize, best for FDM coin-relief
- ``"portrait"`` — edge-detected line art
- ``"composite"`` — posterize base + edge overlay hybrid
- ``"medallion"`` — coin + raised border ring (premium look)
- ``"photo"`` — simple 3-level posterize
- ``"stencil"`` (alias ``"logo"``) — the mark's ink is traced into
vector strokes and carved directly: crisp edges, no background
tile, correct orientation. The right choice for brand logos.
- ``"lithophane"`` — full gradient for backlit prints
**Examples**::
decorate_surface(model_path="coaster.stl", content="photo.jpg",
mode="deboss", depth_mm=1.5, image_style="coin")
decorate_surface(model_path="keychain.stl", content="text:KILN",
face="top", depth_mm=0.5)
Requires OpenSCAD installed locally for compilation.
:param model_path: Path to the base model (STL or OBJ).
:param content: What to put on the surface — file path (PNG/JPG/SVG)
or ``"text:..."`` for text.
:param face: Which face to decorate. ``"auto"`` picks the largest
flat face. Also accepts ``"top"``, ``"bottom"``, ``"front"``,
``"back"``, ``"left"``, ``"right"``. A deboss now carves into
the body on every cardinal face, and ``offset_x/y_mm`` place
face-locally (see below). ``top``/``bottom``/``front`` are the
battle-tested three; ``back`` carves and offsets correctly but
content may still land rotated 180° (content orientation is
unaddressed by the placement fix); on ``left``/``right`` the
carve lands but the offset axis scaling is less verified. Prefer
the front-facing three when exact placement matters.
``"wall"`` wraps TEXT around the upright round wall of a cup,
vase or bowl (STL, text + deboss only). Letters stay legible and
read correctly from outside; size and carve depth may be adjusted
to keep them readable and the wall sound, and the response
reports what was actually used. On the wall, *scale* sets letter
height as a share of the wall and *absolute_size_mm* pins it
exactly; *offset_x/y_mm* and *placement* do not apply (the line
sits centred on the front at mid-height). The wrap engine ships
with kiln-pro and is included on the hosted service
(api.kiln3d.com) on every tier; without it locally, use a flat
face.
:param depth_mm: Emboss/deboss depth in mm. ``0`` = auto based on
*material* (e.g. 0.6 mm for PLA, 1.2 mm for TPU).
:param mode: ``"deboss"`` (cut into surface) or ``"emboss"`` (raised).
:param scale: Fraction of the face to cover (0.1-1.0, default 0.7).
:param material: Material for depth auto-tuning (default ``"PLA"``).
:param content_type: Override auto-detection: ``"svg"``, ``"image"``,
``"text"``. Default ``"auto"`` detects from *content*.
:param offset_x_mm: Placement offset from the face centre along the
face's own WIDTH axis, in mm — positive slides the content
toward the content's right. Offsets are FACE-LOCAL: they are
applied inside the face-aligning rotation, so they always move
the art in the face plane, never along its normal.
:param offset_y_mm: Same, along the face's HEIGHT axis — positive
slides the content toward the content's top. Measured
world-axis mapping per face: top +y, bottom −y, front +z,
back −z.
:param image_style: Image preprocessing style. ``"auto"`` uses
``"coin"`` for photos. See docstring for all options.
:param placement: Named position preset for content placement.
``"center"`` (default), ``"top"``, ``"bottom"``, ``"top-rim"``,
``"bottom-rim"``. Use ``"bottom"`` for text below a centered
portrait on a coaster. Manual ``offset_x/y_mm`` is added on
top of the preset for fine-tuning.
:param svg_id: Target a specific SVG group by ``id`` attribute when using
SVG ``import()`` fallback on OpenSCAD 2024+. E.g. ``"icon"`` targets
``<g id="icon">``. No effect on the native polygon path.
:param svg_layer: Target a specific SVG layer by ``layer`` attribute when
using SVG ``import()`` fallback on OpenSCAD 2024+. E.g.
``"foreground"`` targets a layer named ``foreground``.
:param template_id: Optional template ID (e.g. ``"nameplate"``), used
for provenance tracking only. To auto-fill ``face``, ``depth_mm``,
``mode``, ``scale``, and ``image_style`` from a template's curated
decoration profile, call ``resolve_template_decoration()`` first
(kiln-pro) and pass its results explicitly.
:returns: Dict with output STL path, preview info, and metadata.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| face | No | auto | |
| mode | No | deboss | |
| scale | No | ||
| svg_id | No | ||
| content | Yes | ||
| depth_mm | No | ||
| material | No | PLA | |
| placement | No | center | |
| svg_layer | No | ||
| model_path | Yes | ||
| image_style | No | auto | |
| offset_x_mm | No | ||
| offset_y_mm | No | ||
| template_id | No | ||
| content_type | No | auto | |
| absolute_size_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description thoroughly discloses behavioral traits: it can open an interactive 3D stage on success, decimates oversized meshes, requires OpenSCAD locally, has known limitations on left/right faces (rotation and offset axis scaling), and explains face-local offsets. No annotations are provided, so the description fully carries transparency.
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 long but well-structured with clear sections (purpose, differentiation, parameter details, examples, side effects). It is front-loaded with the main purpose and uses bullet points and parameter blocks, maintaining readability without fluff. The repetition of image_style options is minor and acceptable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all necessary context: dependencies (OpenSCAD), output details (STL path, preview, metadata), side effects (inline 3D stage), fallbacks (SVG import on OpenSCAD 2024+), and limitations (wall mode only for text, face orientation issues). It is complete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 16 parameters are described in the parameter list with semantics, defaults, and examples (e.g., depth_mm auto based on material, offset_x/y_mm face-local positioning, image_style and its options). The schema has no descriptions, so the tool description provides complete parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool puts any image, text, or pattern onto a 3D model surface, and clearly differentiates from sibling tools (apply_geometric_texture, apply_procedural_texture) by specifying it is for one-off content placement versus repeating patterns. This provides a specific verb, resource, and sibling distinction.
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 explicit when-to-use guidance, saying 'For repeating patterns... use apply_geometric_texture or apply_procedural_texture instead. This tool is for one-off content placement.' It also provides detailed usage scenarios (e.g., 'wall' mode for cups, placement presets, and recommendations like preferring front-facing faces).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decoration_infoA
Get full details about a saved decoration.
Shows the decoration's proven settings, content paths, tags,
processing pipeline, and library location.
:param name: Decoration name or slug.
:returns: Dict with full decoration details and file paths.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It describes what is shown but fails to disclose whether the tool is read-only, if any side effects occur, or authorization requirements. The name and content imply retrieval, but no explicit behavioral traits are stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a one-line summary, a list of returned details, and a parametric docstring. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity (one simple param, no output schema), the description is fairly complete. It explains what the tool returns (Dict with details and file paths). However, it lacks examples or clarification of terms like 'proven settings'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It adds meaning by specifying that 'name' is a 'Decoration name or slug', which clarifies the parameter beyond the schema's type/title. Additional context like return type also aids understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves full details about a saved decoration, listing specific attributes like settings, paths, and tags. It distinguishes from siblings like 'list_decorations' (which lists all) and 'save_decoration' (which creates/modifies).
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 does not explicitly state when to use this tool versus alternatives like 'list_decorations' or 'save_decoration'. It implies usage for a specific decoration but lacks context on prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decoration_quota_statusA
Check your decoration quota — how many decorations you've used this month.
Free-tier users get 3 decorations per calendar month. Every paid tier has unlimited decorations.
Returns used count, limit, remaining, tier, and current month.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavioral traits. It implies a read-only check via 'Check' and 'Returns', but does not explicitly state it has no side effects, requires no auth, or is safe. The description adds some clarity about return fields but misses explicit safety disclosure.
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 concise sentences with front-loaded purpose ('Check your decoration quota'). Each sentence adds value: purpose, tier policy, return fields. No wasted words; whitespace does not detract.
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?
Simple tool with no params and no output schema; description fully explains what it returns and the tier context. Provides enough detail for an agent to know when to call and what to expect, without needing additional documentation.
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?
Zero parameters, so baseline is 4. The description adds valuable semantics beyond the empty schema by explaining the quota system (tier limits) and return fields (used, limit, remaining, tier, month), fully compensating for the absence of parameters and making the tool's purpose and output crystal clear.
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+resource: 'Check your decoration quota' and explicitly lists what it returns (used count, limit, remaining, tier, month). Distinguishes from sibling decoration tools like decoration_info or list_decorations by focusing solely on quota status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context that it's for checking quota usage, including tier policy (free vs paid). Does not explicitly name alternatives or exclusions, but the scope is obvious and self-contained. Sibling tools like decoration_info might overlap, but no cross-reference is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_agent_noteB
Remove a stored note or preference.
Args:
key: The key of the note to delete.
scope: The scope namespace (default ``"global"``).
printer_name: If provided, targets ``"printer:<name>"`` scope.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| scope | No | global | |
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It only states the operation is removal, without noting permanence, required permissions, or side effects. This is minimal transparency.
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 relatively concise, providing a one-line summary followed by parameter details in a clear format. It could be slightly tighter, but it efficiently covers the key points.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose and parameters adequately for a simple delete operation. However, it lacks any information about return values (no output schema) and error conditions, leaving the agent partially blind.
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 description adds significant meaning beyond the bare schema: it explains that 'scope' defines the namespace (default 'global') and 'printer_name' targets a specific scope 'printer:<name>'. This clarifies the interplay between parameters, which is crucial since schema descriptions are absent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Remove' and the resource 'a stored note or preference', making the purpose unambiguous. It also implicitly distinguishes from sibling 'save_agent_note' which adds notes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'save_agent_note'. There is no context on prerequisites, when to avoid, or how it fits into a workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_cached_modelA
Remove a model from the local cache (file and metadata).
Args:
cache_id: The unique cache ID of the model to delete.
| Name | Required | Description | Default |
|---|---|---|---|
| cache_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It states that both file and metadata are removed, implying irreversibility, but it does not mention side effects, permissions required, or consequences of deleting a model that may be referenced by other tools.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two focused sentences. The first sentence states the purpose, and the second lists the argument. No extraneous 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?
The tool is a simple destructive operation, but the description does not mention return value, error conditions (e.g., cache_id not found), or prerequisites. Given the lack of output schema, more context would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It describes cache_id as 'The unique cache ID of the model to delete,' adding minimal context beyond the schema property name. It does not explain how to obtain the cache_id or format requirements.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Remove' and the resource 'model from the local cache (file and metadata).' This differentiates it from siblings like get_cached_model or list_cached_models, which involve retrieval or listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of when not to use it, such as if the model is currently in use or if other tools should be preferred for certain scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_fileA
Delete a G-code file from the printer's storage.
Args:
file_path: Path of the file as shown by ``printer_files()``.
This is irreversible -- the file cannot be recovered once deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explicitly states the operation is irreversible, which is critical behavioral information. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three sentences: purpose, parameter clarification, and irreversible warning. Every sentence adds value without waste.
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 delete operation with one parameter and no output schema, the description covers purpose, parameter source, and irreversibility. It could mention error cases but is adequate overall.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It explains that 'file_path' should be obtained from 'printer_files()', adding meaning beyond the schema's type-only definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Delete' and resource 'G-code file from the printer's storage'. It is specific and distinguishes from sibling tools like 'delete_agent_note' or 'printer_files'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that the file path should come from 'printer_files()', hinting at a prerequisite. However, it does not explicitly state when to use this tool versus alternatives or provide exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_shipping_profileC
Delete a saved local shipping profile.
Args:
name: Profile name to delete.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description fails to disclose any behavioral traits like irreversibility, permissions required, or side effects. The agent is left uninformed about the operation's impact.
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 short and front-loaded, but it includes a redundant 'Args' section that duplicates the schema. While not verbose, it could be more efficient by omitting the repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter delete operation, the description is minimally adequate but lacks important details like error handling (e.g., profile not found) or confirmation of success.
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?
With 0% schema description coverage, the description must compensate, but it only restates the schema property ('Profile name to delete') without adding meaningful context, type, or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (delete) and the resource (saved local shipping profile). It is specific and distinguishes from sibling tools like save_shipping_profile and list_shipping_profiles.
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 guidelines are provided on when to use this tool versus alternatives, such as listing profiles first or saving before deleting. The agent receives no context about prerequisites or consequences.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_webhookA
Delete a registered webhook endpoint.
Args:
endpoint_id: The endpoint ID returned by ``register_webhook``.
Once deleted, the endpoint will no longer receive event notifications.
| Name | Required | Description | Default |
|---|---|---|---|
| endpoint_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. States the effect (no longer receive notifications) but lacks details on permanence, authentication, or error cases. Adequate but not comprehensive.
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?
Extremely concise with no wasted words. Clear structure: purpose line, arguments section, and a consequence note. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema, no annotations), the description covers the essential: what it does, what parameter it needs, and the outcome. Could mention error handling, but is sufficiently 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 coverage is 0%, but description adds meaning by specifying that endpoint_id comes from register_webhook, which is useful context beyond the schema's type and title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Delete a registered webhook endpoint.' with a specific verb and resource, and it distinguishes from sibling tools like register_webhook and list_webhooks.
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?
Specifies that endpoint_id is the ID returned by register_webhook and explains the consequence of deletion. Does not explicitly mention when not to use, but provides clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
design_advisorA
Ask which generation method to use for a design idea (triage tool — call FIRST).
Analyzes the design prompt and recommends:
- Which generation approach to use (template, OpenSCAD, or AI)
- Which template matches (if any)
- Material recommendations
- Key constraints to consider
- Estimated complexity
:param prompt: Text description of the desired object.
:param printer_model: Optional printer model for constraints.
:param material: Optional material the user has already named
("for ABS") — tunes the constraint analysis to it.
:returns: Dict with recommendations.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | ||
| material | No | ||
| printer_model | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries the burden. Explains the analysis process and what recommendations it provides. It is a read-only analysis, and the description makes that clear without needing further annotation.
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?
Short, front-loaded with purpose, followed by a clear list of outputs and parameter descriptions. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema or annotations, the description fully covers what the tool does, what inputs it expects, and what it returns. It also guides the agent on when to call it. Appropriate for a triage tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% in formal sense, but the description includes inline parameter docs explaining each field (prompt, printer_model, material). This adds meaning beyond the bare schema titles and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it is a triage tool to ask which generation method to use, and lists specific outputs (approach, template, materials, constraints, complexity). Differentiates itself by saying 'call FIRST', which positions it ahead of generation siblings.
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?
Tells agent to call this tool first, implying it should be used before generation tools. Does not explicitly state when not to use or list alternatives, but the context is clear enough for sequencing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
design_improvement_planA
Generate a complete structural improvement plan for a design.
The **full design reasoning pipeline** — combines risk analysis,
reinforcement recommendations, and load analysis into one actionable
report with an overall structural score (0-100, A-F grade).
This is the tool that makes Kiln a **design advisor**, not just a
geometry validator. It answers: "This bracket needs a gusset at the
load point" — not just "the part has thin walls."
The plan includes:
1. **Risks**: all structural weak points with locations and severity
2. **Reinforcements**: specific fixes with estimated strength gains
3. **Load analysis**: how the part handles forces, best print orientation
4. **Score**: overall structural grade with summary
:param file_path: Path to the STL file.
:param min_cross_section_mm2: Minimum safe cross-section area.
:param sharp_angle_threshold_deg: Angle for sharp edge detection.
:returns: Complete improvement plan as dict.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| min_cross_section_mm2 | No | ||
| sharp_angle_threshold_deg | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description clearly states the tool generates a report (read operation) with no side effects. It details the behavioral traits: combines risk analysis, reinforcements, load analysis, and produces a score. This fully discloses the tool's 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?
The description is well-structured with a clear outline of the plan components and a parameter list. It is slightly verbose with the docstring-style param descriptions, but each sentence adds value. It could be more concise by removing the redundant 'full design reasoning pipeline' phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately describes the return value as 'Complete improvement plan as dict' and lists the main components (risks, reinforcements, load analysis, score). It provides enough context for an agent to understand what the tool produces and how it fits into a design workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explicitly documents each parameter: 'file_path: Path to the STL file', 'min_cross_section_mm2: Minimum safe cross-section area', 'sharp_angle_threshold_deg: Angle for sharp edge detection.' This adds meaning beyond the schema's title 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?
The description clearly states the tool generates a 'complete structural improvement plan' and lists specific components (risks, reinforcements, load analysis, score). It distinguishes the tool as a 'design advisor' versus a 'geometry validator,' differentiating it from sibling tools like 'analyze_structural_risks' and 'assess_load_bearing'.
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 explains when to use this tool: for a comprehensive improvement plan that answers specific design questions (e.g., 'this bracket needs a gusset'). It implies it's for after basic validation. However, it does not explicitly exclude cases where simpler analysis tools suffice, nor does it list alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
design_to_gcode_pipelineA
End-to-end pipeline: description → template → STL → analysis → GCode.
One-call pipeline that:
1. Searches templates for best match
2. Generates STL via OpenSCAD
3. Runs structural risk analysis
4. Estimates weight
5. Slices to G-code (if slicer available)
:param description: Natural-language design description.
:param output_dir: Directory for output files (uses tempdir if empty).
:param material: Material for weight estimation and slicing.
:param printer_model: Printer model for slicer profile lookup.
:param infill_percent: Infill percentage for weight estimation.
:returns: Dict with paths to SCAD, STL, G-code files, weight, risks.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | PLA | |
| output_dir | No | ||
| description | Yes | ||
| printer_model | No | ||
| infill_percent | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description partially discloses behavior by listing steps and noting that slicing depends on slicer availability. However, it does not mention authorization needs, error handling, or whether the pipeline is destructive (e.g., creates files). Moderate transparency.
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 well-structured with a summary, enumerated steps, and a param section. It is concise and front-loaded, though the param block adds some length. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (5 params, no output schema, no annotations), the description explains the pipeline flow and return structure (paths, weight, risks). However, it lacks details on error handling, slicer unavailability, and partial results. Adequate but not fully comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description includes a param block that briefly explains each parameter, adding meaning beyond the schema (which has 0% coverage). However, explanations are minimal (e.g., 'Natural-language design description') and lack constraints or allowed values. Adequate but shallow.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb and resource: 'End-to-end pipeline: description → template → STL → analysis → GCode.' It enumerates each step, distinguishing it from sibling tools by bundling multiple stages into a single call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for a complete pipeline but does not explicitly state when to use this tool versus alternatives like 'generate_model' or 'slice_model'. No mention of prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_mesh_pocketsA
Detect pockets and cavities in a mesh before multi-part composition.
Analyzes a base model to find recessed regions (circular or rectangular
pockets) on top and bottom faces. Call this before compose_models or
multi_material_print to know pocket dimensions for overlay geometry.
:param file_path: Path to the STL file to analyze.
:param min_depth_mm: Minimum pocket depth to report (default 0.3mm).
:returns: Dict with pocket list, dimensions, and positions.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| min_depth_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must cover behavioral traits. It describes a read-only analysis without side effects, but lacks details on error handling, performance, or what happens when no pockets are found.
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?
Description is concise and front-loaded with the main purpose. Follows with details on use and parameters. Could be slightly more compact but overall well-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?
Given the tool's simplicity (2 params, no output schema), the description adequately covers purpose, usage context, parameters, and return type. Lacks edge cases or error scenarios but sufficient for effective selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, but the description adds meaningful explanations for both parameters: file_path as STL file path, min_depth_mm as minimum depth with default 0.3mm. This adds value beyond the schema's titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it detects pockets and cavities in a mesh, specifying it analyzes base models for recessed regions on top and bottom faces. It distinguishes from siblings by noting it should be called before compose_models or multi_material_print.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to call this before compose_models or multi_material_print to get pocket dimensions for overlay geometry. Provides clear context but does not mention alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_print_failureA
Analyze printer telemetry to detect and classify a print failure.
Examines current telemetry data and optional historical snapshots
to identify failure conditions such as thermal runaway, layer shift,
filament runout, adhesion loss, nozzle clogs, and more.
Args:
printer_name: Identifier of the printer to analyze.
telemetry: Current telemetry snapshot with keys like
``hotend_temp``, ``bed_temp``, ``connected``,
``filament_detected``, etc.
telemetry_history: Optional list of recent telemetry snapshots
for trend analysis (newest last).
job_info: Optional current job metadata with keys like
``file_name``, ``layer``, ``total_layers``, ``z_mm``.
Returns a failure report dict if a failure is detected, or a
success dict with ``failure_detected: False`` if no failure found.
| Name | Required | Description | Default |
|---|---|---|---|
| job_info | No | ||
| telemetry | Yes | ||
| printer_name | Yes | ||
| telemetry_history | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that the tool examines telemetry and optional history, lists detectable failures, and mentions return structure. It implies a read-only operation but does not state side effects or permissions, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is informative but slightly verbose with example keys and structured formatting. It is front-loaded with the main purpose and uses clear sections. Could be trimmed slightly without losing value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains the return value (failure report dict or success dict). All 4 parameters are described, including optional ones. Nested object schemas are illustrated with example keys, making the tool self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description fully compensates by describing each parameter: printer_name, telemetry with example keys, telemetry_history as optional list for trend analysis, job_info with example keys. This adds significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Analyze printer telemetry to detect and classify a print failure' and enumerates specific failure conditions (thermal runaway, layer shift, etc.), establishing a specific verb+resource+scope. It distinguishes from siblings by focusing on telemetry analysis, though not explicitly contrasting.
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 use when telemetry data is available but provides no explicit when-to-use, when-not-to-use, or alternative tools. Siblings like analyze_print_failure_smart or predict_print_failure exist but are not mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diagnose_meshA
Deep mesh defect analysis — self-intersections, holes, normals, fragments (defect-focused).
Goes deeper than ``analyze_mesh_geometry`` (which focuses on printability
scoring and overhang detection). Use this when you suspect mesh defects
or when ``repair_mesh`` didn't fix the issue.
Analyzes: self-intersections, inverted/inconsistent normals, degenerate
(zero-area) faces, floating fragments, detailed hole reporting (count,
size, location), and polygon count assessment for FDM printing.
Returns a structured report with severity level, defect list, and
actionable fix recommendations (specific MeshLab/Blender steps).
Requires the optional ``trimesh`` package (``pip install trimesh``).
Supports STL, OBJ, PLY, OFF, GLB, and GLTF formats.
Use this BEFORE slicing to catch problems that would cause print
failures or slicer errors. Complements ``validate_generated_mesh``
(basic checks) and ``analyze_printability`` (print-readiness scoring).
Args:
file_path: Path to a mesh file (STL, OBJ, PLY, OFF, GLB, GLTF).
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, but description details required trimesh package, supported formats, and structured report contents. Lacks any mention of side effects (likely read-only) but generally transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with bullet lists and clear sections. Front-loaded with key purpose and sibling distinction. Every sentence adds value.
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 minimal schema and no annotations, the description covers purpose, usage, output format, dependencies, and file support. Complete for this single-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter file_path is described with format list (STL, OBJ, PLY, etc.), adding value beyond the string type in schema. Full coverage of parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'deep mesh defect analysis' with specific defects listed. Explicitly distinguishes from sibling tool 'analyze_mesh_geometry' by noting its focus on printability vs defects.
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?
Explicit guidance: 'Use this when you suspect mesh defects or when repair_mesh didn't fix the issue.' Also advises to use before slicing and lists complementary tools with their roles.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diagnose_print_failure_liveA
Diagnose a print failure using live printer state + model geometry.
Unlike ``analyze_print_failure`` (which requires a job_id and
analyzes historical data), this tool works in real-time by
reading the current printer state and optionally analyzing
the model that was being printed.
Combines printer temperature deltas, bed adhesion analysis,
overhang geometry, material properties, and printer intelligence
to produce a ranked diagnosis with actionable fixes.
Args:
printer_name: Printer to diagnose. Omit for the default printer.
model_path: Path to the model file that was being printed.
Enables geometry-based diagnosis (adhesion, overhangs).
material: Filament material (e.g. ``"ABS"``, ``"PLA"``).
printer_id: Printer model ID (e.g. ``"bambu_a1"``).
Enables printer-specific intelligence lookup.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | ||
| model_path | No | ||
| printer_id | No | ||
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It details that it combines temperature deltas, bed adhesion, overhang geometry, etc., to produce a ranked diagnosis with fixes. This provides good insight into internal 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?
The description is well-structured with a clear main sentence, a distinction paragraph, and a bullet list of parameters. It is slightly lengthy but every sentence adds value, making it effective without being overly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no annotations or output schema, but the description covers purpose, parameter semantics, and distinction from sibling. It mentions the output is a 'ranked diagnosis with actionable fixes,' but lacks details on return format. Given the complexity, more specificity would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description's Args section thoroughly explains each parameter: printer_name (omit for default), model_path (enables geometry diagnosis), material (filament type), printer_id (enables intelligence lookup). This adds significant value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it diagnoses print failures using live printer state and model geometry. It distinguishes itself from analyze_print_failure by specifying real-time vs historical analysis.
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 explicitly contrasts with analyze_print_failure, giving context for when to use this tool. It also describes optional parameters, but does not provide explicit 'when not to use' or alternative sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diff_design_versionsA
Compute a unified diff between two design versions.
Version IDs are interpreted as ``<design_id>:<version_number>``
(e.g. ``my-coaster:2``). If no colon is present the string is
treated as a plain version number and the tool will attempt to
locate a design that contains that version.
Args:
version_id_a: The "from" version in ``design_id:N`` format.
version_id_b: The "to" version in ``design_id:N`` format.
Returns:
A unified diff string showing changes from version A to B.
| Name | Required | Description | Default |
|---|---|---|---|
| version_id_a | Yes | ||
| version_id_b | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains the version ID format (design_id:N) and the behavior when no colon is present, and states the return type (unified diff string). With no annotations, it carries the burden well but lacks error handling details.
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 appropriately concise, uses a clear structure with Args/Returns sections, and wastes no words while covering key aspects.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers input format and output type adequately for a simple tool, but given no output schema, it could benefit from an example or note on error cases like missing versions.
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 description adds clear directional semantics ('from' and 'to' versions) beyond the schema's bare titles 'Version Id A' and 'Version Id B', which is critical for correct usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Compute a unified diff between two design versions,' specifying the verb (compute diff) and resource (design versions). This distinguishes it from siblings like list_design_versions and compare_mesh_versions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for comparing versions via diff but provides no explicit when-to-use or alternatives among the many version-related sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover_printersA
Scan the local network for 3D printers.
Uses mDNS/Bonjour and HTTP subnet probing to find OctoPrint,
Moonraker/Creality, Bambu Lab, Elegoo, and Prusa printers on
the local network.
Args:
timeout: Maximum scan duration in seconds (default 5).
Returns a list of discovered printers with host, port, type, and
whether the API is reachable. Use ``register_printer`` to add
discovered printers to the fleet.
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes scanning method, timeout parameter, and return value summary. No annotations provided, so description carries full burden. Could mention safety (read-only) or network impact.
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?
Concise and well-structured: purpose first, then method details, then Args/Returns. Every sentence adds value with no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, method, parameter, and return value adequately for a simple discovery tool. Could optionally mention network requirements or errors, but not essential.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (timeout) with clear explanation 'Maximum scan duration in seconds (default 5)'. Schema coverage is 0%, so description adds needed semantic value beyond schema title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Scan the local network for 3D printers' with specific methods (mDNS/Bonjour, HTTP subnet probing) and lists supported printer types. Distinct from sibling tools like register_printer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells to use register_printer for adding discovered printers. Provides clear context for when to use (network discovery) but lacks explicit when-not examples.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
donate_infoA
Get crypto wallet addresses to tip/donate to the Kiln project.
Kiln is free, open-source software. This tool returns wallet addresses (with ENS/SNS domains) where users can send tips in SOL, ETH, USDC, or other tokens to support development.
No payment is required -- Kiln is fully functional without donating.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool returns wallet addresses and is for donations only. No side effects are mentioned, but for a read-only info tool, this is sufficient transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with three sentences, front-loading the key action. Every sentence adds value: first states purpose, second explains context, third clarifies optionality. No extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, no output schema, and a simple purpose, the description is complete. It fully explains what the tool does, what it returns, and the context for its use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so baseline is 4. The description adds meaning by explaining the context and what the returned data represents (wallet addresses for various tokens), which goes beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: getting crypto wallet addresses for donations to the Kiln project. It uses specific verb 'get' and resource 'crypto wallet addresses', and it distinguishes from sibling tools (like printing or design tools) by its donation focus.
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 indicates when to use this tool: for optional donations. It explicitly states that no payment is required and that the software is fully functional without donating, guiding the agent on appropriate usage. However, it does not mention alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_and_uploadA
Download model file(s) from any marketplace and upload to a printer.
**Community models are unverified.** This tool downloads and uploads
but does NOT start printing automatically. You must call
``start_print`` separately after reviewing the uploaded file.
3D printers are delicate hardware — misconfigured or malformed models
can cause physical damage.
When ``file_id`` is provided, downloads and uploads that single file.
When ``model_id`` is provided without ``file_id``, downloads and
uploads all printable files (.stl, .gcode, .3mf) for the model.
Args:
file_id: File ID (from ``model_files`` results). For Thingiverse
this is a numeric ID; for MyMiniFactory it's the file ID string.
If omitted and ``model_id`` is given, all printable files are
downloaded and uploaded.
source: Which marketplace to download from — "thingiverse" (default)
or "myminifactory". Cults3D does not support direct downloads.
printer_name: Target printer name. Omit to use the default printer.
model_id: Model/thing ID. When ``file_id`` is omitted, all
printable files for this model are downloaded and uploaded.
After uploading, review the model and call ``start_print`` to begin.
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | thingiverse | |
| file_id | No | ||
| model_id | No | ||
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: it downloads and uploads only, does not start printing, warns about physical damage, and specifies behavior for different parameter combinations (single file vs all printable files). It also notes that Cults3D does not support direct downloads.
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 well-structured with a clear purpose statement, a warning block, parameter descriptions, and a final instruction. Every sentence serves a purpose, and the most critical information (download and upload, no auto-print) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters, no output schema, and no annotations, the description provides complete coverage of functionality, parameter semantics, usage guidance, and behavioral caveats. It leaves no significant gaps for an AI agent to misinterpret.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description thoroughly explains all four parameters: file_id (with marketplace-specific examples), model_id, source (with default and unsupported marketplace), and printer_name (with default behavior). This adds significant value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool downloads model file(s) from any marketplace and uploads to a printer, distinguishing between single file and all printable files. It also explicitly notes that it does not start printing, which differentiates it from similar tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance on when to use file_id vs model_id, explains the default source, and warns about community models. It also instructs the user to call start_print separately. However, it does not explicitly mention when not to use this tool or list alternative tools for printing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_generated_modelA
Download a completed generated model and optionally validate it.
Args:
job_id: Job ID of a completed generation job.
provider: Provider that owns the job (``"meshy"`` or ``"openscad"``).
output_path: Directory to save the file. Defaults to
the system temp directory.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| provider | No | meshy | |
| output_path | No |
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 well: it discloses the inline 3D stage behavior, automatic decimation for oversized meshes, and the fallback link for unsupported hosts. It also notes optional validation, though it doesn't explain what validation entails. This adds meaningful behavioral context beyond just 'download'.
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 fairly concise with a clear structure: the main purpose, then arguments, then a detailed note about the inline stage. The stage paragraph is long but introduces important side effects. It avoids redundancy and is front-loaded with the core action, so it earns its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the parameters and the inline viewer side effect, but it omits details about return values (e.g., file path, success message) and does not explicitly state the prerequisite that the generation job must be completed (though the name implies it). It also doesn't mention error conditions or when validation is triggered. For a tool with no output schema, more context would help.
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 description explicitly explains all three parameters: job_id ('Job ID of a completed generation job'), provider ('Provider that owns the job (meshy or openscad)'), and output_path ('Directory to save the file. Defaults to system temp directory'). This fully compensates for the 0% schema coverage and gives clear meaning beyond raw schema types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool downloads a completed generated model and optionally validates it. It identifies the key resource (generated model) and the action (download). The name itself is specific and distinguishes it from generic download tools like 'download_model', but the description could more explicitly contrast with siblings like 'preview_generated_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?
The description mentions the tool requires a completed generation job (implied by 'completed generated model') and explains the parameters (job_id, provider), but it does not explicitly state when to use this tool versus alternatives (e.g., download_model, preview_generated_model). There's no guidance on when not to use it or what substitutes exist, so the context is thin.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_modelA
Download model file(s) from a marketplace to local storage.
**Community models are unverified.** Always preview dimensions and
validate the mesh (``validate_generated_mesh``) before printing.
Models with high download counts and positive ratings are generally
safer. AI-generated or untested designs can damage delicate printer
hardware — prefer proven blueprints when possible.
Args:
file_id: Numeric file ID (from ``model_files`` results). If
omitted and ``model_id`` is provided, downloads all files
for the model.
dest_dir: Local directory to save the file in (default:
the system temp directory).
file_name: Override the saved file name (single-file mode only).
Defaults to the original name from the marketplace.
model_id: Model/thing ID. When ``file_id`` is omitted,
all files for this model are downloaded.
source: Marketplace source — ``"thingiverse"`` (default),
``"myminifactory"``, etc.
download_all: When True, downloads all files for the model
regardless of whether ``file_id`` is provided.
After downloading, validate with ``validate_generated_mesh``, then
upload to a printer with ``upload_file`` and print with ``start_print``.
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | thingiverse | |
| file_id | No | ||
| dest_dir | No | ||
| model_id | No | ||
| file_name | No | ||
| download_all | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description warns about community models being unverified and recommends validation. It also specifies default behavior for parameters (e.g., dest_dir defaults to system temp). But it lacks details on permission requirements, disk space implications, or error handling. With no annotations, the description carries the full burden but is not exhaustive.
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 well-structured with a clear purpose statement, safety notes, and a docstring-style parameter list. While the safety warnings are important, they add some verbosity. The key information is front-loaded, making it easy to understand.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters, no output schema, and no annotations, the description covers the essential information: parameter details, workflow, and safety considerations. It does not discuss error conditions or edge cases, but it is sufficient for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description provides detailed parameter semantics: it explains the relationship between file_id, model_id, and download_all, gives defaults, and describes the purpose of each parameter. This fully compensates for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Download model file(s) from a marketplace to local storage.' It specifies the verb (download), resource (model files), and source (marketplace). This distinguishes it from sibling tools like 'model_files' (which lists files) and 'upload_file' (which uploads).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear workflow after downloading: validate with validate_generated_mesh, upload with upload_file, and print with start_print. However, it does not explicitly state when to use this tool versus alternatives like 'model_files' or 'download_generated_model', nor does it mention prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
emergency_statusA
Get the emergency stop latch status for one printer or the entire fleet.
Returns whether an emergency stop is active and whether the printer is
locked from printing operations. When an e-stop is active, all print
commands are blocked until ``clear_emergency_stop()`` is called with an
acknowledgement note.
:param printer_name: Query a specific printer, or omit for all printers.
:param include_unlatched: When True, include printers that have no active
latch. Defaults to False (only active latches).
:returns: Latch state per printer: ``active`` (bool), ``reason``,
``source``, ``timestamp``, and whether critical interlocks prevent
clearing.
See also: ``emergency_stop()``, ``clear_emergency_stop()``.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_name | No | ||
| include_unlatched | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that active e-stop blocks print commands, explains parameter behavior, and outlines return fields (active, reason, source, timestamp, interlocks). It does not cover authorization needs or rate limits, but for a read-only status tool, it is fairly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with purpose, then parameter details and return info. No fluff. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool with 2 parameters and no output schema, the description covers purpose, parameters, return fields, and related tools. It is complete for an agent to select and invoke the tool 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 0%, but the description explicitly documents both parameters with behavior and defaults. For printer_name: 'Query a specific printer, or omit for all printers.' For include_unlatched: includes default and meaning. This adds significant value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves the emergency stop latch status for one printer or the entire fleet, using a specific verb ('get') and resource ('emergency stop latch status'). It distinguishes from siblings like emergency_stop and clear_emergency_stop by focusing on status retrieval only.
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 explains when to use (to check e-stop status) and provides context (e-stop blocks print commands). It references sibling tools via 'See also', but does not explicitly state when not to use this tool or alternative scenarios. The guidance is clear but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
emergency_stopA
Trigger an emergency stop on one or all printers.
Sends M112 (emergency stop), turns off heaters, and disables steppers.
Unlike ``cancel_print``, this does **not** allow a graceful cooldown —
all motion ceases instantly.
Use only in genuine safety emergencies (thermal runaway, collision,
spaghetti failure threatening the hotend, etc.).
WARNING: After an emergency stop the printer typically requires a
power cycle or firmware restart before it can print again.
Args:
printer_name: Specific printer to stop. If None, stops ALL printers.
reason: Reason code (e.g. ``user_request``, ``thermal_runaway``).
source: Trigger source label for audit context.
note: Optional operator note.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| reason | No | user_request | |
| source | No | mcp | |
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that all motion ceases instantly and that a power cycle or firmware restart is typically required afterward. Could mention other side effects but sufficient.
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?
Well-structured: clear header, action description, distinction from similar tool, usage warning, and parameter list. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema or annotations, the description covers purpose, usage, parameters, and critical warnings for a safety-critical tool. It is complete enough for an agent to use 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 0%, but description explains all four parameters with defaults and semantics (printer_name for specific or all, reason code, source label, optional note). Lacks enum values but provides adequate context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool triggers an emergency stop on one or all printers, specifying M112, heater shutdown, and stepper disablement. It distinguishes itself from cancel_print by noting the lack of graceful cooldown.
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?
Explicitly instructs to use only in genuine safety emergencies (thermal runaway, collision, spaghetti failure) and contrasts with cancel_print for graceful cooldown, providing clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
emergency_trip_inputA
Trip emergency stop from an external hardware bridge.
Designed for physical input devices (ESP32, PLC, wired push buttons)
that call this endpoint over HTTP to trigger a software e-stop. This
is different from ``emergency_stop()`` which is for agent/software-
initiated stops.
If ``KILN_ESTOP_INPUT_TOKEN`` is configured, the request must include
a matching ``token`` or it will be rejected.
:param printer_name: Printer to emergency-stop.
:param input_name: Label for the input source (default
``"external_button"``).
:param token: Authorization token -- required when
``KILN_ESTOP_INPUT_TOKEN`` is set.
:param note: Optional free-text note describing the trigger reason.
See also: ``emergency_stop()``, ``emergency_status()``.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| token | No | ||
| input_name | No | external_button | |
| printer_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses auth token requirements and side effect of triggering software e-stop. No annotation provided, but description covers key behavioral aspects. Lacks specifics on idempotency or error responses.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then context, differentiation, auth, parameter details, and see-also. No superfluous text; every sentence adds value.
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 all four parameters and authentication. Missing return value or error handling details, but for a simple e-stop trigger, this is largely sufficient given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates fully by explaining each parameter's purpose, default values, and conditional requirements (e.g., token).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states its purpose as 'Trip emergency stop from an external hardware bridge' and explicitly differentiates from emergency_stop() which is for agent/software-initiated stops.
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?
Explicitly states when to use (physical input devices) and when not (use emergency_stop for software stops). Provides alternative tool names and details authentication requirements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
encryption_statusA
Check G-code encryption status and configuration.
Enterprise feature. Reports whether encryption is active, whether the encryption key is configured, and whether the cryptography library is installed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It lists what it reports (encryption active, key configured, library installed) but fails to disclose behavioral traits like permissions required, side effects, or whether it is read-only. It lacks sufficient transparency for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three sentences, front-loading the main purpose. Every sentence adds value without redundancy or fluff. Perfect structure for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, no output schema, and low complexity, the description covers the essential information: what it checks and that it's enterprise-only. It is marginally complete but could benefit from indicating the output format or potential errors.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters and schema description coverage is 100% (trivially). The description adds no parameter information because there are none. Baseline for 0 parameters is 4, and the description does not detract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Check G-code encryption status and configuration', which is a specific verb and resource. It distinguishes from sibling tools like 'rotate_encryption_key' (which modifies) and 'license_status' (which checks license), making its purpose unique.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions it is an 'Enterprise feature', implying usage restrictions, but does not explicitly state when to use this tool versus alternatives (e.g., rotate_encryption_key). No exclusions or alternative suggestions are provided, only the types of information reported.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_adaptive_time_savingsA
Compare adaptive plan time savings vs uniform layer height.
Shows layer count reduction, estimated time savings, and percentage
improvement.
Args:
plan_data: Plan dict from ``generate_adaptive_slicing_plan``.
uniform_height_mm: Reference uniform layer height for comparison
(default 0.2mm).
| Name | Required | Description | Default |
|---|---|---|---|
| plan_data | Yes | ||
| uniform_height_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates the tool is read-only by stating it 'Shows' results but does not explicitly state it has no side effects. Given no annotations are provided, the description should clarify that it does not modify data, which is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences for purpose and a bullet-like listing of arguments. It avoids unnecessary details and is well-structured for quick reading.
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 only two parameters and no output schema, the description provides sufficient information about what the tool returns (layer count reduction, time savings, percentage). It also links to the required input source, making it complete for its complexity.
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?
Although schema description coverage is 0%, the description effectively explains both parameters: plan_data is linked to its source function, and uniform_height_mm includes its unit and default value. This adds meaning beyond the schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb 'Compare' and the resource 'adaptive plan time savings vs uniform layer height'. It distinguishes itself from other estimate tools by focusing on the comparison aspect, which is unique among sibling tools like estimate_mesh_print_time.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states that plan_data should come from generate_adaptive_slicing_plan, providing a clear prerequisite. It also documents the default value for uniform_height_mm. However, it does not include when not to use this tool or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_before_designA
Estimate print time, cost, and filament usage BEFORE generating a model.
Works from dimensions alone — no file, no slicing, no generation
needed. Use this to answer "how long will it take?", "how much
will it cost?", and "how much filament?" before committing to a
design.
**Two ways to specify dimensions:**
1. **Direct dimensions** — provide ``width_mm``, ``depth_mm``,
``height_mm`` explicitly.
2. **Template** — provide ``template_id`` (e.g. ``"phone_stand"``,
``"box_with_lid"``) and optional ``template_overrides`` to use
the template's default dimensions.
**Multi-material prints:** Pass comma-separated materials
(e.g. ``"PLA,PLA"`` for two-color) with optional fractions
(e.g. ``"0.85,0.15"`` for body + accent). The tool estimates
per-filament usage and tool change overhead automatically.
Returns time estimate, per-filament weight/length/cost breakdown,
electricity cost, total cost, and tool swap count.
:param width_mm: Part width (X) in mm. Required if no template.
:param depth_mm: Part depth (Y) in mm. Required if no template.
:param height_mm: Part height (Z) in mm. Required if no template.
:param template_id: Design template ID (e.g. ``"phone_stand"``).
Resolves dimensions from template defaults. Overrides
width/depth/height if provided.
:param template_overrides: JSON string of template parameter
overrides (e.g. ``'{"phone_width": 85}'``).
:param materials: Comma-separated material names
(e.g. ``"PLA"`` or ``"PLA,PLA"`` for two-color).
:param material_fractions: Comma-separated volume fractions
(e.g. ``"0.85,0.15"``). Must match materials count and sum
to 1.0. Default: body gets 85%, accents split the rest.
:param material_roles: Comma-separated role labels
(e.g. ``"body,accent"``). Default: auto-generated.
:param infill_percent: Infill density override (0-100).
Default: from printer profile or 20%. Pass ``-1`` for auto.
:param layer_height_mm: Layer height override. ``0`` = auto.
:param nozzle_mm: Nozzle diameter in mm (default 0.4).
:param wall_layers: Number of perimeter shells (default 3).
:param printer_id: Printer model for speed/setting lookup
(e.g. ``"bambu_a1"``, ``"prusa_mk4"``).
:param tool_changer_addon: Optional multi-material add-on ID.
Overrides the printer's built-in tool change timing.
Examples: ``"creality_cfs"`` (K1 series),
``"mosaic_palette3"`` (universal), ``"coprint_kcm"``
(Klipper printers), ``"chameleon_mk4"`` (universal),
``"elegoo_canvas"`` (Centauri Carbon 2).
Use ``list_multi_material_addons`` to see all options.
:param electricity_rate: Cost per kWh in USD (default 0.12).
:param printer_wattage: Printer power in watts (default 200).
| Name | Required | Description | Default |
|---|---|---|---|
| depth_mm | No | ||
| width_mm | No | ||
| height_mm | No | ||
| materials | No | PLA | |
| nozzle_mm | No | ||
| printer_id | No | ||
| template_id | No | ||
| wall_layers | No | ||
| infill_percent | No | ||
| material_roles | No | ||
| layer_height_mm | No | ||
| printer_wattage | No | ||
| electricity_rate | No | ||
| material_fractions | No | ||
| template_overrides | No | ||
| tool_changer_addon | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: it is a read-only estimation tool that takes dimensions/materials/print settings and returns time, weight, cost breakdowns. It does not mention side effects (none expected) or auth/rate limits, but covers the return structure well.
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 lengthy but well-organized with clear sections (introduction, methods, multi-material, returns, parameter list). It is front-loaded with the purpose and key differentiator. While concise for 16 parameters, each line adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (16 parameters, multiple input modes, multi-material handling) and missing output schema, the description explains all inputs, return value components (time, weight, cost breakdowns), and usage contexts. It lacks a concrete example but sufficiently covers completeness for agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema provides no parameter descriptions (0% coverage), but the description documents all 16 parameters in the :param block, including defaults, required conditions (e.g., dimensions required if no template), and acceptable formats (e.g., comma-separated materials, fractions summing to 1). This fully compensates for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool estimates print time, cost, and filament usage from dimensions alone, explicitly differentiating it from other estimation tools that require a model file. It emphasizes 'BEFORE generating a model' and contrasts with needing slicing or generation, making its purpose unambiguous among 200+ sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells agents to use this for cost/time/filament questions before committing to a design, and explains the two dimension specification methods (direct or template). It implicitly excludes use when a model file exists, but does not list alternative tools explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_costA
Estimate the cost of a print job from a G-code file (already-sliced only).
For STL/OBJ files, use ``slice_and_estimate`` instead — it slices
and estimates in one step.
Analyses G-code extrusion commands to calculate filament usage,
material weight, filament cost, electricity cost, and total.
Args:
file_path: Path to the G-code file.
material: Filament material (PLA, PETG, ABS, TPU, ASA, NYLON, PC).
electricity_rate: Cost per kWh in USD (default 0.12).
printer_wattage: Printer power consumption in watts (default 200).
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | PLA | |
| file_path | Yes | ||
| printer_wattage | No | ||
| electricity_rate | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden. It lists the calculations performed (filament usage, material weight, filament cost, electricity cost, total), which is helpful, but it does not disclose any side effects, permissions required, or error behavior. It adds some context but lacks depth for a read-only analysis tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description begins with a clear purpose statement, followed by a usage note and parameter details. It uses line breaks and is well-structured. However, the parameter descriptions could be slightly more concise; they are repeated from the schema's defaults. Overall, it earns its space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters (1 required), no output schema, and no nested objects, the description explains the inputs and the general outputs (cost components). It does not detail return format or error handling, but it sufficiently covers what an agent needs to know to select and invoke the tool correctly, especially with the sibling differentiation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the description must add value. It provides detailed explanations for all four parameters, including their purpose, defaults, and units (e.g., 'Cost per kWh in USD', 'Power consumption in watts'). This goes well beyond the schema's type/default information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool estimates the cost of a print job from a G-code file, and explicitly distinguishes it from slice_and_estimate for STL/OBJ files. The verb 'estimate' and resource 'cost' are specific, and sibling differentiation is provided.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use (G-code files, already-sliced only) and when not to (STL/OBJ files, suggesting slice_and_estimate instead). This provides clear usage context and an alternative, fully meeting the criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_material_costA
Estimate material usage and cost for printing a mesh.
Computes filament weight, length, and cost based on mesh volume,
infill percentage, wall shell count, and material density.
**See also:** ``estimate_print_cost_from_mesh`` for a richer
estimate that includes support material, adhesion, and electricity.
Supported materials: pla, petg, abs, tpu, asa, nylon, pc, pla+,
carbon_fiber_pla.
:param file_path: Path to mesh file (.stl, .obj, or .glb).
:param material: Material type (default "pla").
:param infill_pct: Interior fill percentage 0-100 (default 20).
:param wall_layers: Number of perimeter shells (default 3).
:param cost_per_kg: Override material cost in $/kg (0 = use default).
:returns: Dict with weight, filament length, and cost.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | pla | |
| file_path | Yes | ||
| infill_pct | No | ||
| cost_per_kg | No | ||
| wall_layers | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It explains the computation logic (volume-based, infill, etc.) but does not disclose side effects (e.g., file read-only), permissions, or latency. Adds some behavioral context but insufficient for a full transparency profile.
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 front-loaded with purpose and structure, including a computation summary, see-also, material list, and parameter definitions. While the parameter list adds length, it is necessary given missing schema descriptions. No redundant content, but could be slightly more 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?
Despite no output schema, the description clearly states the return type (dict with weight, length, cost). It covers inputs, supported materials, and provides a comparison alternative. For a simple estimation tool, it is fully complete and leaves no major 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 0%, so the description compensates fully. It provides clear explanations for all 5 parameters (e.g., 'Infill percentage 0-100', 'Number of perimeter shells'), adding meaning far beyond the schema titles. Essential for correct parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool estimates material usage and cost for printing a mesh. It specifies the computation (filament weight, length, cost) and distinguishes from the sibling tool 'estimate_print_cost_from_mesh' via the 'See also' note, making the purpose specific and differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a 'See also' reference to a richer alternative, guiding when to use this tool vs. the sibling. It implies basic material-only estimation but does not explicitly state when not to use or list prerequisites. Clear context but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_mesh_print_timeA
Rough print time estimate from mesh geometry (STL/OBJ/GLB).
Uses model height, surface area, and layer count to approximate
print duration. This is a ballpark estimate -- actual time depends
on slicer settings, infill density, supports, and acceleration.
Unlike estimate_print_time (which uses slicer profiles), this
works directly on mesh files before slicing.
:param file_path: Path to mesh file.
:param layer_height_mm: Layer height for slicing.
:param print_speed_mm_s: Average print speed in mm/s.
:param material: Material hint (affects per-layer overhead).
:returns: Dict with estimated time, layer count, and note.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | pla | |
| file_path | Yes | ||
| layer_height_mm | No | ||
| print_speed_mm_s | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses it's a ballpark estimate, depends on slicer settings, and works directly on mesh files. However, it does not state whether the tool is read-only, what happens on invalid meshes, or any constraints like file size. The disclaimer about slicer dependence adds some context but not comprehensive behavioral disclosure.
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 reasonably concise at 6 lines, front-loads the purpose, and uses docstring style. However, the parameter list could be more compact. Every sentence adds value, so it earns a 4.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description mentions the return value as a dict with estimated time, layer count, and note, which is helpful but lacks detail on key names or types. With 4 parameters and moderate complexity, the description is adequate but not thorough. Missing details like error handling or file format compatibility beyond the listed formats.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only provides minimal docstring-like explanations (e.g., ':param file_path: Path to mesh file.'). These add little beyond parameter names and defaults already in the schema. For example, 'material' parameter is not explained beyond 'Material hint (affects per-layer overhead).' This is insufficient to fully understand the parameters' roles in the estimate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides a rough print time estimate from mesh geometry (STL/OBJ/GLB) and explicitly distinguishes itself from the sibling tool estimate_print_time, which uses slicer profiles. The verb 'estimate' and resource 'mesh print time' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells when to use this tool (before slicing, directly on mesh files) and contrasts it with estimate_print_time, but does not explicitly state when not to use it or mention other alternatives besides that one sibling. The guidance is clear but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_mesh_weightA
Estimate the printed weight of an STL file.
Uses the divergence theorem to compute mesh volume, then applies
material density, infill ratio, and shell fraction for a realistic
weight estimate.
:param file_path: Path to an STL file.
:param material: Material name (pla, abs, petg, tpu, nylon, etc.).
:param infill_percent: Infill percentage 0-100 (default 20).
:param wall_thickness_mm: Perimeter wall thickness in mm (default 1.2).
:returns: Dict with volume, weight estimates, bounding box.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | pla | |
| file_path | Yes | ||
| infill_percent | No | ||
| wall_thickness_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It explains the computational method (divergence theorem, density, infill fraction, shell thickness) and states the return type (dict with volume, weight, bounding box). It does not mention error handling or prerequisites like valid STL files, but the provided details add significant transparency.
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 structured as a docstring with a purpose sentence followed by parameter explanations. It is front-loaded and to the point, though the first line is slightly redundant with the parameter descriptions. No unnecessary sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters, no output schema, and no annotations, the description covers the core calculation method, parameters, and return values. It lacks details on material name list or precise output structure (e.g., bounding box format), but is largely complete for usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It defines each parameter with examples (material: pla, abs, etc.), ranges (infill_percent: 0-100), and defaults (20, 1.2). This adds meaning beyond the schema, though it could further explain parameter impacts on the calculation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Estimate the printed weight of an STL file' with a specific verb and resource. It details the computational method (divergence theorem, material density, infill, shell) and clearly distinguishes from sibling tools like 'estimate_mesh_print_time' and 'estimate_print_cost_from_mesh' which estimate different quantities.
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 does not provide explicit guidance on when to use this tool versus alternatives or when not to use it. No exclusions or comparisons with sibling tools are given, though the purpose is clear enough to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_priceA
Get an instant price estimate before requesting a full quote.
Args:
technology: Manufacturing technology: FDM, SLA, SLS, MJF, or DMLS.
volume_cm3: Part volume in cubic centimeters (if known).
dimensions_x_mm: Bounding box X dimension in mm (alternative to volume).
dimensions_y_mm: Bounding box Y dimension in mm.
dimensions_z_mm: Bounding box Z dimension in mm.
quantity: Number of copies (default 1).
Returns a low/high price range based on typical per-cm3 pricing for
the technology. For exact pricing, use ``fulfillment_quote`` with a
real model file.
Either ``volume_cm3`` or all three dimension parameters must be provided.
| Name | Required | Description | Default |
|---|---|---|---|
| quantity | No | ||
| technology | Yes | ||
| volume_cm3 | No | ||
| dimensions_x_mm | No | ||
| dimensions_y_mm | No | ||
| dimensions_z_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description explains return value (low/high range based on typical pricing) and calculation method. Lacks details on auth, rate limits, or caching, but sufficient for a simple estimation 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?
Well-structured with summary, parameter list, and return info. Clear but slightly verbose; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, no output schema, and no annotations, the description is complete: explains parameters, constraints, return type, and differentiation from 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 coverage is 0%, but description explains all parameters: technology options, volume vs. dimensions, quantity default, and the mutual exclusivity constraint. Adds significant meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get an instant price estimate' with specific verb and resource, and distinguishes from sibling tool 'fulfillment_quote'.
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?
Explicitly states when to use (before full quote) and when not (for exact pricing, use fulfillment_quote). Also provides required parameter constraint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_print_cost_from_meshA
Estimate total print cost from a 3D model file.
Calculates material, support, adhesion, and electricity costs directly
from mesh geometry — no G-code or slicing required. Includes a detailed
cost breakdown and actionable recommendations to reduce cost.
Supported materials: pla, pla+, petg, abs, tpu, asa, nylon, pc,
cf-pla, silk-pla, hips, pva, pp, peek.
Args:
file_path: Path to mesh file (.stl, .obj, or .3mf).
material: Material type (default "pla").
infill_percent: Interior fill percentage 0-100 (default 20).
wall_layers: Number of perimeter shells (default 3).
layer_height_mm: Layer height in mm (default 0.2).
nozzle_mm: Nozzle diameter in mm (default 0.4).
include_supports: Estimate support material cost (default False).
support_density: Support infill percentage (default 15).
adhesion_type: Bed adhesion type: "none", "brim", or "raft".
electricity_rate: Electricity cost in $/kWh (default 0.12).
printer_wattage: Printer power consumption in watts (default 200).
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | pla | |
| file_path | Yes | ||
| nozzle_mm | No | ||
| wall_layers | No | ||
| adhesion_type | No | none | |
| infill_percent | No | ||
| layer_height_mm | No | ||
| printer_wattage | No | ||
| support_density | No | ||
| electricity_rate | No | ||
| include_supports | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explains the tool uses mesh geometry, calculates material/support/adhesion/electricity costs, and returns a breakdown with recommendations. It does not mention destructive behavior, which is appropriate for a read-only estimation. However, it lacks details on potential side effects or dependencies, but is sufficient for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: an initial summary sentence, followed by a paragraph on what the tool calculates, then a bulleted list of all arguments with defaults and units. It is front-loaded with the main purpose and uses whitespace effectively for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 11 parameters, no output schema, and no annotations, the description provides comprehensive context: what the tool does, how it works, what costs are included, supported materials, and detailed parameter explanations. It mentions the output includes a cost breakdown and recommendations, which is sufficient for an estimation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, but the description's Args section provides detailed explanations for each parameter, including defaults and units (e.g., 'Material type (default "pla")', 'Interior fill percentage 0-100'). This fully compensates for the lack of schema descriptions, enabling correct parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool estimates total print cost from a 3D model file, specifying the verb 'estimate' and the resource 'print cost from a 3D model file'. It distinguishes from siblings like 'estimate_material_cost' or 'estimate_print_time' by focusing on mesh geometry without slicing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that the tool calculates costs directly from mesh geometry without needing G-code or slicing, and provides a breakdown and recommendations. It implies its use case for early cost estimation, but does not explicitly contrast with alternative tools for cost estimation, such as slicing-based methods.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_print_progressA
Estimate print progress with phase-aware time prediction.
Breaks a print into phases -- preparing, printing, cooling, and
post-processing -- and uses historical data from the print outcomes
database to estimate time remaining. Typically more accurate than
raw firmware estimates for predicting true completion time.
Supply ``elapsed_seconds``, ``total_layers``, and ``current_layer``
when available; any omitted values will be read from the printer's
live status.
:param printer_name: Printer running the job.
:param elapsed_seconds: Seconds elapsed since print start. Omit to
read from printer status.
:param total_layers: Total layer count for the job. Omit to read
from printer/G-code metadata.
:param current_layer: Current layer being printed. Omit to read
from printer status.
See also: ``printer_status()``, ``get_print_outcomes()``.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_name | Yes | ||
| total_layers | No | ||
| current_layer | No | ||
| elapsed_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavior. It describes data sources (printer status, print outcomes database) and phases. While it implies read-only, it does not explicitly state non-destructiveness, but the verb and context are clear enough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with a summary sentence, then details, parameter list, and references. A bit lengthy but every sentence contributes; front-loads the core 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?
Covers methodology, parameter usage, and relative accuracy. Lacks description of the return value format, but for an estimation tool, the output is typically intuitive. No output schema exists, so some expectation of return details is reasonable but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, yet the description adds full meaning: explains printer_name, and for each optional parameter, clarifies 'Omit to read from printer status' and context (e.g., 'Seconds elapsed since print start'). This compensates for the schema's lack of description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Estimate print progress with phase-aware time prediction', specifying the verb and resource. It distinguishes from sibling tools like estimate_print_time by highlighting phase-awareness and historical data usage.
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?
Explicit guidance: 'Typically more accurate than raw firmware estimates' and instructions to supply parameters or omit for live readings. The 'See also' section directs to related tools (printer_status, get_print_outcomes), aiding decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_print_timeA
Estimate print time and filament usage for a model.
Slices the model and parses the G-code for print time, filament
length/weight, and layer count.
For **already-sliced** G-code files, pass the ``.gcode`` path
directly — it will be parsed without re-slicing.
Weight needs a filament density, which lives on a filament
profile; Kiln's bundled profiles describe a PRINTER and name no
filament, so pass ``material`` to get a weight. Without it the
weight is reported as absent rather than guessed — a key missing
from the result means the slicer could not answer it, never that
the answer is zero.
**See also:** ``estimate_material_cost`` for weight and cost from
a mesh with your own price per kg, and ``slice_and_estimate`` for
a fuller analysis with printability scoring.
:param file_path: Path to STL/3MF/OBJ or .gcode file.
:param profile: Optional slicer profile path.
:param printer_id: Optional printer model ID for bundled profile
(e.g. ``"bambu_a1"``). Used when no explicit profile is given.
:param slicer_path: Optional explicit slicer binary path.
:param material: Optional filament family (``"PLA"``, ``"PETG"``,
…) used only as a density source for the weight.
:returns: Dict with time, filament, and layer estimates.
| Name | Required | Description | Default |
|---|---|---|---|
| profile | No | ||
| material | No | ||
| file_path | Yes | ||
| printer_id | No | ||
| slicer_path | No |
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 discloses that weight requires a material density from a filament profile, that bundled profiles lack filament names, and that a missing key means the slicer could not answer rather than zero. This is valuable behavioral context beyond the schema. It doesn't mention side effects or permissions, but for a read-only estimation tool this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections, bolded key terms, and a See also pointer. It's a bit long but every sentence adds value—no fluff. The param list is compact and informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 params, no output schema, no annotations), the description covers the key behaviors: slicing vs parsing, material density caveat, and return value semantics. It doesn't describe the exact return structure, but the description says 'Dict with time, filament, and layer estimates' which is sufficient for an agent. It could mention error cases, but overall it's complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains each parameter: file_path accepts STL/3MF/OBJ or .gcode, profile is optional slicer profile path, printer_id is for bundled profiles with an example, slicer_path is explicit binary path, and material is used only as density source. This adds meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool estimates print time and filament usage by slicing a model and parsing G-code. It distinguishes itself from siblings like estimate_material_cost and slice_and_estimate by explicitly naming them and noting the difference in 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?
The description provides explicit guidance on when to use this tool vs alternatives: it mentions passing .gcode files directly for already-sliced files, and points to estimate_material_cost for weight/cost from a mesh and slice_and_estimate for fuller analysis with printability scoring. This is clear when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_structural_loadA
Estimate safe structural load for a cantilevered section.
Args:
material: Material ID (e.g. "petg", "nylon", "polycarbonate").
cross_section_mm2: Effective load-bearing cross section in mm^2.
cantilever_length_mm: Cantilever length in mm.
load_across_layers: True when the load pulls the layer
interfaces apart (load along the build/Z direction —
the WEAK direction for FDM; capacity is derated).
False when the load acts within the layer planes
(e.g. a bracket printed lying flat — the strong
direction; full table value). If unsure, leave True:
it is the conservative default.
| Name | Required | Description | Default |
|---|---|---|---|
| material | Yes | ||
| cross_section_mm2 | Yes | ||
| load_across_layers | No | ||
| cantilever_length_mm | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the transparency burden. It explains the load_across_layers parameter's effect on capacity derating but omits the output format, algorithm assumptions, or limitations. It adds value beyond parameter names but leaves behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with a clear introductory sentence followed by a structured Args block. Every sentence adds value, no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains parameters well but omits critical context: the output format (units, whether it's max load or factor), error handling for invalid materials, and underlying assumptions. For a structural load tool, these gaps reduce completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, so the description must fully explain each parameter. It provides clear explanations for all four parameters, including examples for material, units for dimensions, and a detailed rationale for load_across_layers. This adds substantial meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool estimates safe structural load for a cantilevered section, a specific engineering task. It distinguishes from broader analysis tools like analyze_structural_risks or assess_load_bearing by focusing on a single cantilevered section.
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 does not provide guidance on when to use this tool versus alternatives like assess_load_bearing or analyze_structural_risks. It only describes the tool's functionality without exclusions or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_support_materialA
Estimate support material needed for a mesh.
Analyzes overhang triangles and projects them to the build plate
to estimate the volume and weight of support material required.
:param file_path: Path to .stl, .obj, or .glb file.
:returns: Dict with support volume (mm³), weight (g), and overhang stats.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the algorithm (overhang analysis) but omits details like error handling, file size limits, or permission requirements. The behavior is adequately outlined but not exhaustive.
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 front-loaded with the core purpose and follows with a concise algorithm explanation. The docstring format (param/returns) adds minor verbosity but remains efficient. Nearly every sentence adds value, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter and no output schema, the description defines the return dict (volume, weight, overhang stats) and explains the estimation process. It is fairly complete for a simple tool, though it could mention prerequisites like manifold geometry.
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 'file_path' has no description in the schema (0% coverage), but the description adds critical context: accepted file formats (.stl, .obj, .glb). This compensates for the schema gap, adding meaningful semantics beyond the raw type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool estimates support material for a mesh, with a specific verb ('estimate') and resource ('support material'). It distinguishes from siblings by detailing the algorithm (analyze overhang triangles, project to build plate).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for support material estimation from mesh files but lacks explicit guidance on when to use this versus alternatives like 'estimate_supports' or 'estimate_mesh_weight'. No when-not-to-use or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_supportsA
Estimate support volume for a 3D model.
Analyzes the mesh for overhangs and estimates the volume of
support material needed to print the model in its current
orientation.
Args:
file_path: Path to an STL or OBJ mesh file.
max_overhang_angle: Maximum overhang angle in degrees
before supports are needed (default 45).
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| max_overhang_angle | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It states the tool analyzes the mesh for overhangs, implying a read-only operation, but does not explicitly confirm it does not modify the file or require special permissions. It is adequate but lacks explicit safety declarations.
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 highly concise with two sentences and parameter explanations. It front-loads the main action and avoids unnecessary words. Every sentence serves a 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?
The description lacks key contextual details: it does not describe the output format or units (e.g., volume in cubic mm), nor does it mention error handling or file validity requirements. For a tool that takes a file path, prerequisites like file existence and mesh validity are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description compensates for the 0% schema description coverage by explaining the file_path parameter (path to STL or OBJ file) and the max_overhang_angle parameter (maximum overhang angle in degrees, default 45). This adds meaningful context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool estimates support volume for a 3D model by analyzing overhangs. It specifies the resource (3D model) and the action (estimate support volume), and distinguishes it from other estimation tools like estimate_print_time or estimate_cost by focusing on supports.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like estimate_support_material. It does not mention prerequisites, when not to use it, or how it compares to other estimation tools. The agent is left to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_timelineA
Estimate order-to-delivery timeline with per-stage breakdown.
Args:
technology: Manufacturing technology (FDM, SLA, SLS, MJF, DMLS).
shipping_days: Known shipping days from a quote (optional).
quantity: Number of copies (larger quantities add production time).
country: Destination country code for shipping estimate fallback.
Returns a stage-by-stage timeline (order confirmation, production,
quality check, packaging, shipping) with estimated days per stage
and a total delivery date.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | US | |
| quantity | No | ||
| technology | Yes | ||
| shipping_days | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as authentication requirements, rate limits, or side effects. It implies a safe read operation by estimating a timeline, but without explicit statements, the agent has limited behavioral insight. The description itself is straightforward and does not contradict any annotations (none present).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (few sentences), front-loads the purpose, then lists parameters with explanations, and ends with return structure. No redundant or vague statements; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the input parameters and return value (stage-by-stage timeline with estimated days). It does not address error handling or prerequisites (e.g., requiring a quote for shipping_days). However, given the tool's simplicity and lack of output schema, it provides sufficient context for most use cases.
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?
Despite 0% schema description coverage, the tool description fully documents each parameter's meaning (e.g., technology lists enum values, shipping_days optional, quantity adds production time, country for fallback). This adds significant value beyond the bare schema, enabling correct parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Estimate order-to-delivery timeline with per-stage breakdown.' It specifies the verb and resource, but does not explicitly distinguish from sibling tools like estimate_print_time or estimate_cost. While the focus on order-to-delivery with stages is unique, it could be more explicit about its differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context for parameters (technology, shipping_days, quantity, country) but does not explicitly state when to use this tool versus alternatives like estimate_print_time. It lacks when-not conditions or specific prerequisites, leaving the agent to infer usage from parameter descriptions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_adaptive_slicer_configC
Export an adaptive slicing plan as slicer-compatible configuration.
Converts a plan to the target slicer's format — PrusaSlicer and
OrcaSlicer use variable layer height data, Cura uses adaptive
layers plugin format.
Args:
plan_data: Plan dict from ``generate_adaptive_slicing_plan``.
slicer: Target slicer — "prusaslicer", "orcaslicer", "cura",
or "generic".
| Name | Required | Description | Default |
|---|---|---|---|
| slicer | No | prusaslicer | |
| plan_data | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose any behavioral traits like side effects, permissions required, or whether it is read-only. For a tool that exports data, safety and mutability are unclear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with purpose, and uses a clean list for args. Every sentence adds value; 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?
Despite no output schema, the description does not explain what the result looks like (file, string, config object). It also lacks error handling info or prerequisites beyond the plan source. More detail on output format and constraints is needed.
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?
With 0% schema coverage, the description adds meaning to both parameters: explains plan_data comes from generate_adaptive_slicing_plan, and slicer lists allowed values. However, plan_data structure is not detailed beyond being a dict.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Export' and resource 'adaptive slicing plan', and distinguishes it from siblings like generate_adaptive_slicing_plan by specifying it converts to slicer-compatible configuration, listing specific slicers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage after generating a plan via the mentioned function, and provides context on slicer targets, but no explicit when-not-to-use or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_audit_trailB
Export the safety audit trail as JSON or CSV.
Enterprise feature. Returns the full audit log with optional filters
for date range, tool name, action type, and session ID.
Args:
start_time: Unix timestamp lower bound (0 = no filter).
end_time: Unix timestamp upper bound (0 = no filter).
format: Output format, ``"json"`` or ``"csv"``.
tool_name: Filter by MCP tool name.
action: Filter by action (executed, blocked, etc.).
session_id: Filter by agent session ID.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | ||
| format | No | json | |
| end_time | No | ||
| tool_name | No | ||
| session_id | No | ||
| start_time | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It states the tool exports data (read operation) but lacks details on side effects, rate limits, or security requirements beyond being an enterprise feature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, with an introductory sentence, a note on enterprise feature, and a structured parameter list. No extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and annotations, the description adequately covers tool purpose and parameters but does not specify the return format details (e.g., file type for CSV/JSON) or how the output is delivered.
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 schema has 0% description coverage, but the tool description explains all 6 parameters with clear purposes (e.g., 'Unix timestamp lower bound (0 = no filter)') and the output format options. This significantly adds value beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exports the safety audit trail in JSON or CSV format with optional filters. However, it does not explicitly differentiate it from sibling tools like 'safety_audit' or 'list_interception_sessions'.
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 mentions 'Enterprise feature' but provides no guidance on when to use this tool versus alternative audit or export tools. No exclusions or comparisons are made.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_model_3mfA
Export a mesh to 3MF format (preferred by modern slicers).
Converts STL/OBJ/GLB to 3MF, a ZIP-based XML format used by
PrusaSlicer, OrcaSlicer, and Bambu Studio. 3MF is more compact
and supports metadata better than STL.
:param file_path: Path to the input mesh file.
:param output_path: Output 3MF path. Auto-generated if empty.
:returns: Dict with the output file path.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| output_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden. It states conversion from STL/OBJ/GLB and auto-generation of output path, but omits whether the tool is read-only, error handling, file size limits, or side effects. This is insufficient for a tool with no annotation safety profile.
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 compact, front-loads the main action, and separates param docs. It earns its place but the rationale for 3MF is slightly extraneous. Overall well-structured for the information provided.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema or annotations, so the description must cover return value and behavioral details. It mentions the return dict, but lacks error conditions, overwrite behavior, and validation details. Adequate for a simple conversion but incomplete for robust use.
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?
With 0% schema description coverage, the description adds meaning by explaining file_path as input mesh and output_path as auto-generating if empty. It provides clear semantics beyond the schema titles, but could specify allowed formats or path constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exports a mesh to 3MF format, specifies input formats (STL, OBJ, GLB), and explains why 3MF is preferred for modern slicers. This distinguishes it from export tools like export_safety_profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context for when to use (exporting to 3MF for slicers) but does not explicitly exclude cases or suggest alternatives. It could be improved by noting when not to use, e.g., if already in 3MF.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_safety_profileA
Export a safety profile as a shareable JSON object.
Returns the full safety limits for a printer model in a format
suitable for sharing with other users. Looks up community profiles
first, then falls back to bundled profiles.
Args:
printer_model: Printer model identifier (e.g. ``"ender3"``,
``"bambu_x1c"``).
| Name | Required | Description | Default |
|---|---|---|---|
| printer_model | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description carries full burden. It discloses fallback lookup and shareable format, but doesn't detail permissions or rate limits. Adequate for a read-like export 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?
52 words, no redundancy, front-loaded with purpose, followed by behavior and parameter docs. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 1 simple parameter and no output schema, the description is nearly complete. Could specify JSON structure details, but overall sufficient for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage; description adds examples for printer_model (e.g., 'ender3', 'bambu_x1c'), significantly enhancing parameter understanding beyond the bare 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?
Explicitly states 'Export a safety profile as a shareable JSON object' and 'Returns the full safety limits for a printer model', clearly distinguishing from siblings like get_safety_profile or add_safety_profile.
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?
Provides context by stating fallback behavior (community then bundled profiles) and suitability for sharing, but lacks explicit when-not-to-use or direct alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_file_metadataA
Extract metadata from a 3D printing file (.gcode, .3mf, .stl, .ufp).
Parses file headers for estimated print time, layer count, filament usage,
dimensions, slicer info, and material hints — without re-slicing.
.. note::
For multi-object .gcode.3mf files, also consider using
``list_plate_objects()`` to see individual objects on the plate.
Args:
file_path: Path to the print file.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states it parses headers 'without re-slicing', which implies a read-only, non-destructive operation. It also lists the metadata points extracted (time, layer count, etc.). With no annotations, this provides sufficient behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using bullet points for formats and a note for a sibling tool. Every sentence adds value without repetition. It is front-loaded with the main 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?
Given the tool has one parameter and no output schema, the description covers all essential aspects: supported file types, the nature of the operation (no re-slicing), extracted metadata fields, and a cross-reference to a related tool. It is complete for its simplicity.
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 `file_path` parameter is described in the docstring as 'Path to the print file.' This adds meaning beyond the schema, which only has a type and title. For a single parameter, the description is adequate but not exhaustive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it extracts metadata from 3D printing files and lists specific formats (.gcode, .3mf, .stl, .ufp). It distinguishes from the sibling tool `list_plate_objects()` via the note, which helps an agent differentiate use cases.
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 includes a note that for multi-object .gcode.3mf files, also consider using `list_plate_objects()`, which provides alternative tool guidance. However, it doesn't explicitly state when not to use this tool or list other alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_model_from_3mfA
Extract the embedded 3D model from a .3mf or .gcode.3mf file to STL.
3MF files are ZIP archives containing XML mesh geometry. This tool
parses the embedded model, extracts all mesh objects, and writes a
binary STL file ready for slicing, multi-copy printing, or further
mesh operations.
.. note::
For extracting a single object's **G-code** from a multi-object
Bambu .gcode.3mf file, use ``extract_plate_object`` instead.
Use ``list_plate_objects`` to discover available objects.
Works with both standard 3MF files and Bambu Studio .gcode.3mf files
(which bundle both G-code and the source model). When multiple
objects exist they are merged into a single STL.
:param file_path: Path to the .3mf or .gcode.3mf file.
:param output_path: Output STL path (auto-generated if empty).
:returns: Dict with output path, triangle/vertex counts, and dimensions.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| output_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden and does a strong job: it explains the ZIP/XML parsing, merging behavior, output as binary STL, and the side effect of opening an interactive 3D stage with automatic mesh decimation. It could still note overwrite behavior and permissions, but it reveals significant behavioral detail beyond the bare operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a lead sentence, a clarifying note, parameter blocks, returns, and a side-effect paragraph. It is somewhat long but each section contributes useful context. The 'PNG preview is the floor' phrasing is a bit cryptic, but overall the organization helps scanning.
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 two-parameter tool with no output schema and no annotations, the description is remarkably complete: it covers input formats, multi-object merging, output type, return contents, scenarios for alternative tools, and a notable UI side effect. It lacks error-condition details but is otherwise sufficient for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does so by documenting both parameters: file_path with accepted file extensions and output_path with auto-generation semantics. This is meaningful guidance beyond the bare schema, though the auto-generated path naming is not elaborated.
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 opens with a specific verb and resource: "Extract the embedded 3D model from a .3mf or .gcode.3mf file to STL." It clearly defines the tool's scope (standard 3MF and Bambu .gcode.3mf) and distinguishes it from the sibling extract_plate_object, explicitly noting that the sibling should be used for extracting single objects' G-code.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage guidance is explicit: the note says to use extract_plate_object for single-object G-code extraction and list_plate_objects to discover available objects. It also states that multi-object files are merged into a single STL, which sets clear expectations for when this tool is appropriate versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_plate_objectA
Extract a single object's G-code from a multi-object Bambu .gcode.3mf.
When a .gcode.3mf contains multiple objects (e.g. a lid and a body),
this tool extracts ONLY the G-code for the requested object, producing
a standalone .gcode file that can be printed directly.
The machine start-up (homing, levelling, heating) and end (cool-down,
park) sequences are preserved. Only the per-layer toolpath sections
for other objects are removed.
Bambu Studio supports multiple plates (plate_1, plate_2, etc.).
Use ``plate_number`` to select which plate to extract from.
Object matching is case-insensitive and supports partial names:
``"cap"`` will match ``"TreatHolder - cap.stl"``.
Use ``list_plate_objects`` first to see available object names.
:param file_path: Path to the .gcode.3mf file.
:param object_name: Name (or partial name) of the object to extract.
:param output_dir: Directory for the output .gcode file. Defaults to
the same directory as the input file.
:param plate_number: Which plate to extract from (1-based, default 1).
:returns: Dict with output path, matched object info, and line counts.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| output_dir | No | ||
| object_name | Yes | ||
| plate_number | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that machine start-up and end are preserved, only per-layer toolpaths for other objects are removed. It explains case-insensitive partial matching. It doesn't cover error cases (object not found) but adequately describes key behavioral traits.
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 well-structured: purpose, then behavior details, then parameter explanations. It is concise but not overly terse. Could be slightly more compact, but the structure aids readability.
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 4 parameters and no output schema, the description covers purpose, usage, behavior, and parameter details. It mentions the return dict contains output path, matched object info, and line counts, compensating for missing output schema. It lacks error handling info but is mostly complete for the tool's purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description must compensate. It does so fully: explains that file_path is the input file, object_name supports partial matching, output_dir defaults to same directory as input, plate_number is 1-based. This adds significant meaning beyond the property names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Extract' and resource 'single object's G-code from a multi-object Bambu .gcode.3mf'. It distinguishes from siblings like list_plate_objects (list vs extract) and print_plate_object (print vs extract), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use list_plate_objects first to see available object names. It explains object matching (case-insensitive, partial names) and plate selection. However, it does not explicitly state when not to use this tool or mention alternatives for extracting multiple objects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
failure_historyB
View failure history for a printer or failure type.
Args:
printer_name: Filter by printer name.
failure_type: Filter by failure type.
limit: Maximum records to return (default 20).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| failure_type | No | ||
| printer_name | No |
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 correctly implies read-only behavior ('View'), but does not disclose other behavioral traits such as data freshness, ordering, or whether results are paginated (though 'limit' parameter hints at pagination). The 'limit' parameter adds transparency but more detail would be helpful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one line for purpose followed by a bulleted parameter list. Every sentence is necessary and none are wasted. The structure is front-loaded and easy 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 tool with 3 optional parameters and no output schema, the description provides the essentials but misses some context. It does not mention the return structure (e.g., list of records) or ordering. Given the complexity is low, it is minimally adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains each parameter's purpose ('Filter by printer name', 'Filter by failure type', 'Maximum records to return') despite the schema having no descriptions (0% coverage). This adds significant meaning beyond the raw schema. A higher score would require additional details like accepted value formats or behaviors when both filters are applied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('View') and resource ('failure history'), and specifies the two main filtering dimensions (printer name, failure type). This makes the purpose immediately understandable. However, it does not explicitly distinguish this tool from similar history tools like 'print_history' or 'job_history' among the siblings.
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 lacks any guidance on when to use this tool versus alternatives. No context is provided about prerequisites, scenarios, or exclusions. The user must infer usage from the name and parameter descriptions alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_design_templatesA
Find public design-template summaries for a use case.
Args:
use_case: What you're designing (e.g. "enclosure",
"gear train", "battery cover", "vase").
| Name | Required | Description | Default |
|---|---|---|---|
| use_case | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It does not mention side effects, permissions, or return type. While 'Find' implies a read operation, the description fails to confirm read-only behavior or any other traits like rate limits or scope (e.g., public vs user-specific).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with one sentence and a clear argument block. Every part is useful: the verb, resource, parameter name, and examples. No unnecessary repetition. Front-loaded with the core 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?
Given the tool has only one required parameter, no output schema, and low complexity, the description is sufficient to understand the tool's intent. However, it omits what the returned summaries contain (e.g., text, images) and how to proceed after finding one. Still, for a simple search tool, it is mostly 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?
The schema has zero description coverage for the single parameter 'use_case'. The description compensates by providing concrete examples ('enclosure', 'gear train', 'battery cover', 'vase'), which adds meaning beyond the bare schema definition. However, it does not specify format or allowed values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Find') and the resource ('public design-template summaries') with a specific filter ('for a use case'). It distinguishes from siblings like 'search_design_templates' by emphasizing 'public' and 'summaries', and from 'list_design_templates' by requiring a use case parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (when you need to find templates for a specific design task) but does not explicitly guide when not to use it or mention alternatives like 'search_design_templates' or 'list_design_templates_catalog'. The context is clear but lacks exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_material_matchB
Fuzzy-match a catalog entry from spool metadata.
Matches against vendor and material type (case-insensitive
substring). If multiple entries match and a colour is provided,
prefers entries whose variants include that colour.
Args:
vendor: Brand name (e.g. ``"Hatchbox"``).
material_type: Product name (e.g. ``"PLA"``, ``"PLA+"``).
color: Optional colour preference for tie-breaking.
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | ||
| vendor | No | ||
| material_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the fuzzy-matching behavior, case-insensitivity, and color-based preference for tie-breaking. However, it does not specify the output format (e.g., returns a single entry or list), behavior on no match, or whether the operation is read-only. With no annotations, these gaps reduce transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a purpose line followed by parameter details in a clear list. Every sentence adds value, and the most critical information appears first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (fuzzy matching with tie-breaking) and the absence of an output schema, the description falls short by not explaining the return value (e.g., matched catalog entry object). It covers input behavior but not output structure, which is essential for an agent to use the result.
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?
With 0% schema description coverage, the description adds significant value by explaining each parameter with examples (e.g., vendor: 'Hatchbox', material_type: 'PLA', color: optional for tie-breaking). However, it does not clarify that all parameters are optional or that at least one may be expected for meaningful matching.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: fuzzy-match a catalog entry from spool metadata, matching against vendor and material type as case-insensitive substrings, with optional color tie-breaking. It distinguishes itself by focusing on spool metadata matching, but does not explicitly differentiate from siblings like find_material_substitute.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, when not to use it, or point to other tools for different scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_material_substituteA
Find substitute filament materials when your preferred material is unavailable (returns ranked list).
Checks a built-in knowledge base of FDM filament compatibility and returns
ranked alternatives with trade-off descriptions. For a single best match,
use ``get_best_material_substitute`` instead.
Args:
material: The original filament material (e.g. "PLA", "PETG", "ABS").
reason: Optional filter — only return substitutions matching this reason
(unavailable, cost, strength, finish_quality, heat_resistance, lead_time).
min_score: Minimum compatibility score threshold (0.0–1.0).
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| material | Yes | ||
| min_score | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It states that the tool checks a 'built-in knowledge base of FDM filament compatibility' and returns ranked alternatives with trade-off descriptions. It does not disclose side effects, destructive behavior, authentication needs, or rate limits. The description provides minimal behavioral context, which is adequate but could be more explicit about non-destructive nature.
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 well-structured and concise: a one-line summary, a paragraph explaining functionality, and a formatted Args section. Every sentence adds value without redundancy. It is front-loaded with the core purpose, making it easy for an agent to quickly understand the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and annotations, the description covers purpose, usage, parameters, and return type (ranked list with trade-off descriptions). It could mention error handling or that the knowledge base is not user-updatable, but overall it provides sufficient context for an agent to use the tool correctly. Minor gaps prevent a perfect score.
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?
Although schema description coverage is 0%, the description includes a detailed Args section that explains each parameter: material (original filament material with examples), reason (optional filter with enumerated values), and min_score (threshold range). This adds significant meaning beyond the bare schema, which only provides types and defaults. The description compensates well for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Find substitute filament materials when your preferred material is unavailable (returns ranked list).' It specifies the verb (find), resource (substitute filament materials), and context (when unavailable). Additionally, it distinguishes itself from the sibling tool 'get_best_material_substitute' by noting it returns a ranked list versus a single best match, satisfying the distinction requirement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool (when preferred material is unavailable) and explicitly mentions an alternative tool for a single best match. However, it does not explicitly state when not to use it or list other possible alternatives. The guidance is sufficient but lacks thorough exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_printers_with_materialA
Find printers that have a specific material loaded.
Returns printers with the matching material, sorted by
remaining stock (most first). Optionally filter by colour
and minimum remaining grams.
Args:
material_type: Material type to find (e.g. ``"PLA"``).
color: Optional colour filter.
min_grams: Minimum remaining grams (default 0).
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | ||
| min_grams | No | ||
| material_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that results are sorted by remaining stock and that optional filters exist, but does not address edge cases (e.g., no matching printers) or error conditions. Adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a one-sentence summary followed by a clear parameter list. Every sentence adds value, no fluff. Well-structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the output ordering and filtering but does not specify the exact return format (e.g., printer IDs, names). Without an output schema, this missing detail reduces completeness for an agent that needs to parse 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?
The description adds complete parameter documentation, including example values ('PLA'), optional filters (color), and default behavior (min_grams default 0). Since the schema lacks descriptions, this fully compensates and adds significant meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool finds printers with a specific material loaded, using a specific verb and resource. It distinguishes from siblings like 'find_material_match' and 'list_trusted_printers' by focusing on printer availability by material.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (to find printers with a material) but provides no explicit guidance on when to use this tool versus alternatives like 'discover_printers' or 'printer_status'. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_provider_capacityA
Find available provider capacity by material/location.
Args:
material: Material type to filter by (e.g. "PLA", "PETG", "ABS").
location: Optional geographic filter (e.g. "Austin, TX").
Returns provider-side capacity listings that match the request.
| Name | Required | Description | Default |
|---|---|---|---|
| location | No | ||
| material | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It states the tool returns matching listings but does not mention side effects (likely none), authentication requirements, rate limits, pagination, or any other behavioral details. For a query tool with no annotations, this is insufficient transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear front-loaded purpose and succinct parameter explanations. Every sentence provides value without redundancy. The structure is appropriate for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no output schema, no annotations), the description covers purpose and parameters adequately. However, it lacks details about the output format, pagination behavior, error handling, or any behavioral constraints. For a fully standalone description, this leaves 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?
The JSON schema has 0% description coverage, so the description compensates by providing meaningful parameter descriptions. It includes examples for 'material' (e.g., PLA, PETG) and clarifies that 'location' is optional with a geographic example. This adds significant value beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Find available provider capacity by material/location', specifying the action (find), resource (provider capacity), and filtering criteria (material/location). This distinguishes it from sibling tools like 'list_provider_capacity' which likely returns all capacity without filtering.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when filtering by material/location is needed, but it does not explicitly state when to use this tool versus alternatives like 'list_provider_capacity'. No exclusions or prerequisites are mentioned, leaving guidance somewhat vague.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_similar_printsA
Find similar models in the print DNA knowledge base.
Uses geometric signature matching and surface area / volume
similarity to locate models with similar geometry.
Args:
file_hash: SHA-256 hash of the model file.
geometric_signature: Geometric signature from fingerprinting.
surface_area_mm2: Surface area in mm^2 (for fuzzy matching).
volume_mm3: Volume in mm^3 (for fuzzy matching).
complexity_score: Complexity (for fuzzy matching).
limit: Maximum results (default 10).
threshold: Similarity threshold 0.0-1.0 (default 0.8).
geometric_signature_v2: ``fingerprint_model``'s
``geometric_signature_v2``. Pass it: without it,
models that merely share the older signature are
reported as the same geometry.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| file_hash | Yes | ||
| threshold | No | ||
| volume_mm3 | No | ||
| complexity_score | No | ||
| surface_area_mm2 | No | ||
| geometric_signature | Yes | ||
| geometric_signature_v2 | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for disclosing behavior. It does not mention side effects (read-only nature), error conditions, or what the return value looks like. It only lists input parameters without explaining expected outcomes or limitations.
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 relatively concise with a clear two-part structure: a general summary and a parameter list. It avoids unnecessary verbosity while providing essential details, though the parameter explanations could be more streamlined.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is incomplete in terms of overall context. It does not specify the output format, the nature of results (e.g., a list of matching model IDs), or any edge cases. Since there is no output schema provided, this missing information is a significant gap for users to understand the tool's full behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description elaborates on each parameter, clarifying the roles of surface_area_mm2, volume_mm3, complexity_score, and importantly explains the distinction between geometric_signature and geometric_signature_v2, noting that using the older signature may lead to incorrect matches. This adds significant meaning beyond the schema's basic type listings.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to find similar models in the print DNA knowledge base, using geometric and physical characteristics. This distinguishes it from other find-related tools by specifying the 'print DNA' context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for locating models with similar geometry but does not explicitly state when to use it over alternatives or provide conditions like 'use when you need to identify parts with comparable shape'. It lacks clear when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_slicerA
Check if a slicer (PrusaSlicer/OrcaSlicer) is available on the system.
Returns the slicer path, name, and version if found.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses basic behavior and return fields but does not clarify what happens if no slicer is found (e.g., returns null/error) or system-specific behavior. Basic transparency is present.
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?
Description is concise with two front-loaded sentences. No unnecessary words or repetition. Efficiently conveys purpose and return information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, the description covers the main functionality. However, it could improve by specifying behavior when slicer is not found or addressing potential errors. Minor 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?
Tool has zero parameters, so schema coverage is 100%. Baseline score of 3 applies; description adds no parameter details because none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool checks if a slicer (PrusaSlicer/OrcaSlicer) is available, and specifies return fields (path, name, version). It distinguishes itself from sibling tools like get_slicer_profile and list_slicer_profiles by focusing on availability detection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for checking slicer availability but does not explicitly state when to use it versus alternative tools like get_slicer_profile or list_slicer_profiles. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fingerprint_modelA
Compute a geometric fingerprint for a 3D model file.
Reads the STL file and produces a fingerprint containing: SHA-256
file hash, triangle/vertex counts, bounding box, surface area,
volume, overhang ratio, complexity score, and TWO geometric
signatures for similarity matching.
``geometric_signature_v2`` is the one to carry into
``record_print_dna`` / ``predict_print_settings`` /
``find_similar_prints`` / ``contribute_community_print``: it
tells this design apart from a different one that happens to
share the older ``geometric_signature``. Pass both — the
older key is what joins this print to history recorded before
v2 existed.
Args:
file_path: Path to the STL file to fingerprint.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations provided, and the description only mentions that the tool 'Reads the STL file', which gives a hint about input but does not state whether the operation is read-only, if it modifies anything, or if it requires special permissions or network access. This lack of behavioral transparency is a significant 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?
The description is highly repetitive, repeating the list of fingerprint contents (hash, counts, bounding box, etc.) twice and the explanation about geometric_signature_v2 also twice. This verbosity reduces clarity and could be condensed into a single concise statement, making the structure less efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main purpose and output contents, including which signature to use downstream. However, it lacks details about error handling, file size or format constraints, and the exact structure of the returned fingerprint object, leaving some contextual gaps that might affect its completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter file_path is clearly described as 'Path to the STL file to fingerprint.' The description provides enough context for its meaning, and since it is the only parameter, there is no ambiguity about its purpose or required format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool computes a geometric fingerprint for a 3D model file, listing all components including SHA-256 hash, triangle/vertex counts, bounding box, surface area, volume, overhang ratio, complexity score, and two geometric signatures. It also specifies which signature (geometric_signature_v2) should be used downstream, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a fingerprint is needed for downstream tools like record_print_dna, predict_print_settings, find_similar_prints, and contribute_community_print, as it explicitly states which signature to carry into those tools. However, it does not explicitly contrast with alternative tools or provide conditions when not to use this tool, so the guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
firmware_resume_printA
Execute firmware-level print resume for OctoPrint+Marlin printers.
After a power loss or failure, this tool positions the printer at the
last known checkpoint and prepares it to resume printing. Uses Marlin
M413 power-loss recovery protocol: homes X/Y (never Z), re-heats bed
then hotend, sets Z position from checkpoint, primes the nozzle, and
restores fan/flow settings.
The printer will be positioned and ready after this call. Use
start_print with a re-sliced file (starting at the target layer) or
let the printer resume from its own recovery buffer.
Only works with OctoPrint printers running Marlin firmware. Moonraker/Klipper
printers should use Klipper's SAVE_VARIABLE system instead (not yet supported).
Args:
printer_name: Name of the printer to resume on.
job_id: The failed job's identifier (for checkpoint lookup).
z_height_mm: Z height to resume from (from checkpoint).
hotend_temp_c: Hotend temperature to restore.
bed_temp_c: Bed temperature to restore.
file_name: Original file name (for logging/tracking).
layer_number: Layer number to resume from (informational).
fan_speed_pct: Fan speed to restore (0-100).
flow_rate_pct: Flow rate multiplier to restore (default 100).
prime_length_mm: Filament to extrude for nozzle priming (mm).
z_clearance_mm: How far above the part to raise the nozzle (mm).
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| file_name | Yes | ||
| bed_temp_c | Yes | ||
| z_height_mm | Yes | ||
| layer_number | No | ||
| printer_name | Yes | ||
| fan_speed_pct | No | ||
| flow_rate_pct | No | ||
| hotend_temp_c | Yes | ||
| z_clearance_mm | No | ||
| prime_length_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description thoroughly details the exact recovery protocol: homes X/Y only, re-heats bed then hotend, sets Z position, primes nozzle, restores fan/flow settings. It also notes the outcome: 'printer will be positioned and ready after this call.'
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 well-structured with paragraphs and bullet points, front-loading the purpose. While every sentence adds value, it is slightly verbose; however, it remains clear and effective.
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 11 parameters, no output schema, and no annotations, the description is very complete. It covers behavior, parameter details, prerequisites (OctoPrint+Marlin only), and post-call status.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description includes an 'Args' section that explains each parameter's purpose and context (e.g., 'z_height_mm: Z height to resume from (from checkpoint)'). This adds significant meaning beyond the schema's type and title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it executes firmware-level print resume for OctoPrint+Marlin printers after power loss/failure. It specifies the action (positioning and preparing to resume) and distinguishes from sibling tools like start_print and resume_print.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (after power loss or failure) and when not to use (Moonraker/Klipper printers should use Klipper's SAVE_VARIABLE system). Provides clear alternatives and follow-up actions after the call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
firmware_statusA
Check firmware updates on the default/connected printer (adapter-level, no name needed).
For fleet setups where you need to check a specific printer by name,
use ``check_firmware_status`` instead. Returns a list of firmware
components (e.g. Klipper, Moonraker, OctoPrint) with current and
available versions, plus whether
an update is available.
Not all printer backends support firmware updates. Bambu and
Prusa Link printers will return an ``UNSUPPORTED`` error.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool returns a list of firmware components with versions and update availability, and that some printers will return an 'UNSUPPORTED' error. However, it does not mention behavior for cases like no default printer or disconnection, which would add further transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with two short paragraphs that front-load the main purpose. Every sentence adds value—defining the scope, providing an alternative, describing the output, and noting unsupported backends. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, no output schema, and no annotations, the description is self-contained. It adequately explains what the tool does, what it returns, and important exceptions (unsupported backends). The sibling comparison further contextualizes its use. No gaps are evident.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema is empty. With a baseline of 4 for no parameters, the description adds value by clarifying that the tool operates on the default/connected printer without needing any input, which is implicit from the schema but explicitly stated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: checking firmware updates on the default/connected printer. It uses specific verbs ('Check') and identifies the resource ('firmware updates on the default/connected printer'). It also distinguishes itself from the sibling tool 'check_firmware_status' by noting the difference in scope (default vs. specific printer by name).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use this tool (for the default/connected printer) and when to use an alternative ('For fleet setups... use check_firmware_status instead'). It also provides context on unsupported backends (Bambu and Prusa Link), helping the agent decide when the tool might be inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
first_layer_statusA
Check the status of a first-layer monitor.
Returns the current monitoring state, including any captured snapshots
once monitoring is complete.
Args:
monitor_id: The monitor ID returned by ``start_monitored_print``.
| Name | Required | Description | Default |
|---|---|---|---|
| monitor_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It correctly indicates the tool is read-only (returns state, not mutates) and mentions snapshots. However, it doesn't disclose any prerequisites (e.g., must be after start_monitored_print) or failure cases. Adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: one line for purpose, one for return, one for parameter. No wasted words. It uses a clean docstring format and is easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given only one parameter and no output schema, the description explains the input source and vaguely describes the return (state + snapshots). It could be more detailed about the return format or possible states, but is largely complete for a simple status check.
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 schema provides no parameter description (0% coverage), but the description compensates by explaining that monitor_id is 'The monitor ID returned by start_monitored_print.' This adds crucial semantic information beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Check the status of a first-layer monitor.' It uses a specific verb ('Check') and resource ('first-layer monitor status'), which differentiates it from sibling tools like bed_level_status or cfs_status. The mention of returning captured snapshots adds specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: the tool should be used after starting a monitored print (as the monitor_id argument comes from start_monitored_print). It implies polling for status but does not explicitly state when not to use it or provide alternatives. Still, the context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fleet_analyticsA
Get fleet historical analytics: per-printer success rates, utilization, job throughput.
For live printer status (current state/temps), use ``fleet_status``.
Returns statistics for every registered printer including total prints,
success rate, average print duration, and total print hours. Also
includes fleet-wide aggregate metrics.
Requires Kiln Pro or Business license.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses return fields and license requirement but does not explicitly state read-only nature or any rate limits. Adequate but could be more explicit.
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?
Concise two-sentence structure, front-loaded with purpose. No wasted words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a simple tool with no parameters. Lists return fields and prerequisites (license), despite no output schema. No 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?
No parameters exist; schema coverage is trivial 100%. Description adds meaning by listing return fields, which is appropriate for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets fleet historical analytics with specific metrics (success rates, utilization, job throughput) and distinguishes itself from fleet_status, which provides live printer status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use this tool vs fleet_status for live data. Does not mention alternatives like fleet_utilization or fleet_job_status, but provides clear context for the primary alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fleet_job_statusC
Get the status of a fleet-managed print job.
Args:
job_id: The orchestrated job's identifier.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
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 only states 'Get the status' without disclosing any behavioral traits like authentication requirements, error behavior, or whether it is a read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and includes an Args block, but the format is somewhat redundant for a single parameter. It could be more streamlined, but it is not verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one required parameter, no output schema, and numerous siblings, the description is too sparse. It does not explain the response format, possible statuses, or how this tool differs from similar status tools, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description repeats 'job_id: The orchestrated job's identifier' but the input schema already provides the parameter name and type. With 0% schema description coverage, the description adds no meaningful semantic value beyond what the schema conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get the status of a fleet-managed print job' with a specific verb ('get') and resource ('status of a fleet-managed print job'). It distinguishes from sibling tools like 'job_status' and 'provider_job_status' by explicitly mentioning 'fleet-managed'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'job_status' or 'fleet_submit_job'. There are no contextual hints about prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fleet_statusA
Get live status of all fleet printers (state, temps, connection — current snapshot).
The multi-machine view is a fleet feature. For ONE printer — which is
the single-printer experience at every tier — use ``printer_status``
(``detail="lite"`` for the cheap version), ``printer_snapshot`` or
``monitor_print``; each takes a ``printer_name`` and none of them is
tier-gated, so any machine you own can be inspected and stopped
whatever your licence.
For historical analytics (success rates, throughput), use ``fleet_analytics``.
For grouping by physical location, use ``fleet_status_by_site``.
Returns a list of printer snapshots including name, backend type,
connection status, operational state, and temperatures. Printers
that fail to respond are reported as offline rather than raising.
If no printers are registered yet, the current adapter (from env config)
is auto-registered as "default".
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral transparency. It discloses the return content (list of printer snapshots with name, backend type, connection status, operational state, temperatures), error handling (failed printers are reported offline rather than raising), and a side effect (auto-registers current adapter as 'default' if no printers exist).
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 well-structured and front-loaded with the main purpose, but it is somewhat lengthy due to extensive alternative guidance. Each sentence adds value, yet the text could be tightened without losing clarity, so it earns a 4 rather than a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description is complete: it explains what the tool returns, error behavior, the auto-registration side effect, and how it differs from related tools. It also implies tier gating by noting alternatives are not tier-gated, providing sufficient context for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema provides no parameter details. The description adds no parameter semantics; however, with 0 params the baseline is 4, and the description does clarify the tool's scope (all fleet printers).
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 clearly states the tool's purpose: 'Get live status of all fleet printers (state, temps, connection — current snapshot).' It includes a specific verb and resource, and explicitly distinguishes from sibling tools by noting the multi-machine view is a fleet feature and naming single-printer alternatives like printer_status, printer_snapshot, and monitor_print.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: for one printer, use printer_status/detail='lite' or printer_snapshot or monitor_print; for historical analytics use fleet_analytics; for grouping by physical location use fleet_status_by_site. This clearly tells the agent when to use this tool vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fleet_status_by_siteA
Get fleet status grouped by physical site/location.
Returns printer statuses organized by site, making it easy to see
which printers are idle, busy, or offline at each location.
Printers without a site are grouped under ``"unassigned"``.
Requires Enterprise license.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It clearly states this is a read operation ('Get'), describes the return format, mentions the 'unassigned' grouping, and explicitly notes the requirement of an Enterprise license. No hidden behavior is left unexplained.
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 three sentences with no wasted words. It front-loads the main purpose in the first sentence and adds necessary detail in subsequent sentences. Perfectly concise and 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?
Given no output schema, the description explains the return values (printer statuses grouped by site with status types). It covers edge cases (unassigned printers) and requirements (Enterprise license). The tool is simple and the description 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?
The input schema is empty (0 parameters), so coverage is 100%. The description adds valuable meaning beyond the schema by explaining the output grouping, status categories, and handling of unassigned printers. Baseline for zero parameters is 4, and the description exceeds it.
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 specifies exactly what the tool does: 'Get fleet status grouped by physical site/location.' It clearly distinguishes from generic fleet_status by emphasizing grouping by site. It also details the return structure (idle, busy, offline) and handling of unassigned printers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when site-based grouping is needed but does not explicitly contrast with other tools like fleet_status or list_fleet_sites. No when-not-to-use or alternatives are mentioned, providing only implicit usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fleet_submit_jobA
Submit a print job to the fleet orchestrator.
If no printer is specified, the orchestrator auto-assigns to the best
available printer. Tracks the job through completion.
Args:
file_path: Path to the file to print.
printer_name: Specific printer to assign to (auto-routes if None).
material: Required filament material.
priority: Job priority (low, normal, high).
idempotency_key: Optional opaque key (e.g. a UUID you
generate) naming this one submission. If the call
fails in a way where you cannot tell whether the job
was queued, retry with the SAME key to get the
original job back (``submission: "replayed"``)
instead of queuing a duplicate print. Use a new key
for each job you genuinely want printed.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | ||
| priority | No | ||
| file_path | Yes | ||
| printer_name | No | ||
| idempotency_key | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It notes that the job is tracked through completion and explains the idempotency_key behavior in detail, which is valuable. However, it does not disclose side effects (e.g., resource consumption, error behaviors) beyond auto-assignment, so full transparency is not achieved.
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 well-organized with a clear overview, a note on auto-assignment, and an Args list. It is moderately verbose but each part adds value; no redundancy. It could be tightened without losing meaning, but is acceptable.
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?
It covers the core purpose, key behaviors, and parameter meanings. It lacks details on return values (though no output schema), error conditions, or post-submission workflow beyond 'tracks through completion'. This is sufficient for most use cases but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All five parameters are described: file_path, printer_name (auto-routes if None), material (required), priority (values listed), and idempotency_key (purpose and retry semantics). This adds meaning far beyond the schema's type-only definitions, achieving full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Submit a print job to the fleet orchestrator' and elaborates on auto-assignment, making it distinct from simple submit tools. It clearly differentiates via 'fleet' and 'auto-assign' behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (for fleet submission, especially when no specific printer is required) but does not explicitly compare with alternatives like 'submit_job' or 'start_print'. The auto-assign note gives context, but explicit when-to-use vs. other tools is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fleet_utilizationA
Get fleet utilization metrics — busy/idle/offline counts and utilization %.
Lightweight overview of fleet capacity. For full printer details, use
``fleet_status``. For historical analytics, use ``fleet_analytics``.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description discloses that the tool provides a lightweight, non-destructive overview of current fleet capacity. It does not mention any side effects or special requirements, which is acceptable for a read-only metric tool. However, it could be more explicit about data freshness or caching 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: first sentence defines the tool's core function, second sentence provides context and alternative tools. No wasted words, front-loaded with key 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 simple read tool with no parameters and no output schema, the description is mostly complete. It explains the metrics and differentiates from related tools. It could mention the output format or limitations, but it's sufficient for effective use.
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?
With zero parameters, the baseline is 4. The description does not need to add parameter details, but it could indicate that no parameters are required. Still, the baseline holds.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool retrieves fleet utilization metrics (busy/idle/offline counts and utilization percentage). It also explicitly distinguishes itself from the sibling tools fleet_status and fleet_analytics, making its unique purpose 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?
Explicitly advises when to use this tool ('lightweight overview of fleet capacity') and when to use alternatives: 'For full printer details, use fleet_status. For historical analytics, use fleet_analytics.' This provides clear usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
force_print_oversizeA
Briefly override the pre-print impossibility gate for ONE printer.
Kiln refuses a print that physically cannot succeed on the target
printer — geometry that exceeds the build volume (the nozzle would
crash) or a material whose minimum nozzle temperature exceeds the
printer's hotend ceiling (it cannot melt the filament). Those are
hard physical limits, not warnings, so a normal print call is blocked.
This is the human's "I understand — print it anyway" escape hatch, e.g.
when you are deliberately sending the file to a *different* printer than
the one connected. It grants a short, per-printer override that lets the
NEXT otherwise-blocked print through, then expires.
Safety: classified ``confirm`` (see ``data/tool_safety.json``). An
autonomous agent cannot self-approve it — the confirmation layer keeps a
human in the loop, exactly like ``emergency_stop``. Designing and slicing
any size is never blocked; only the final print-to-hardware step is.
:param printer_id: Printer model to override (e.g. ``"bambu_a1"``).
Empty resolves to the active printer.
:param ttl_minutes: Minutes the override stays active (default 5, max 60).
:returns: Grant confirmation, or a confirmation-required challenge.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_id | No | ||
| ttl_minutes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully covers behavioral aspects: it explains the temporary nature (short, per-printer override that expires), the safety classification (confirm), and the human-in-the-loop requirement. It does not contradict any annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with paragraphs, bullet points, and clear sections. Every sentence adds value, and the content is front-loaded with the core action. No redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is complete: it explains the tool's behavior, safety, parameters, and expected returns ('Grant confirmation, or a confirmation-required challenge'). It also references external documentation for safety details.
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?
Since the input schema provides no descriptions (0% coverage), the description explains both parameters: printer_id (with example and default behavior) and ttl_minutes (with default and max), adding value beyond the schema's titles and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to override the pre-print impossibility gate for a single printer. It explains the specific verb 'override' and the resource 'pre-print impossibility gate,' and distinguishes this tool from other print operations by highlighting it as an escape hatch for blocked prints.
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?
Provides explicit guidance on when to use the tool (e.g., when a print is blocked due to physical limits and intentional bypass is needed) and when not to (autonomous agents cannot self-approve). It also mentions alternative uses like sending to a different printer and clarifies that design/slicing steps are unaffected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forecast_material_consumptionA
Forecast when a material type will run out.
Combines current stock with historical consumption rate to
estimate remaining days and urgency level (ok/low/critical).
Args:
material_type: Material type to forecast (e.g. ``"PLA"``).
days_ahead: Days of history for rate estimation (default 30).
| Name | Required | Description | Default |
|---|---|---|---|
| days_ahead | No | ||
| material_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It mentions combining stock and consumption, but does not disclose whether the tool is read-only, requires permissions, or has side effects. No rate limits or other constraints are mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is reasonably concise with two short paragraphs and a parameter listing. The main purpose is front-loaded. However, the Args block uses Python docstring style, which is slightly verbose and non-standard for MCP, but still clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only two simple parameters and no output schema, the description provides adequate coverage of inputs and behavior. However, it fails to describe the exact output format or structure, which is a gap since there is no output schema to rely on.
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 schema has no parameter descriptions (0% coverage), but the description adds meaningful explanations: material_type example 'PLA' and days_ahead default 30. This clarifies parameter purpose beyond the schema's minimal type and default information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool forecasts when a material type will run out, combining current stock with historical consumption. It specifies output: remaining days and urgency level. This distinguishes it from siblings like get_material_consumption_history and get_restock_suggestions which focus on past consumption or restocking.
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 use for forecasting depletion, but does not explicitly state when to use it versus alternatives or mention prerequisites like having stock data. No exclusions or alternative tools are mentioned, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fulfillment_alertsA
Check for fulfillment order alerts (stalled, failed, cancelled orders).
Returns any active alerts from the background fulfillment monitor. Alerts are generated when orders are cancelled/failed by the provider or have been stuck in processing longer than the expected lead time.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explains that alerts are generated from cancellations, failures, or processing delays. However, it does not specify return format, side effects, authentication needs, or rate limits, leaving some behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with no wasted words. Front-loaded with the main purpose, followed by brief elaboration. Perfectly sized for a simple alert-checking tool.
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 0 parameters and no output schema, the description covers the domain well: it defines alerts and their triggers. It could explicitly mention output structure (e.g., list of alerts with fields), but for a tool of this simplicity, it is mostly 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?
The tool has 0 parameters, so schema coverage is 100%. Baseline is 4. The description adds value by explaining what the tool returns, which is appropriate given no parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'check' and resource 'fulfillment order alerts', and specifies three alert types (stalled, failed, cancelled). It distinguishes itself from sibling tools like fulfillment_order by focusing on active alerts from a background monitor.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for checking active alerts, but does not explicitly state when not to use it or suggest alternative tools like fulfillment_order_status for detailed order info. Context is clear but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fulfillment_cancelA
Cancel a fulfillment order (if still cancellable).
Args:
order_id: Order ID to cancel.
Only orders that have not yet shipped can be cancelled.
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must bear the full burden of behavioral disclosure. It mentions cancellation is conditional but does not describe what happens if the order is not cancellable (error? no-op?), nor does it mention side effects, authentication requirements, or idempotency. For a mutation tool, this is lacking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three short sentences. It is front-loaded with the action and resource. However, it could be more structured (e.g., using a clear when statement).
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 tool with one parameter and no output schema, the description covers the basic purpose and usage condition. However, it is incomplete in explaining the result of the action, error handling, or prerequisites beyond shipment status. Given the large sibling set, more nuance would help.
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 description adds minimal value beyond the schema for the single parameter order_id. It says 'Order ID to cancel,' which is nearly tautological. With 0% schema coverage, the description should provide more context (e.g., format, source, or validation).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (cancel) and resource (fulfillment order), and explicitly adds the condition 'if still cancellable' and 'Only orders that have not yet shipped can be cancelled.' This distinguishes it from sibling tools like cancel_job and cancel_print which operate on different resources.
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?
Provides a clear condition for when the tool is applicable: orders that have not shipped. This gives the agent a when-not rule. However, it does not explicitly name alternative tools for orders that have already shipped, which would boost the score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fulfillment_materialsA
List available materials from external manufacturing services.
Returns materials with technology (FDM, SLA, SLS, etc.), color,
finish, and pricing. Use the material ``id`` when requesting a quote
with ``fulfillment_quote``.
The full catalog contains 2000+ materials. Use the optional filter
parameters to narrow results so agents can find the right material
without overwhelming context windows.
Args:
search: Filter materials whose name contains this term
(word-boundary match, case-insensitive). E.g. ``"nylon"``
matches "Nylon 12" and "Glass-filled Nylon" but not
"Carbonylon".
technology: Filter by manufacturing technology (word-boundary
match, case-insensitive). Common values: ``"SLS"``,
``"FDM"``, ``"SLA"``, ``"MJF"``, ``"DMLS"``. Matches
against both the technology field and the material name.
limit: Maximum number of materials to return (default 50).
Direct Craftcloud mode requires the operator's own
``KILN_CRAFTCLOUD_API_KEY``. Normal users should use the hosted
kiln-pro proxy so Craftcloud access stays server-side and quota
enforcement applies.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| search | No | ||
| technology | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: it describes the search matching (word-boundary, case-insensitive), technology filter behavior, limit default, and authentication requirements for direct mode. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with paragraphs and a bulleted Args section. While detailed, it could be slightly more concise, but every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the return format (materials with technology, color, finish, pricing) and mentions catalog size. It covers filtering and defaults adequately. No output schema exists, so this is sufficient; minor omission of pagination details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds detailed semantics for all three parameters: search includes examples and matching behavior, technology lists common values and matching scope, and limit specifies default. This compensates fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists available materials from external manufacturing services, specifies the returned fields, and distinguishes itself from sibling tools like fulfillment_quote by referencing the use of the material id for quoting.
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 explains when to use the tool (to list materials), advises using filters to narrow results, and mentions authentication modes. However, it lacks explicit guidance on when not to use this tool or direct comparisons to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fulfillment_orderA
Place a manufacturing order based on a previous quote.
Charges the orchestration fee BEFORE placing the order to prevent
unpaid orders. If order placement fails after payment, the
charge is automatically refunded.
Args:
quote_id: Quote ID from ``fulfillment_quote``.
shipping_option_id: Shipping option ID from the quote's
``shipping_options`` list.
shipping_address: Optional shipping contact/address dict for
provider checkout. Keys: ``first_name``, ``last_name``,
``email``, ``phone``, ``street``, ``city``,
``postal_code``, ``country``; include ``state`` for US.
shipping_profile_name: Saved shipping profile name to use
instead of passing ``shipping_address``.
preview_token: Token from ``issue_preview_token`` after the
rendered model preview was shown to and approved by the user.
preview_file_path: Exact model file path that was previewed.
The preview token is validated against this file's bytes.
shipping_confirmation_token: Token from
``issue_shipping_confirmation_token`` after the contact and
shipping address were shown to and approved by the user.
payment_hold_id: PaymentIntent ID from the quote's
``payment_hold`` field. If provided, the previously
authorized hold is captured before placing the order.
This is the preferred payment flow.
quoted_price: Total price returned by ``fulfillment_quote``
(used to calculate the fee when no ``payment_hold_id``
is provided). Required when ``payment_hold_id`` is
empty and a payment rail is configured.
quoted_currency: Currency of ``quoted_price`` (default USD).
jurisdiction: Buyer's region (e.g. ``"US-CA"``, ``"DE"``, ``"AU"``).
When provided, the response includes an accurate total with
tax so the user sees exactly what they'll pay — no hidden
fees. Use ``tax_jurisdictions`` to see all supported codes.
business_tax_id: If the buyer is a registered business, their
tax ID (EU VAT number, AU ABN, etc.). Businesses in the
EU, UK, Australia, and Japan are tax-exempt via reverse
charge — the tax line shows $0.00.
Use ``fulfillment_order_status`` to track progress after placing.
| Name | Required | Description | Default |
|---|---|---|---|
| quote_id | Yes | ||
| jurisdiction | No | ||
| quoted_price | No | ||
| preview_token | No | ||
| business_tax_id | No | ||
| payment_hold_id | No | ||
| quoted_currency | No | USD | |
| shipping_address | No | ||
| preview_file_path | No | ||
| shipping_option_id | No | ||
| shipping_profile_name | No | ||
| shipping_confirmation_token | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the burden of behavioral disclosure. It details key behaviors: charging the orchestration fee before placing the order, automatic refund if placement fails, payment hold vs direct payment, tax calculation with jurisdiction, and tax exemption for businesses with tax ID. This goes well beyond what the schema 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?
The description is structured well with a clear introductory sentence followed by detailed parameter descriptions. However, it is somewhat verbose, especially in the args section. The front-loading of the purpose and behavioral note is good, but the length could be trimmed slightly without losing value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of 12 parameters and no output schema, the description covers all necessary aspects: parameter dependencies, payment flow, tax behavior, and next steps (using fulfillment_order_status). It lacks an explicit description of the immediate return value, but the reference to tracking status compensates for that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must add meaning, and it does so extensively. Every parameter is described with its source (e.g., quote_id from fulfillment_quote, shipping_option_id from quote's shipping_options), constraints (e.g., preview_token validated against file bytes), and conditional requirements (e.g., quoted_price required when no payment_hold_id and payment rail configured). This is far more informative than the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Place a manufacturing order based on a previous quote.' It uses a specific verb ('Place') and resource ('manufacturing order'), and implicitly distinguishes from sibling tools like fulfillment_quote and fulfillment_order_status by referencing them in the description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: after obtaining a quote from fulfillment_quote, and before using fulfillment_order_status to track progress. It also outlines alternative payment flows. However, it does not explicitly state when not to use it or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fulfillment_order_statusA
Check the status of a fulfillment order.
Args:
order_id: Order ID from ``fulfillment_order``.
Returns current order state, tracking info, and estimated delivery.
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavioral traits. It states return values but does not declare read-only nature or side effects. No mention of auth requirements or safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise, front-loaded purpose sentence followed by args docstring. 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?
Lists key return fields (order state, tracking, delivery) but lacks error scenarios, state enum, or mention of pagination. No output schema to supplement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description explains that 'order_id' comes from 'fulfillment_order', providing essential context beyond schema field name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Check' and the resource 'status of a fulfillment order', distinguishing it from sibling tools like 'fulfillment_order' (likely create) and 'fulfillment_alerts'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, such as 'fulfillment_alerts' or 'fulfillment_quote'. Does not mention prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fulfillment_quoteA
Get a manufacturing quote for a 3D model from Craftcloud.
Args:
file_path: Absolute path to the model file (STL, 3MF, OBJ).
material_id: Material ID from ``fulfillment_materials``.
quantity: Number of copies to print (default 1).
shipping_country: ISO country code for shipping (default "US").
Uploads the model, returns pricing from Craftcloud's network of 150+
print services, including unit price, total, lead time, and shipping
options. A Kiln orchestration fee is shown separately so
the user sees the full cost before committing.
If a payment method is linked, a hold is placed on the fee amount
at quote time (Stripe auth-and-capture). The hold is captured
when the order is placed via ``fulfillment_order``, or released
if the user doesn't proceed.
Use the returned ``quote_id`` with ``fulfillment_order`` to place the
order.
| Name | Required | Description | Default |
|---|---|---|---|
| quantity | No | ||
| file_path | Yes | ||
| material_id | Yes | ||
| shipping_country | No | US |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses behavioral traits: upload process, return values (pricing, lead time, shipping), fee breakdown, and the payment hold/capture mechanism. This is comprehensive and goes beyond minimal expectations.
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 well-structured and concise: it opens with a clear purpose statement, follows with parameter documentation, then describes behavior and return values, and ends with a usage directive. Every sentence serves a purpose, and the information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is contextually complete for a quote-gathering tool: it explains the entire flow from input to output, including the payment hold mechanism, fee breakdown, and next step (use fulfillment_order). It does not explicitly mention error handling, but the depth of behavioral context compensates.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description bears the full load. It provides clear parameter descriptions including source for material_id ('from fulfillment_materials'), unit for quantity, and format for shipping_country (ISO code). This adds significant semantic value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Get quote') and resource ('for a 3D model from Craftcloud'). It differentiates from sibling tools like fulfillment_order and fulfillment_materials by explaining the workflow: use this to get a quote, then use fulfillment_order to place the order.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: it is the first step in the fulfillment workflow, and it directs the user to use the returned quote_id with fulfillment_order. However, it does not explicitly exclude use cases like cached quotes, which a sibling tool addresses. Thus, guidance is good but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_adaptive_slicing_planA
Generate a per-layer adaptive slicing plan.
Creates a layer-by-layer plan with variable heights, speeds, and
cooling based on detected geometry regions and material constraints.
Args:
regions: List of region dicts from ``analyze_model_geometry``.
Each dict needs ``region_type``, ``z_start_mm``,
``z_end_mm``, and ``area_pct``.
material: Material name (PLA, PETG, ABS, etc.).
model_height_mm: Total model height in mm.
model_name: Optional model name for record keeping.
printer: Optional printer identifier.
nozzle_diameter_mm: Nozzle diameter in mm.
mode: Adaptive strategy — "balanced" (default), "quality_first",
"speed_first", or "material_optimized".
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | balanced | |
| printer | No | ||
| regions | Yes | ||
| material | Yes | ||
| model_name | No | ||
| model_height_mm | Yes | ||
| nozzle_diameter_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It describes the operation but does not disclose any side effects, required permissions, state changes, or preconditions. The agent cannot infer if this tool is safe to call without additional context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear summary followed by parameter details. It is front-loaded with the main purpose. However, the parameter list could be slightly more structured (e.g., using bullet points) to improve readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the tool's purpose and parameters, but it does not describe the output format (the generated plan structure) or any prerequisites (e.g., must call analyze_model_geometry first). Given the lack of an output schema, this leaves the agent with gaps in understanding the full context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description adds detailed meaning for all parameters. For example, 'regions' is described as a list of dicts from analyze_model_geometry with specific keys, and 'mode' lists the four allowed values. This provides essential context beyond the schema's type definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it generates a per-layer adaptive slicing plan with variable heights, speeds, and cooling. It distinguishes from sibling tools like 'quick_adaptive_plan' and 'estimate_adaptive_time_savings' by specifying the output is a per-layer plan based on geometry regions and material.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by mentioning geometry regions and material constraints, but does not explicitly state when to use this tool over alternatives like 'quick_adaptive_plan' or when it is appropriate. No when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_and_printA
Full pipeline: generate a model, validate, slice, and upload (preview).
**EXPERIMENTAL:** This generates a 3D model, validates it, slices it,
and uploads it to the printer — but does NOT start printing. 3D
printers are delicate hardware and AI-generated models are not
guaranteed to be safe or printable. You MUST call ``start_print``
separately after reviewing the preview results.
When possible, prefer downloading proven models from marketplaces
(Thingiverse, MyMiniFactory) instead of generating new ones.
Args:
prompt: Text description of the 3D model to generate.
provider: Generation provider (``"meshy"`` or ``"openscad"``).
style: Optional style hint for cloud providers.
printer_name: Target printer. Omit for the default printer.
profile: Slicer profile path.
printer_id: Optional printer model ID for bundled profile
auto-selection (e.g. ``"prusa_mini"``).
timeout: Max seconds to wait for generation (default 600).
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | ||
| prompt | Yes | ||
| profile | No | ||
| timeout | No | ||
| provider | No | meshy | |
| printer_id | No | ||
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the experimental nature, that printing does not start, and general safety concerns. However, it lacks details on validation failure handling, preview format, upload implications, and prerequisites like printer lock, leaving some behavioral ambiguity.
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 relatively concise, with a clear two-paragraph structure: first paragraph explains purpose and warnings, second lists parameters. It could be slightly more streamlined, but it earns its sentences without excessive verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (7 params, no output schema, many sibling tools), the description covers the main workflow and cautions but omits return values, preview mechanism, and prerequisites like printer lock. This leaves gaps for an agent to fully understand the tool's behavior and output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description compensates by explaining each parameter: prompt (text), provider (with example values), style (optional hint), printer_name (default omitted), profile (slicer path), printer_id (with example), and timeout (default 600). Some parameters like style lack detail, but overall adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool executes a full pipeline: generate, validate, slice, and upload to preview. It distinguishes from start_print and implies it is a combined operation, but doesn't explicitly differentiate from other pipeline tools like validate_and_prepare or slice_and_print.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to call start_print separately after reviewing preview results, warns against printing AI-generated models, and recommends downloading from marketplaces as an alternative. This provides clear guidance on when to use the tool and when not to.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_from_templateA
Generate a 3D model from a parametric template with explicit parameters (local, no AI API).
Use when you know which template and parameter values to use. For AI-assisted
parameter inference + structural analysis, use ``smart_generate_from_template``.
Renders the template's OpenSCAD code with custom parameter values
into a printable STL. Use ``list_design_templates`` to see
available templates and their parameters.
When the kiln-pro package is installed (Pro+ tier), the result MAY
carry an ``intent`` block describing the geometric assertions the
template parameters implied, and a sidecar ``<mesh>.intent.json``
is written next to the produced STL. Free / public installs see
the result unchanged. See https://kiln3d.com for tier details.
Args:
template_id: Template ID from ``list_design_templates``.
parameters: Optional dict of parameter overrides
(e.g., ``{"phone_width": 80, "angle": 70}``).INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| parameters | No | ||
| template_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses side effects thoroughly: optional intent block and sidecar file for pro tier, inline 3D stage for supported hosts, and automatic decimation of oversized meshes. Even notes the free/public install 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?
The description is detailed with multiple paragraphs, but each sentence contributes value. The inline 3D stage and tier details could be considered slightly verbose, but overall it remains focused and well-organized.
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?
Comprehensive coverage: purpose, usage, side effects, and parameter semantics are all addressed. Given the simple input schema and no output schema, the description sufficiently covers all relevant aspects.
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?
Explains both parameters in detail: template_id is from list_design_templates, parameters is an optional dict of overrides with example. The schema only provides types, so the description adds essential meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool generates a 3D model from a parametric template with explicit parameters, and distinguishes it from smart_generate_from_template. The rendering of OpenSCAD code to STL is explicitly mentioned.
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?
Provides explicit usage guidance: 'Use when you know which template and parameter values to use' and contrasts with the AI-assisted alternative. Also points to list_design_templates for available templates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_modelA
Generate a 3D model from a text prompt via external AI API (Meshy/etc).
Pass ``material`` when the user has named one ("print this in
TPU") — it steers the design-intelligence prompt enrichment
toward that material's constraints. It is a design hint, not a
slicing setting; leave it empty when the material is undecided.
Start here if user has no template/image — just a text description.
For image-based generation, use ``generate_model_from_image``.
For parametric templates (local, no AI API needed), use ``generate_from_template``.
To also slice + upload in one step, use ``generate_and_print``.
**EXPERIMENTAL:** AI-generated 3D models are experimental and may not
be suitable for printing without manual review. Generated geometry
can have thin walls, non-manifold faces, floating islands, or
dimensions that exceed printer build volume. 3D printers are delicate
hardware — always validate the generated mesh before printing.
**When possible, prefer downloading proven community models from
marketplaces** (Thingiverse, MyMiniFactory) over generating new ones.
Use generation for custom/unique objects only.
Submits a generation job to the specified provider and returns a
job ID for status tracking. Use ``generation_status`` to poll for
completion, then ``download_generated_model`` to retrieve the file.
**Prompt tips for Meshy (text-to-3D AI):**
- Describe the physical object clearly: shape, size, purpose.
- Include material cues: "wooden", "metallic", "smooth plastic".
- Specify printability: "solid base", "no overhangs", "flat bottom".
- Keep prompts under 200 words for best results (max 600 chars).
- Good example: "A phone stand with a curved cradle, flat rectangular
base, and angled back support. Smooth plastic surface."
- Bad example: "make me something cool" (too vague).
**For OpenSCAD**, the prompt must be valid OpenSCAD code. The job
completes synchronously and the result is immediately available.
Args:
prompt: Text description (or OpenSCAD code for ``openscad``).
provider: Generation backend — ``"meshy"`` (cloud AI) or
``"openscad"`` (local parametric). Default: ``"meshy"``.
format: Desired output format (``"stl"``). Default: ``"stl"``.
style: Optional style hint (``"realistic"`` or ``"sculpture"``
for Meshy). Ignored by OpenSCAD.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | ||
| format | No | stl | |
| prompt | Yes | ||
| material | No | ||
| provider | No | meshy |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavioral traits: experimental nature, risks (non-printable geometry), workflow (submit job, poll, download), and provider differences (Meshy vs OpenSCAD).
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?
Well-structured with sections, bullet points, and front-loaded summary. Some verbosity in prompt examples, but generally efficient and easy 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?
Given the tool's complexity and no output schema, the description covers all essential aspects: purpose, when to use, workflow, risks, parameter details, and provider-specific notes. Complete and self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description thoroughly explains all 5 parameters: prompt (text or OpenSCAD), provider (meshy/openscad), format (stl), style (optional, ignored by OpenSCAD), and material (design hint). Includes prompt tips.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool generates a 3D model from a text prompt via external AI API. Distinguishes from sibling tools by explicitly naming alternatives for image-based generation, parametric templates, and combined slice+upload.
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?
Explicitly states when to use this tool (text description, no template/image) and when to use alternatives. Provides guidance on the 'material' parameter and OpenSCAD prompt requirements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_model_from_imageA
Make a 3D model from a reference image.
DEFAULT (keyless): you (the agent) can SEE the image — study it
and write the OpenSCAD yourself, then compile_scad. You do NOT
need an image-to-3D provider, and with no key configured this
tool hands the job back to your vision instead of erroring.
OPT-IN cloud path: when the user has set their OWN
KILN_MESHY_API_KEY, this submits the image to Meshy for an AI mesh
reconstruction. The image should show the object clearly against a
clean background for best results.
**EXPERIMENTAL:** AI-generated models are experimental. Always
validate the mesh before printing.
**Image tips:**
- Use a clear, well-lit photo of the object.
- Plain/solid backgrounds produce better results.
- Show the full object — avoid cropped or partial views.
- Multiple angles are not supported; use the best single view.
Args:
image_url: URL to the reference image (PNG, JPG). Must be
publicly accessible.
provider: Generation provider. Currently only ``"meshy"``
supports image-to-3D.
style: Optional style hint (``"realistic"`` or ``"sculpture"``).
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | ||
| provider | No | meshy | |
| image_url | Yes |
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 discloses the dual-mode behavior, experimental nature, and image requirements. However, it does not specify the return value or output format, nor does it mention potential costs with the API key or error handling for invalid images.
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 front-loaded with the core purpose, then logically breaks into default/opt-in, experimental note, image tips, and parameter details. While somewhat lengthy, each section contributes necessary context without irrelevant detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (dual-mode, external API), the description covers usage scenarios and parameter guidance well. However, it lacks explanation of the output (what is returned to the agent), error scenarios, and lifecycle of the generated model, which are important for an agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning beyond the bare input schema: it defines image_url as requiring a publicly accessible URL (PNG/JPG), limits provider to 'meshy', and enumerates style options ('realistic' or 'sculpture'). With 0% schema description coverage, this fully compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it makes a 3D model from a reference image and distinguishes between a default mode (agent uses vision to write OpenSCAD) and an opt-in cloud path (using Meshy). This differentiation sets it apart from sibling tools like generate_model which likely take text prompts.
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 explains when to use the keyless default path vs the opt-in cloud path, and provides image tips for best results. However, it does not explicitly compare with sibling tools or state when not to use this tool, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_model_with_providerA
Generate a printable design via an external AI provider.
The cloud, provider-backed creation path: hands a natural-language
description to an external idea-to-3D service, audits the candidate
for printability and design correctness, and can perform one or
more corrective retries using feedback from failed attempts.
This is NOT the default. It needs a configured provider (the user
supplies their own API key). For most custom objects the free,
keyless path is to author the OpenSCAD yourself and compile it with
``compile_scad`` — no provider required. Reach for this tool when
the shape is organic or photo-derived and hard to express in
OpenSCAD AND a provider is configured.
For the user-facing saved-goal flow (capturing duty / environment /
materials / safety so the audit and post-print review can verify
the result against the user's intent), call this through
``design_session(verb="generate", session_id=...)`` rather than
calling ``generate_model_with_provider`` directly.
Provider notes:
- ``auto`` prefers Gemini for idea-to-CAD when available.
- ``openscad`` is intentionally rejected here because it compiles
code; it does not turn a natural-language idea into geometry.
No-provider fallback:
- If no cloud provider is configured this raises NO_PROVIDER. Do
NOT ask the user to set an API key — fall back to writing the
OpenSCAD yourself and compiling it with compile_scad. That free,
local path is the default for custom objects; cloud providers are
an opt-in the user supplies their own key for (best for organic
or photo-based shapes OpenSCAD can't easily reach).
Args:
requirements: Natural-language description of the part to create.
provider: ``auto``, ``gemini``, ``meshy``, ``tripo3d``, or ``stability``.
material: Optional material target (e.g. ``"petg"``).
printer_model: Optional printer model ID (e.g. ``"bambu_a1"``).
style: Optional style hint for providers that support it.
output_dir: Optional directory for generated files.
build_volume_x: Optional build volume X override in mm.
build_volume_y: Optional build volume Y override in mm.
build_volume_z: Optional build volume Z override in mm.
nozzle_diameter: Printer nozzle diameter in mm.
layer_height: Printer layer height in mm.
max_overhang_angle: Supportless overhang threshold in degrees.
timeout: Max seconds to wait per generation attempt.
max_attempts: Max corrective generation attempts.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | ||
| timeout | No | ||
| material | No | ||
| provider | No | auto | |
| output_dir | No | ||
| layer_height | No | ||
| max_attempts | No | ||
| requirements | Yes | ||
| printer_model | No | ||
| build_volume_x | No | ||
| build_volume_y | No | ||
| build_volume_z | No | ||
| nozzle_diameter | No | ||
| max_overhang_angle | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so thoroughly. It discloses the external AI provider call, auditing for printability, corrective retries, the NO_PROVIDER failure mode, provider-specific behavior (auto, openscad rejection), and the inline 3D stage behavior including mesh decimation and the caveat that the PNG preview is not the full experience.
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 long but well-structured with clear sections (core purpose, usage guidance, provider notes, no-provider fallback, Args, and 3D stage behavior). There is some redundancy around the fallback path being mentioned more than once, but the repetition reinforces a critical decision rule and is acceptable given the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, parameter semantics, edge cases, provider behavior, and post-success UX exceptionally well. The main gap is that it does not explicitly describe the tool's exact return value or output format beyond mentioning generated files and a preview, which could matter for an agent deciding how to use the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the Args section compensates by explaining every parameter: requirements, provider with its allowed values, material with an example, printer_model, timeout, max_attempts, build volumes, nozzle diameter, layer height, and max_overhang_angle. This adds real semantic meaning beyond the raw schema properties.
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 opening sentence clearly states a specific verb and object: "Generate a printable design via an external AI provider." It further distinguishes itself from alternative tools like compile_scad and identifies itself as the cloud provider-backed generation path, so there is no ambiguity about what the tool does or how it differs from siblings.
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 explicit when-to-use and when-not-to-use guidance: "This is NOT the default," use compile_scad for most custom objects, and "Reach for this tool when the shape is organic or photo-derived... AND a provider is configured." It also names design_session as the correct entry point for the saved-goal flow and instructs agents to fall back to OpenSCAD rather than asking users for an API key.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_print_certificateA
Generate a print "birth certificate" for a 3D model.
Queries print history for the file and builds a certificate
containing tested printers, materials, success rate, and
recommended settings.
Args:
file_path: Path to the 3D model file.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool queries print history and builds a certificate, implying a read-only operation. However, it does not specify behavior for missing file_path, empty history, or potential side effects (none expected, but unstated). Annotations are absent, so description carries the burden but is only moderately complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the primary purpose, and followed by a clear bullet of what the certificate contains. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description is adequate but lacks details on return format, error handling, or edge cases (e.g., missing history). It covers the core functionality but leaves minor 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?
The description includes an Args section that explains file_path as 'Path to the 3D model file,' adding meaning beyond the schema's type-only definition. Schema coverage is 0%, so description compensates well for this single parameter.
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 exactly what the tool does: generate a print 'birth certificate' for a 3D model by querying print history and building a certificate with specific contents. This is a unique verb+resource combination that clearly distinguishes it from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like get_model_print_history or analyze_print_failure. The description does not specify prerequisites or context, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_template_variationsA
Generate multiple variations of a parametric template.
Creates N variations by sampling parameter values across their
valid ranges. Useful for exploring design space or offering
choices to the user.
:param template_id: Template ID (e.g. ``"phone_stand"``).
:param variation_count: Number of variations (1-10, default 3).
:param parameter_ranges: Optional overrides ``{param: [min, max]}``.
:returns: Dict with list of generated variations and their files.
| Name | Required | Description | Default |
|---|---|---|---|
| template_id | Yes | ||
| variation_count | No | ||
| parameter_ranges | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given the absence of annotations, the description carries the full burden. It states the basic behavior (sampling parameters to create variations) but omits important details: whether the operation is synchronous or asynchronous, resource implications, permissions needed, or side effects. The return format is only briefly mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a summary line, mechanism, and parameter docs. It is front-loaded with the main purpose. However, the parameter descriptions add length and could be slightly more concise, but overall it earns its keep as it adds necessary 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 generating parametric variations, the description covers the core use case, parameters, and return type. It lacks details on asynchronous behavior or persistence, but given no output schema, the mention of return values is helpful. It is sufficient for an agent to select and invoke the tool correctly in most scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides substantial added value beyond the schema, which has 0% description coverage. It explains each parameter: template_id with an example, variation_count with allowed range (1-10) and default (3), and parameter_ranges with the expected structure (dict of param to [min, max]). This fully compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'Generate multiple variations of a parametric template.' It further explains the mechanism (sampling parameter values) and use cases (exploring design space, offering choices), effectively distinguishing it from siblings like generate_from_template which likely produces a single output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions when to use the tool ('useful for exploring design space or offering choices'), providing clear context. However, it lacks explicit guidance on when not to use it or direct comparisons to alternatives, which would strengthen the score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_textureA
Cloud AI texture generation (requires Meshy API key + internet).
For instant offline textures without any API, use
``apply_procedural_texture`` (multicolor) or
``apply_geometric_texture`` (relief) from kiln-pro.
Takes any untextured mesh (STL, OBJ, GLB) and generates a
UV-mapped texture based on the text description. The textured
model can then be processed with ``auto_multicolor_from_texture``
(Kiln Pro) for multi-material printing.
Requires a Meshy API key (``KILN_MESHY_API_KEY``).
Args:
mesh_path: Absolute path to the mesh file (STL, OBJ, GLB, FBX).
prompt: Text description of the desired texture (max 600 chars).
E.g. "smooth matte wood grain with dark walnut finish".
style: Art style — ``"realistic"`` (default) or ``"2.5d-cartoon"``.
provider: Generation provider. Currently only ``"meshy"`` supports
retexturing.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | realistic | |
| prompt | Yes | ||
| provider | No | meshy | |
| mesh_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses the need for a Meshy API key and internet, but lacks details on side effects (e.g., cost, API limits, failure behavior). No annotations exist, so the description carries the full burden but could be more thorough.
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?
Well-structured with short paragraphs and bullet-like formatting. Could be slightly more concise (e.g., removing 'Cloud AI texture generation' redundancy), but each sentence serves a 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?
Lacks description of the return value (e.g., path to textured model). Given no output schema, this is a notable gap. Otherwise, it covers prerequisites, parameters, and sibling differentiation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All four parameters have explanations beyond the schema: mesh_path (absolute path), prompt (max 600 chars with example), style (enum with default), provider (only meshy for retexturing). Schema coverage is 0%, so the description compensates fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Cloud AI texture generation' for untextured meshes. It distinguishes from siblings by explicitly naming 'apply_procedural_texture' and 'apply_geometric_texture' as offline alternatives.
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?
Provides explicit guidance on when to use this tool (online AI texture generation) vs alternatives (offline textures). Also specifies prerequisites (Meshy API key) and mentions post-processing with 'auto_multicolor_from_texture'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generation_feedback_loop_statusC
Check the status of a generation feedback loop.
Args:
model_id: The model ID of the feedback loop.
| Name | Required | Description | Default |
|---|---|---|---|
| model_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the full burden. It only says 'Check the status', implying read-only, but it does not confirm idempotency, side effects, or any behavioral traits like required authentication or rate 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?
The description is very brief, but it lacks important context. It is not overly wordy, but it sacrifices comprehensiveness for brevity. A score of 3 reflects that it is minimally concise without being wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one parameter, no output schema, and no annotations, the description should explain what the response contains (e.g., possible statuses, error conditions). It fails to do so, leaving the agent without critical information to handle the tool's output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description needed to add meaning to the parameter 'model_id'. It merely restates it as 'The model ID of the feedback loop', which adds no value beyond the schema's 'Model Id' title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool checks the status of a generation feedback loop using 'Check the status'. However, it does not distinguish itself from the sibling tool 'get_feedback_loop_status', which appears to have a very similar purpose.
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 guidelines are provided about when to use this tool versus alternatives or any context on prerequisites. The description solely states the action without any usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generation_statusC
Check the status of a model generation job.
Args:
job_id: Job ID returned by ``generate_model``.
provider: Provider that owns the job (``"meshy"`` or ``"openscad"``).
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| provider | No | meshy |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only says 'check', implying read-only, but does not confirm idempotency, auth needs, or rate limits. Lacks transparency.
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?
Short description with purpose at the beginning. The docstring format for args is clean. Could be slightly more structured but overall 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?
Lacks output schema and description does not mention return values or status format. For a status tool, the output structure is important context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description explains both parameters: job_id as the ID from generate_model, and provider as 'meshy' or 'openscad'. Adds meaning beyond schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it checks the status of a model generation job, with specific verb and resource. However, it does not distinguish from sibling tools like 'job_status' or 'provider_job_status' that may serve similar purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description only states what it does, not the context or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_active_materialA
Get the filament physically active in the AMS hardware right now (Bambu Lab).
Reads live tray data from the AMS hardware. For the software-tracked
material (what was told to Kiln via ``set_material``), use
``get_material`` instead.
For Bambu Lab printers with an AMS, reads the active tray and
returns its type, colour, remaining percentage, and temperature
range. For non-Bambu printers (or printers without AMS), the
material is reported as ``"unknown"``.
``tray_now == "255"`` normally means external spool. On some
A1/AMS Lite reports it can also mean the active slot was not
reported even though AMS trays are present; in that case Kiln
falls back to selected/target tray metadata or returns the
loaded AMS candidates instead of claiming external spool.
Args:
printer_name: Named printer to query. Omit to use the
default printer.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes reading live tray data, return fields (type, colour, remaining %, temperature range), and fallback logic for ambiguous tray_now. No annotation provided, but description carries full burden and is thorough.
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?
Well-structured with clear paragraphs: purpose, differentiation, return details, edge case. Each sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all necessary aspects: input, output, edge cases, fallback behavior. Adequate for a simple getter with one optional parameter and no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Docstring explains the single parameter 'printer_name' is optional and defaults to default printer. Schema only provides default null, so description adds meaningful guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it 'Get the filament physically active in the AMS hardware right now' for Bambu Lab printers. Differentiates from sibling 'get_material' which tracks software-set material. Specific verb+resource with 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?
Explicitly says to use 'get_material' for software-tracked material, and describes behavior for non-Bambu printers and edge case with tray_now==255. Provides clear when-to-use and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_adaptive_plan_summaryA
Generate a human-readable summary of an adaptive slicing plan.
Args:
plan_data: Plan dict from ``generate_adaptive_slicing_plan``
or ``quick_adaptive_plan``.
Returns a structured summary with key metrics and region breakdown.
| Name | Required | Description | Default |
|---|---|---|---|
| plan_data | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavior. It states the tool generates a summary and returns structured metrics, implying read-only operation. However, it does not explicitly confirm non-destructive behavior or mention any side effects or 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?
Description is concise with two clear sections (Args and Returns). Every sentence adds value, but the Args description is prose rather than structured format; still 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?
Given one parameter, no output schema, and no annotations, the description is reasonably complete. It explains input source and output nature ('structured summary with key metrics and region breakdown'), but lacks details on error handling or return format specifics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It adds value by specifying that 'plan_data' is a dict from 'generate_adaptive_slicing_plan' or 'quick_adaptive_plan', giving context beyond the generic object type in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb ('Generate a human-readable summary') and clearly identifies the resource ('adaptive slicing plan'). It distinguishes from siblings like 'generate_adaptive_slicing_plan' by indicating this is a post-processing step that produces a readable output, not the plan itself.
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?
Description implicitly tells when to use by stating that 'plan_data' comes from two specific functions, but it does not explicitly state when not to use this tool or provide alternatives among the many analysis siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agent_contextA
Retrieve all stored agent memory for context.
Call this at the start of a session to recall what you've learned
about printers, materials, and past print outcomes. Expired entries
are automatically filtered out. Each entry includes a ``version``
field showing how many times it has been updated.
Args:
printer_name: If provided, retrieves printer-specific memory.
scope: Filter by scope (e.g., ``"global"``, ``"fleet"``).
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | ||
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description provides useful behavioral details: expired entries are automatically filtered out, and each entry includes a version field. It does not explicitly state if the operation is read-only or if there are side effects, but as a retrieval tool, the behavior is reasonably clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: two sentences for purpose and context, followed by a list of parameters. Every sentence provides value, and the key usage instruction is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's purpose (retrieve agent memory), the description adequately covers what it does and how to filter. However, without an output schema, it could provide more detail on the structure of returned memory entries. The mention of a 'version' field is helpful but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for missing parameter details. It explains both parameters clearly: printer_name for printer-specific memory, and scope with an example ('global', 'fleet'). This adds significant meaning beyond the schema's type-only definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Retrieve all stored agent memory for context.' It specifies the resource (agent memory) and provides context on when to use it (at the start of a session) and what it contains (printers, materials, past outcomes). This distinguishes it from sibling tools like clean_agent_memory or save_agent_note.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly guides the agent to call this 'at the start of a session' to recall learned information, which is a clear usage scenario. However, it does not mention alternative tools or cases when not to use it, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_autonomy_levelA
Return the current autonomy tier and constraints.
Shows the autonomy level (0 = confirm all, 1 = pre-screened, 2 = full trust) and any Level 1 constraints that are configured. Call this early in a session to understand how much freedom you have.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It explains the return value (autonomy level and constraints) and implies no side effects (read-only). This is adequate disclosure for a simple getter.
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 two short sentences plus a usage suggestion. Every word earns its place, no fluff. It is front-loaded with the main 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?
Given zero parameters and a simple return, the description fully explains what the tool does and when to use it. There is no output schema, but the description sufficiently covers the return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters and schema coverage is 100%, so the description does not need to add parameter details. Per calibration, 0 params baseline is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Return the current autonomy tier and constraints.' It specifies the exact outputs (autonomy level and Level 1 constraints). The sibling set includes 'set_autonomy_level' and 'check_autonomy', so this tool is unambiguously the getter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Call this early in a session to understand how much freedom you have,' providing clear when-to-use guidance. It does not explicitly mention when not to use it or alternatives, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bed_meshA
Get the bed mesh / probe data (OctoPrint and Moonraker only).
Returns the probed bed leveling mesh including:
- ``probed_matrix``: 2D array of Z-offset measurements across the bed
- ``mesh_min`` / ``mesh_max``: bounding coordinates of the probed area
- ``variance``: overall variance of the mesh (lower = flatter bed)
Use this to diagnose first-layer adhesion issues. High variance or
significant dips/peaks indicate a warped bed or loose leveling screws.
Not supported on Bambu Lab printers — Bambu handles bed leveling
internally and does not expose mesh data.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry the burden. It discloses return data structure and interpretation (high variance indicates warped bed). However, it does not mention side effects, permissions, rate limits, or whether the data is cached. The description is adequate but not exhaustive.
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?
Description is a single paragraph with a bullet-like list inside. It is front-loaded with the core purpose, and each sentence adds useful information. Could be slightly more structured (e.g., separate use case and limitation), but it remains concise and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no parameters and no output schema, the description adequately covers what the tool returns and how to interpret the data. It includes a specific use case and a platform limitation. For a simple read tool, it is sufficiently 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?
No parameters exist, so the description cannot add param semantics. However, it adds value by explaining the output fields and their meaning, which is beyond what the empty schema provides. Given zero parameters, a baseline of 4 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?
Description specifies the tool returns bed mesh/probe data, lists returned values (probed_matrix, mesh_min, mesh_max, variance), and distinguishes by stating it only works on OctoPrint and Moonraker, not Bambu Lab printers. This makes the purpose clear and differentiates from siblings.
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?
Explicitly states use case: 'diagnose first-layer adhesion issues' and provides a negative case: 'Not supported on Bambu Lab printers'. However, it does not compare with alternative sibling tools like bed_level_status or calibrate_direct, so it lacks full when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_best_material_substituteA
Get the single best substitute for a filament material (quick shortcut).
Returns one top-ranked alternative. For a full ranked list with trade-off
details and filtering, use ``find_material_substitute`` instead.
Args:
material: The original filament material (e.g. "PLA", "PETG").
| Name | Required | Description | Default |
|---|---|---|---|
| material | Yes |
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 states the output ('one top-ranked alternative') but does not explicitly disclose whether the operation is read-only, requires permissions, or has any side effects. It is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences plus an args line. Every sentence adds useful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description covers the essential aspects: what it does, when to use it, and the parameter. It could mention the return format more explicitly, but it is largely 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 0%, so the description must add meaning. It provides examples ('PLA', 'PETG') and clarifies the parameter's purpose, which adds significant value over the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets the single best substitute for a filament material. It uses a specific verb ('Get') and resource ('best material substitute'), and explicitly distinguishes itself from the sibling tool 'find_material_substitute'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance ('quick shortcut') and when-not-to-use by mentioning the alternative 'find_material_substitute' for a full ranked list with trade-off details and filtering.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cached_designC
Retrieve a cached design by ID.
Args:
design_id: The cached design's identifier.
| Name | Required | Description | Default |
|---|---|---|---|
| design_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose whether the operation is read-only, requires authentication, or has side effects. It only states 'Retrieve,' leaving behavioral traits like idempotency and data sensitivity unaddressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with two short sentences and front-loaded purpose. However, the 'Args' section is redundant with the schema and consumes space that could be used for more useful guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description should mention what the tool returns (e.g., design data or metadata) and possible error conditions. It provides none, leaving an agent unaware of the response format or failure scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It adds that 'design_id' is 'The cached design's identifier,' but does not explain how to obtain it, its format, or any validation rules. The schema only defines type string.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb 'Retrieve' and resource 'cached design' clearly indicate the tool's function. The name differentiates from siblings like 'list_cached_designs' (list vs single) and 'cache_design' (store vs retrieve), though it does not explicitly contrast with 'get_cached_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?
No guidance is provided on when to use this tool versus alternatives such as 'list_cached_designs' or 'cache_design'. The description omits any context about prerequisites or selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cached_modelC
Return details for a specific cached model.
Args:
cache_id: The unique cache ID of the model.
| Name | Required | Description | Default |
|---|---|---|---|
| cache_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must cover behavioral traits. It only says 'return details' without mentioning side effects, permissions, or read-only nature. Critical behavioral info is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, front-loading the purpose. Every word serves a clear function, no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a single parameter, the description is too minimal. It fails to explain what 'details' include, error conditions, or output format, leaving significant gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains 'cache_id: The unique cache ID of the model,' adding meaning beyond the schema title. However, it lacks detail on format or source, so it is minimally adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Return details for a specific cached model,' which specifies the verb and resource. It distinguishes from siblings like 'list_cached_models' and 'delete_cached_model' but could be more explicit about what 'details' entails.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It lacks context about prerequisites or scenarios, leaving the agent without direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_community_insightA
Get aggregated print data for a model geometry.
Two layers, and the tool always returns whatever it can get:
* ``insight`` — what THIS install has printed of this
geometry: success rate, printers, materials, settings,
failure modes. Always available, no account needed.
* ``community`` — the same picture across everyone who has
printed this shape, so you can start from what already
worked. Community insights come with Kiln Pro
(https://kiln3d.com/pricing); without them ``community``
reports that it isn't available and the local layer is
unaffected.
Never fails because of the network or the plan: no
connection, no account, or a plan without community
insights all still return the local answer.
Args:
geometric_signature: Geometric signature to look up
(``fingerprint_model``'s ``geometric_signature``).
geometric_signature_v2: The same mesh's
``geometric_signature_v2``, when known. Supplying it
narrows the answer to THIS design: without it, prints
of a different design that happens to share the older
signature can be counted into the result.
| Name | Required | Description | Default |
|---|---|---|---|
| geometric_signature | Yes | ||
| geometric_signature_v2 | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full behavioral disclosure, and it does so exceptionally. It states the tool never fails due to network/plan issues, always returns the local layer, and reports community unavailability gracefully. It also discloses account and plan dependencies, which is exactly the kind of behavior an agent needs to know.
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 well-structured with a front-loaded summary, bullet points, and an Args section. Most sentences earn their place, though the 'always available, no account needed' point is reiterated in the failure-behavior paragraph. Minor redundancy, but overall clear and navigable.
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 having no output schema or annotations, the description is remarkably complete. It covers success conditions, plan gating, network-independent behavior, local vs. community scope, and parameter semantics. An agent can confidently determine when and how to invoke it, and what to expect in return.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description is the sole source of parameter meaning. It explains that geometric_signature comes from fingerprint_model and that geometric_signature_v2 disambiguates designs sharing the older signature. This adds substantial value beyond the bare schema and directly informs correct invocation.
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 opens with a specific action and resource: 'Get aggregated print data for a model geometry.' It then clearly breaks down the two return layers (insight and community) and what each contains, making it easy to differentiate from siblings like get_model_print_history or community_stats.
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 clear context on when the tool is appropriate: to retrieve local print insight and, if available, community-wide data. It explains the Kiln Pro requirement for community data and clarifies that the v2 parameter narrows results to the exact design. It does not name sibling alternatives explicitly, but the usage context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_compatible_materialsB
Find all materials in a given family (e.g. PLA, PETG, resin).
Returns every catalog entry sharing the same material family,
useful for finding compatible substitutes.
Args:
material_family: Family name (e.g. ``"pla"``, ``"petg"``, ``"resin"``).
| Name | Required | Description | Default |
|---|---|---|---|
| material_family | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states that the tool returns 'every catalog entry sharing the same material family', which implies a read operation, but does not disclose authentication needs, rate limits, or any side effects. For a safe read tool, more clarity on behavior is expected.
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 three sentences: the first states the purpose, the second explains the return value, and the third clarifies the parameter with examples. No wasted words, and it front-loads the core action.
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 lookup tool with one parameter and no output schema, the description gives the essential information. However, it lacks any mention of pagination, sorting, or format of results. Given no annotations, slightly more detail on the output structure would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, but the description adds concrete examples (e.g., 'pla', 'petg', 'resin') and explains that it is a family name. This provides meaningful semantic context beyond the raw schema, compensating for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Find' and the resource 'materials in a given family', with examples of families. It implies a filtering function but does not explicitly contrast with sibling tools like 'list_materials' or 'find_material_substitute', so it loses a point for lack of sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'useful for finding compatible substitutes' but provides no explicit guidance on when to use this tool versus alternatives (e.g., find_material_substitute, list_material_catalog). No when-not-to-use or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_design_sourceA
Retrieve the parametric source code for a cached design.
Returns the OpenSCAD source, generation prompt, and provider
so the design can be re-generated, tweaked, or inspected.
Args:
design_id: ID of the cached design.
| Name | Required | Description | Default |
|---|---|---|---|
| design_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must fully disclose behavior. It states 'retrieve' implying a read-only operation, but does not explicitly confirm non-destructiveness, required permissions, or error handling (e.g., if design not found). Lacks detail on side effects or constraints.
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?
Description is short and front-loaded: two sentences plus an Args block. The Args section largely duplicates the schema, but the main part is efficient. Could be slightly more concise by removing redundant Args, but overall well-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?
Given no output schema, the description lists return values (source, prompt, provider), adding useful context. For a simple retrieval with one parameter, the description covers the essentials. Lacks mention of any potential limitations or edge cases, but sufficient for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has one parameter (design_id) with 0% description coverage. The description adds 'ID of the cached design', providing context that it's a cached design ID, which helps disambiguate. However, no format or validation details are given, leaving room for improvement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool retrieves parametric source code for a cached design, using a specific verb and resource. Distinguishes itself from siblings like 'get_cached_design' or 'get_design_version' by focusing on source code retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for regeneration, tweaking, or inspection via return values, but does not explicitly state when to use this over alternatives like 'get_cached_design' or 'cache_design_with_source'. No exclusion criteria or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_design_template_infoB
Get one template's public discovery and safety-floor fields.
Args:
template: Template identifier.
| Name | Required | Description | Default |
|---|---|---|---|
| template | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It does not disclose side effects, permissions, or whether the operation is read-only. It only states the action without behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with a single clarifying sentence and an args list. No unnecessary words, and key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one parameter and no output schema, the description is adequate but incomplete. It fails to describe the return value or the meaning of the fields mentioned, which an AI agent would need to correctly use the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds minimal meaning: it labels the parameter as 'template identifier'. With 0% schema coverage, this provides some context, but does not specify format, valid values, or how to obtain it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets one template's public discovery and safety-floor fields. It specifies the resource (template) and the action (get). However, it doesn't explain what 'public discovery' and 'safety-floor' fields are, which could be ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like list_design_templates or search_design_templates. The description does not mention prerequisites or context for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_design_versionA
Retrieve a single design version by its ID.
Use this to inspect the full source code, parameters, and notes
for a specific version when you already know the version reference.
Args:
version_id: ``design_id:N`` reference (e.g. ``my-coaster:3``)
or a plain integer version number if the design_id is
unambiguous.
Returns:
The version record including source_scad, prompt,
parameters, notes, and parent_version.
Returns an error if the version does not exist.
| Name | Required | Description | Default |
|---|---|---|---|
| version_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the behavior burden. It discloses the tool is read-only ('retrieve'), lists return fields (source_scad, prompt, parameters, notes, parent_version), and notes error behavior if version doesn't exist. Missing details like no side effects or performance impact, but those are 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?
The description is concise and well-structured: purpose first, then usage guidance, parameter details, and return info. It avoids redundancy, though the return section could be slightly shorter. Overall, every sentence adds value.
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 retrieval tool with one parameter and no output schema, the description covers: purpose, when to use, parameter format, return content, and error behavior. It is fully adequate for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the version_id format with examples (e.g., 'my-coaster:3') and disambiguates between a plain integer and prefixed reference, adding significant value beyond the schema's simple string type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Retrieve a single design version by its ID,' using a specific verb and resource. It distinguishes from siblings like list_design_versions, save_design_version, and rollback_design_version by focusing on a single version retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: 'Use this to inspect the full source code, parameters, and notes for a specific version when you already know the version reference.' This tells the agent when to use it and implies when not (e.g., not for listing or modifying). It also explains the version_id format.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_feedback_loop_statusB
Get the feedback loop history for a generated model.
Returns iteration data, whether the design was resolved, and
which iteration produced the best result.
Args:
model_id: Model/job ID from a generation job.
| Name | Required | Description | Default |
|---|---|---|---|
| model_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Mentions returned data but does not disclose side effects, idempotency, or constraints (e.g., rate limits, auth needs). Adequate but lacks depth.
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?
Concise with two sentences plus an Args line, front-loading the main purpose. Minor improvement could be formatting the Args as a list, but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool with one parameter and no output schema. Description covers primary function but lacks details on return format, pagination, and fails to disambiguate from a very similar sibling tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description explicitly explains the parameter 'model_id' as 'Model/job ID from a generation job', adding valuable context beyond the schema's type and title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it gets feedback loop history for a generated model, specifying what data is returned. However, it does not distinguish from the sibling tool 'generation_feedback_loop_status' which appears to serve a similar purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'generation_feedback_loop_status' or 'analyze_generation_feedback'. Does not mention prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_filament_statusA
Get the filament runout sensor status (OctoPrint and Moonraker only).
Returns sensor information including:
- ``detected``: whether filament is currently detected by the sensor
- ``sensor_enabled``: whether the runout sensor is active
Use this to verify filament is loaded before starting a print on
non-Bambu printers.
For Bambu Lab printers, use ``ams_status()`` instead — it provides
per-tray filament presence, type, color, and remaining percentage.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes returned fields (detected, sensor_enabled) and implies read-only behavior. No annotations provided, so description covers main behavioral aspects, though doesn't discuss potential side effects or prerequisites in detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with clear front-loading: scope, return fields, usage guidance. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given simple tool with no output schema, description adequately explains return values and usage context. Sibling tools are referenced appropriately.
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?
No parameters in schema; description adds no parameter info, but baseline for 0-param tool is 4, and schema coverage is 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it gets filament runout sensor status specifically for OctoPrint and Moonraker, distinguishes from sibling ams_status for Bambu printers.
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?
Explicitly states when to use (verify filament before starting print on non-Bambu printers) and when not (use ams_status for Bambu Lab printers).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fleet_material_summaryA
Aggregate material inventory across all printers and spools.
Returns a per-material-type summary of total stock in grams, spool counts, which printers have it loaded, and available colours.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It describes the return type as a summary and implies a read-only operation, but does not explicitly state side effects (none expected), permissions required, or behavior in edge cases (e.g., empty fleet). This is adequate but could be more transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the action verb 'Aggregate', and every word adds value. No unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description adequately explains what it returns. However, it could be slightly more complete by mentioning whether data is real-time or cached, or what happens when no materials are present.
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?
No parameters exist, so baseline is 4. The description adds meaning by detailing the structure of the output (per-material summary with stock, spool counts, printers, colours), which exceeds the 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?
The description clearly states the tool aggregates material inventory across all printers and spools, and specifies the return fields (total stock in grams, spool counts, printers loaded, available colours). This distinguishes it from sibling tools like fleet_analytics (broader) or get_material (single material).
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. While the purpose implies a fleet-level overview, it does not mention when not to use it (e.g., for specific printer material status) or provide any comparative context with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fulfillment_quote_cachedA
Get a cached fulfillment provider quote (or fetch fresh if expired).
Uses TTL-based caching to avoid redundant provider API calls.
Args:
file_path: Path to the design file.
provider: Fulfillment provider name.
material: Material specification.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | ||
| provider | No | ||
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full burden. It discloses caching with TTL and fallback to fresh fetch, which is key behavioral info. However, it does not discuss error handling, cache miss behavior, or any side effects. The description provides moderate transparency but omits details about what happens when the cache misses or on failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences plus a brief bullet list. It front-loads the core purpose and caching mechanism. The bullet list, while not adding much semantic depth, is acceptable given the lack of schema descriptions. No unnecessary words. Could be slightly improved by integrating Args into prose without repeating parameter names trivially.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and 0% schema coverage, the description should explain what the tool returns (e.g., a quote object with pricing, availability). It explains the caching behavior but omits the return structure and prerequisites (e.g., file_path existence, provider validity). For a simple caching tool, it is adequate but not fully complete for an agent to understand the full context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. The Args section provides minimal one-liners ('Path to the design file', 'Fulfillment provider name', 'Material specification') that add little beyond the parameter names. No formats, constraints, or allowed values are given. The descriptions are too generic to significantly aid an agent in constructing proper arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get a cached fulfillment provider quote (or fetch fresh if expired)', which distinguishes it from a fresh quote tool. The verb 'get' with the specific resource 'cached fulfillment provider quote' and the caching behavior make the purpose precise and distinct from siblings like 'fulfillment_quote'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when avoiding redundant API calls via 'Uses TTL-based caching to avoid redundant provider API calls', but it does not explicitly state when not to use it or mention alternatives like 'fulfillment_quote' for fresh quotes. The guidance is implied but lacks clear exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_interception_historyA
Get recent interception results for a session.
Args:
session_id: Target session ID.
limit: Maximum results to return (default 50, max 500).
Returns interception results from newest to oldest, including
actions taken, triggered rules, and reasons.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions results order (newest to oldest) and included fields (actions, rules, reasons), but does not specify what 'recent' means, whether the operation is read-only, or any prerequisites or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, front-loads the main purpose, and uses a clear structure with separate arg descriptions. Every sentence is informative 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?
Given the tool has an output schema (handling return values), the description covers input semantics, ordering, and included fields. It lacks mention of error cases or session existence requirements, but is otherwise sufficient for a listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains both parameters: 'session_id' as target session ID, and 'limit' with default and max values. This adds significant value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get recent interception results for a session,' using a specific verb and identifying the resource. It distinguishes from siblings like 'get_interception_status' and 'list_interception_sessions.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing recent interception results for a session, but does not explicitly state when not to use it or mention alternative tools. Usage is clear but lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_interception_statusB
Get status and statistics for an interception session.
Args:
session_id: Target session ID.
Returns session metadata, command counts, and current telemetry.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It only states it returns info (metadata, command counts, telemetry) but doesn't disclose behavioral traits like read-only nature, required session state (active?), or potential errors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: three sentences clearly stating purpose, parameter, and return. Every sentence adds value; no verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and presence of an output schema, the description covers essence: param and return types. Could mention that session must be active, but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description compensates by documenting session_id as 'Target session ID.' This adds meaning but lacks format or constraint details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets status and statistics for an interception session, with the required session_id parameter and return types (metadata, command counts, telemetry). This distinguishes it from siblings like list_interception_sessions or get_interception_history, though not 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?
No guidance on when to use this tool versus alternatives (e.g., list_interception_sessions, get_interception_history). No prerequisites or context for use mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_joint_recommendationA
Get recommended clearance settings for a joint type and material pairing.
Returns clearance recommendations based on the joint type
and the materials of the two mating parts. When
``printer_id`` is supplied AND kiln-pro is installed, the
response narrows the clearance range by the user's
calibration tier (HIGH halves it, MEDIUM shaves ~10%, LOW
and UNKNOWN leave it unchanged) and attaches a
``calibration_used`` block documenting the source.
Args:
joint_type: Type of joint (e.g. ``"clearance_fit"``,
``"press_fit"``, ``"snap_fit"``).
material_a: Material of the first part (default ``"PLA"``).
material_b: Material of the second part (default ``"PLA"``).
printer_id: Optional printer identifier (e.g.
``"bambu_a1"``). For a joint whose parts MOVE, omitting
it resolves the user's active printer rather than
answering generically — pass it only to ask about a
machine that is not the one they are set up on. For
every other joint type, omitting it keeps the historic
flat-range behaviour.
mating: Optional shape hint for joints whose parts MOVE
against each other (``"clearance_fit"``, ``"loose"``):
``"pin_in_bore"`` for a shaft or pin turning in a hole,
``"slot"`` for a tongue sliding in a groove,
``"planar_face"`` for two flat faces sliding, or
``"gear_flank"`` for meshing teeth. Omit it and the
round-joint case is assumed, which is the erring-loose
reading — a bore is closed on from both sides and needs
about twice the allowance a flat gap does, so assuming
it can only give a joint too much room, never too
little. Ignored for joints that do not move.
| Name | Required | Description | Default |
|---|---|---|---|
| mating | No | ||
| joint_type | Yes | ||
| material_a | No | PLA | |
| material_b | No | PLA | |
| printer_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses how the tool behaves with different inputs: the effect of calibration tier on the clearance range and the inclusion of a calibration_used block. It also explains the conservative assumption for mating hints, making the behavior predictable.
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 detailed yet each sentence adds value, providing necessary context and examples. It is well-structured with separate explanations for each parameter, avoiding redundancy while being informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides sufficient context for the tool's operation, including the effect of external factors like calibration tier and the output structure (calibration_used block). It also covers all parameters and the return value, making it self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Each parameter is thoroughly explained with examples, defaults, and specific effects. The description covers the meaning of joint_type, material_a/b, printer_id, and mating, including when they are optional and what values to use.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: providing recommended clearance settings for joint types and material pairings. It specifies the key inputs and the optional narrowing based on printer calibration, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool, including conditions for providing printer_id and mating hints, and details the behavior for different cases. It also clarifies when parameters should be omitted, offering practical guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_materialA
Get material loaded in a printer (from Kiln's software tracker).
Returns what the user/agent told Kiln is loaded via ``set_material``.
For live AMS hardware reading (Bambu Lab), use ``get_active_material``.
Args:
printer_name: Target printer. Omit for the default printer.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and discloses that the tool returns the material set via set_material, not a live sensor reading. It transparently indicates the source and behavior, though it does not cover potential error conditions or rate 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?
The description is concise, front-loaded with the purpose, and efficiently structured. Every sentence adds value: the purpose, the return value note, the alternative tool reference, and the parameter documentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool with no output schema and no annotations, the description adequately covers purpose, parameter usage, and suggests an alternative. It is mostly complete, but lacks detail on the return structure or format, which could be inferred but is not explicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaningful semantics for the printer_name parameter, specifying it targets a printer and defaults if omitted. This fully covers the single parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets material loaded in a printer from Kiln's software tracker, distinguishing it from get_active_material for live AMS hardware reading. The verb+resource is specific, and the sibling differentiation is 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 description provides clear guidance on when to use this tool versus get_active_material for live hardware reading. It also explains the printer_name parameter usage, though it lacks explicit exclusions for cases where the tool should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_material_consumption_historyA
Get material consumption history from completed prints.
Aggregates filament usage per material type over the given
window, converting filament length to grams using standard
material densities.
Args:
days: Number of days to look back (default 30).
| Name | Required | Description | Default |
|---|---|---|---|
| days | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains the aggregation and conversion behavior but does not disclose the output format or handle edge cases (e.g., no completed prints). With no annotations, the description should provide more detail on return structure and limitations.
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?
Extremely concise with front-loaded purpose. Two sentences plus a parameter line efficiently convey the tool's functionality without any extraneous 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 simple tool with one parameter and no output schema, the description is mostly complete. It covers the main operation, aggregation logic, and parameter semantics. However, describing the return format would enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'days' is well-described as a lookback window with a default of 30. This adds meaning beyond the schema's type and default, clarifying its purpose and usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves material consumption history from completed prints, aggregates per material type, and converts filament length to grams. This is specific and distinct from siblings like 'forecast_material_consumption' or 'get_material'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'forecast_material_consumption'. While the purpose is clear, the description lacks explicit context for selection, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_material_design_profileA
Compatibility lookup for a material's public design floor.
Returns the same public safety and process fields as
``get_material_properties``. For deeper engineering guidance,
ask one specific question with ``answer_material_question``.
Args:
material: Material ID (for example ``"pla"`` or ``"petg"``).
| Name | Required | Description | Default |
|---|---|---|---|
| material | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations provided, so the description must carry the burden of transparency. It describes the tool as a read-only lookup returning public fields, but it does not disclose any potential side effects, authentication requirements, or performance characteristics. For a simple lookup, this is adequate but leaves room for improvement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: two sentences plus a parameter documentation line. It is front-loaded with the primary purpose and efficiently uses each sentence to convey key information without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (single parameter, no output schema, no nested objects), the description provides adequate context: what it does, what it returns, and a pointer to a sibling tool for advanced needs. It could mention potential error conditions, but overall it is sufficiently complete for an agent to decide to invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has only a single required parameter 'material' without a description, but the tool description provides examples ('pla', 'petg') to clarify the expected format. This adds value beyond the schema, compensating for the 0% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a 'compatibility lookup for a material's public design floor', uses a specific verb and resource, and distinguishes itself from siblings by mentioning that it returns the same fields as `get_material_properties` and directing deeper queries to `answer_material_question`.
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 indicates when to use this tool (for basic compatibility lookup) and explicitly suggests `answer_material_question` for deeper engineering guidance. It does not explicitly state when not to use it, but the provided guidance is sufficient for most agents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_material_infoA
Get detailed information for a specific material by ID.
Returns the full catalog entry including vendor, type, family,
variants, price range, weight options, and purchase sources.
Args:
material_id: Catalog ID (e.g. ``"hatchbox_pla"``, ``"esun_petg"``).
| Name | Required | Description | Default |
|---|---|---|---|
| material_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist. The description does not explicitly state read-only nature or other behavioral traits like rate limits. For a simple getter, the return description is adequate but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: one line for purpose, one line for return summary, and a clean Args section. Front-loaded with purpose, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description provides a good overview. It could mention error handling or response format, but is mostly complete for a getter.
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?
With 0% schema description coverage, the description compensates by clearly explaining the parameter material_id with examples ('hatchbox_pla', 'esun_petg'), adding significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get detailed information for a specific material by ID' with a specific verb and resource. It lists return fields, distinguishing it from sibling list tools like list_materials.
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 but not explicit. No mention of when to use this tool versus alternatives such as get_material_properties or search_material_catalog. No exclusion criteria provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_material_propertiesA
Get a material's public safety and printing-property profile.
Returns the public thermal, chemical-safety, and process-design floor.
Deeper engineering questions are answered one at a time by kiln-pro
(https://kiln3d.com).
Args:
material_id: Material key (e.g. ``"petg"``, ``"tpu"``, ``"cf_pla"``).
Case-insensitive.
| Name | Required | Description | Default |
|---|---|---|---|
| material_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description implies this is a read operation and mentions the data is public. It lists the categories of returned data. Since no annotations are provided, the description bears the burden of transparency and does so adequately, though it could mention any access restrictions or side effects (none expected).
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 two short paragraphs, front-loaded with the main purpose. The second paragraph adds a helpful pointer to an alternative tool. Every sentence is meaningful and there is no waste.
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?
Without an output schema, the description partially explains return values (thermal, chemical-safety, process-design floor). It is sufficient for a simple tool with one parameter, though a more structured description of the output format would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by explaining the material_id parameter: it's a material key (e.g., 'petg', 'tpu', 'cf_pla'), case-insensitive. This adds significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'material's public safety and printing-property profile'. It specifies what is returned (thermal, chemical-safety, process-design floor) and differentiates from deeper engineering questions handled by kiln-pro.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some guidance by stating the tool returns public safety and printing properties and directs deeper questions to kiln-pro. However, it does not explicitly say when to use this tool versus sibling tools like compare_material_properties or get_material_info, nor does it state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_material_purchase_urlsA
Get purchase URLs for a material.
Returns Amazon search links and manufacturer URLs. If a colour
is specified, it is substituted into the Amazon search template.
Args:
material_id: Catalog ID (e.g. ``"hatchbox_pla"``).
color: Optional colour for URL personalisation.
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | ||
| material_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the return types (Amazon search links and manufacturer URLs) and the effect of the color parameter. However, it does not mention any potential failure modes, side effects, or authentication 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?
The description is concise, conveying purpose and parameter details in a few sentences. It is front-loaded with the main action, and the args are clearly listed. No redundant information, though it could be slightly more 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?
Given the tool's low complexity (2 parameters, no output schema), the description adequately covers the input parameters and output type (URLs). It explains what the function returns and how parameters affect behavior. It is sufficient for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It includes an explicit 'Args' section explaining each parameter: material_id as a catalog ID with an example, and color as optional for URL personalization. This adds meaningful context beyond the schema's type information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool retrieves purchase URLs for a material, specifically Amazon search links and manufacturer URLs, and explains color substitution. This effectively distinguishes it from sibling tools like 'get_material' or 'get_material_info' which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, when not to use it, or how it compares to other material-related tools. The usage context is implied but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_material_recommendationA
Get printer-specific slicer settings for a material you have already chosen.
Use AFTER selecting a material — returns hotend/bed temps, fan speed, and
tips tuned to a specific printer model. For help choosing which material
to use, see ``recommend_material`` or ``recommend_design_material``.
Args:
printer_id: Printer model identifier.
material: Material name (e.g. ``"PLA"``, ``"PETG"``, ``"ABS"``,
``"TPU"``).
| Name | Required | Description | Default |
|---|---|---|---|
| material | Yes | ||
| printer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses output types (hotend/bed temps, fan speed, tips) but does not mention side effects, permissions, or safety. Acceptable for a simple getter, but could be more explicit about read-only 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?
Description is two clear paragraphs: first paragraph states purpose and usage, second lists arguments. No wasted words, front-loaded with essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 required params, no output schema, no annotations), the description adequately covers what the tool does, when to use it, what it returns, and argument examples. Complete for an agent to select and invoke.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. The Args section provides example values for material (PLA, PETG, etc.) and context from the main description (printer-specific, chosen material). Adds meaning beyond bare parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves printer-specific slicer settings for an already-chosen material, using a specific verb and resource. It distinctly differentiates from sibling tools like recommend_material by instructing use after material selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use AFTER selecting a material' and directs to recommend_material or recommend_design_material for choosing materials, providing clear when-to-use and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_material_slicing_profileA
Get material-specific slicing constraints for adaptive slicing.
Returns layer height limits, bridge/overhang parameters, fan speeds,
and other material-tuned values used by the adaptive slicer.
Args:
material: Material name — PLA, PETG, ABS, TPU, ASA, Nylon, PC,
PVA, or HIPS.
nozzle_diameter_mm: Nozzle diameter in mm (affects layer height
limits). Default 0.4mm.
| Name | Required | Description | Default |
|---|---|---|---|
| material | Yes | ||
| nozzle_diameter_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral aspects. It states it returns data, implying a read-only operation, but does not mention safety, authentication, rate limits, or any side effects. The description is adequate but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear purpose statement upfront, followed by a well-structured parameter list. Every sentence adds value, and there is no redundant or vague language.
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 retrieval tool with 2 parameters and no output schema, the description covers the key aspects: what it does, input parameters, and returned values. It could specify the exact output format (e.g., JSON keys) for completeness, but the provided information is sufficient for basic use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description adds essential meaning: it lists possible values for 'material' (PLA, PETG, etc.) and explains 'nozzle_diameter_mm' affects layer height limits with a default value. This goes beyond the schema's bare structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves 'material-specific slicing constraints for adaptive slicing' and lists the returned parameters (layer height limits, bridge/overhang parameters, fan speeds). This distinguishes it from siblings like 'get_material_properties' or 'get_slicer_profile'.
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 explains the tool's purpose but does not provide guidance on when to use it versus other similar tools, such as 'get_material_properties' or 'get_slicer_profile'. No exclusions or alternatives are mentioned, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_model_print_historyA
Get all print attempts for a model.
Returns the complete history of print outcomes, settings, and
quality grades. The success-rate metrics cover every material
by default; pass ``material`` to scope them to one filament
("how does this do in PETG?").
PASS ``model_path`` WHENEVER YOU HAVE THE FILE. History is a
question about the SHAPE, and ``model_path`` lets Kiln identify
it directly. A file hash alone identifies BYTES: re-export an
unchanged part from CAD and the hash changes, so a hash-only
lookup reports a part with real history as never printed.
``identified_by`` in the response says which it used —
``"shape"`` is the precise answer, ``"file"`` means the history
may be incomplete.
Args:
file_hash: SHA-256 hash of the model file, when known.
material: Optional material filter for the success-rate
metrics. Empty = all materials.
model_path: Path to the model file — the best input. Kiln
fingerprints it and identifies the design itself.
geometric_signature: v1 shape signature, if you already have
one from ``fingerprint_model``.
geometric_signature_v2: v2 shape signature, likewise.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | ||
| file_hash | No | ||
| model_path | No | ||
| geometric_signature | No | ||
| geometric_signature_v2 | No |
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 discloses important behavioral detail: success-rate metrics cover all materials by default, material scopes them, hash-based lookup may return incomplete history, and identified_by indicates whether the result is shape-precise or file-based. It is a read-only 'get' operation, but side effects and failure modes are not explicitly addressed.
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 longer than average, but it is carefully structured with a clear opening, a prominent best-practice warning, and an organized Args section. Every sentence adds value, though it could be tightened slightly.
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 lack of an output schema and annotations, the description is comprehensive: it explains what data is returned, how identifier methods affect results, what identified_by means, and how the material filter behaves. This is sufficient for an agent to invoke the tool correctly with any of the five optional parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description fully compensates by explaining every parameter: file_hash, material, model_path, geometric_signature, and geometric_signature_v2. It adds meaningful context such as 'Empty = all materials', 'the best input', and 'if you already have one from fingerprint_model'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get all print attempts for a model' and describes the returned history, settings, and quality grades. It distinguishes model_path-based shape identification from hash-based byte identification, but it never explicitly contrasts this with the sibling print_history tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides strong, explicit guidance on when to use model_path versus file_hash, warns that hash-only lookups may miss history, and explains the identified_by response field. However, it doesn't mention when to choose this tool over sibling alternatives like print_history.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_post_processing_guideA
Get bounded public post-processing help for one goal.
Pass ``surface_finish``, ``paint``, ``strengthen``, or the name of
one listed technique. Omitting ``goal`` returns a compact
compatibility overview rather than the complete guide.
Args:
material: Material ID (e.g. "pla", "abs", "petg", "nylon").
goal: Optional finishing goal or technique name.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | No | ||
| material | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It explains that omitting the goal returns a compact overview, while providing it returns a complete guide. It also lists example values for goal. No contradictions; behavior is well described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. It uses a clear header, describes the two modes, and then breaks down arguments with examples. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no output schema), the description covers the essential behavior: what happens with and without the optional parameter. It could mention that this is public help (not authenticated), but overall it's sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description compensates by providing examples for material and possible values for goal. It clarifies that goal is optional and lists specific values like 'surface_finish', 'paint', 'strengthen'. This adds meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves post-processing help for a given material and optional goal. The verb 'Get' and resource 'post-processing help' are specific. However, it does not explicitly distinguish from sibling tools like troubleshoot_print_issue, but given the context of post-processing vs troubleshooting, it's clear enough.
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 explains the two modes (with or without goal) and what each returns, which helps in deciding how to use it. However, it does not compare to alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_print_diagnosticA
Get a comprehensive print diagnostic combining multiple knowledge sources.
This is the PRIMARY tool for debugging print problems. Combines
troubleshooting data (symptom matching, root causes, fixes),
printer compatibility (upgrade requirements, known issues),
storage requirements (drying temps, humidity limits), and
post-processing tips (strengthening options) into a single
actionable response.
Call this FIRST when a user reports any print quality problem.
It cross-references all knowledge sources so the agent doesn't
need to make multiple tool calls.
Examples:
material="petg", symptom="stringing", printer="ender3"
material="abs", symptom="warping", printer="bambu_a1"
material="nylon", symptom="brittle"
Args:
material: Material being printed (e.g. "pla", "petg").
symptom: What's going wrong (e.g. "stringing", "warping",
"poor adhesion", "clog", "brittle").
printer: Optional printer model for compatibility context
(e.g. "ender3", "bambu_x1c").
| Name | Required | Description | Default |
|---|---|---|---|
| printer | No | ||
| symptom | Yes | ||
| material | Yes |
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 implies a read-only diagnostic operation by describing combination of data sources, but does not explicitly state it is non-destructive or discuss permissions or side effects. The context added (cross-referencing, actionable response) is helpful but incomplete for full transparency.
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 well-structured with a summary, primary usage, list of combined data, and examples. It is informative but could be slightly more concise (e.g., the list of data sources could be shortened). Still, every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (combining multiple diagnostic sources) and lack of output schema, the description adequately explains what the tool returns: a single actionable response with troubleshooting, compatibility, storage, and post-processing info. However, it does not detail the response structure, which would be helpful for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description compensates well by explaining each parameter: material (e.g. 'pla'), symptom (e.g. 'stringing'), printer (optional, for compatibility context). Examples illustrate valid values, adding significant meaning beyond the schema's bare type info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get a comprehensive print diagnostic' and emphasizes it is the primary tool for debugging print problems, combining multiple knowledge sources. It distinguishes itself from siblings like troubleshoot_print_issue by claiming a broader scope and cross-referencing.
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?
Explicitly instructs 'Call this FIRST when a user reports any print quality problem.' and explains it eliminates the need for multiple tool calls. Provides concrete examples showing typical usage patterns.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_printer_insightsA
Query cross-printer learning insights for a specific printer.
Returns success rates, failure mode breakdown, and per-material
statistics based on previously recorded outcomes — plus any
UNRESOLVED prints: jobs that started (or ended) while no Kiln
process was watching, whose outcome nobody has settled yet.
**Agent contract for ``unresolved_prints``**: these entries are
waiting on the one witness the machine can't replace — the
user, who has the part. When the moment is natural (not
mid-task), ask casually ("Your ashtray finished while Kiln
wasn't watching — did it come out OK?") and settle the answer
via ``record_print_outcome(job_id=..., outcome=...,
determined_by="user_reported")``. Never guess an outcome on
the user's behalf; an unresolved print stays out of all
success-rate math until someone who knows answers.
**Note**: Insights are advisory. They do NOT override safety limits
or preflight checks.
Args:
printer_name: The printer to get insights for.
limit: Maximum recent outcomes to include (default 20).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| printer_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden. It explains the behavior regarding unresolved prints: they are jobs that ended while no Kiln process was watching and require user input. It warns against guessing outcomes and states that insights are advisory, not overriding safety limits. This adds significant behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: a clear opening sentence, bullet points for the agent contract, and a note section. It is front-loaded with the core purpose and avoids unnecessary repetition. Every sentence adds value, making it efficient for an AI agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool returning multiple data types, the description covers success rates, failure modes, per-material stats, and unresolved prints. It explains the unresolved print concept in detail. Without an output schema, it does not specify the return format, but the listed categories provide sufficient operational context. The limit parameter is addressed. Slight gap: no mention of pagination or how 'limit' interacts with statistics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description compensates by naming both parameters. 'printer_name' is described as 'The printer to get insights for' and 'limit' as 'Maximum recent outcomes to include (default 20).' While this clarifies purpose, it adds minimal detail beyond the parameter names. The description could elaborate on how 'limit' affects the returned data.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Query' and the resource 'cross-printer learning insights for a specific printer.' It details the return types: success rates, failure mode breakdown, per-material statistics, and unresolved prints. This distinguishes it from sibling tools like 'troubleshoot_print_issue' which focus on troubleshooting specific issues.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an 'Agent contract' for handling unresolved prints and notes that insights are advisory. However, it does not explicitly state when to use this tool versus alternatives like 'get_print_diagnostic' or 'monitor_print.' Usage is implied but lacks exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recovery_gcode_stepsC
Get the G-code/commands for executing a recovery.
Args:
session_id: The session_id to get steps for.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as read-only versus destructive nature, authentication requirements, or side effects. The tool is potentially mutative (recovery steps), yet no safety or permission context is given.
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 short and front-loaded with the main purpose. However, the Args section is redundant with the schema, making it slightly less concise but still efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, and the description does not explain what the returned G-code steps look like or any error cases. Given the simple parameter set, more context about the response format would aid the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description adds basic meaning to the 'session_id' parameter: 'The session_id to get steps for.' This is minimal and does not specify format, allowed values, or constraints beyond the required flag.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get the G-code/commands for executing a recovery,' specifying the verb and resource. It distinguishes itself from sibling tools like 'get_recovery_plan' and 'get_recovery_session_status' by focusing on the G-code steps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., 'get_recovery_plan', 'plan_print_recovery'). It lacks context or exclusions, offering only a basic statement of function.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recovery_planC
Get a recovery plan for a specific failure type.
Args:
failure_type: One of: spaghetti, layer_shift, adhesion_loss,
nozzle_clog, stringing, thermal_runaway, power_loss,
filament_runout, warping, unknown.
printer_name: Name of the affected printer.
has_power_loss_recovery: Whether the printer supports
power-loss recovery.
has_filament_sensor: Whether the printer has a filament
runout sensor.
| Name | Required | Description | Default |
|---|---|---|---|
| failure_type | Yes | ||
| printer_name | No | ||
| has_filament_sensor | No | ||
| has_power_loss_recovery | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only states the action and lists parameters, with no mention of side effects, permissions, rate limits, or whether the plan is generated on call. This is insufficient for a tool that likely returns a substantial plan object.
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 brief and well-structured with a clear one-line summary followed by a formal Args section. Every sentence serves a purpose, though the parameter descriptions are minimal. It could be slightly more informative without increasing length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 4 parameters, no output schema, and no annotations. The description does not explain the return value (what the recovery plan contains) or any prerequisites. For a tool that provides a plan for recovery, crucial context is missing, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds value by enumerating valid values for 'failure_type' (nine options), which is not present in the schema (no enum defined). However, 'printer_name', 'has_power_loss_recovery', and 'has_filament_sensor' receive no additional explanation beyond the parameter names and types already in the schema. Since schema coverage is 0%, the description partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to get a recovery plan for a specific failure type. It identifies the resource (recovery plan) and the action (get). This distinguishes it from sibling tools like 'plan_failure_recovery' which suggest creation or planning. However, it doesn't specify if the plan is retrieved from storage or generated on the fly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. Among many recovery-related siblings (e.g., 'plan_failure_recovery', 'start_print_recovery'), the description does not provide criteria for selecting this tool. The missing context makes it hard for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recovery_session_statusC
Get the current status of a recovery session.
Args:
session_id: The session_id to query.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits. It only states it gets status, implying a read operation, but omits any side effects, auth requirements, or output details.
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 short and includes an 'Args' section. It is mostly efficient, though the docstring format adds a line for 'Args' which could be more compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and many related recovery tools, the description lacks context on possible status values, how to interpret them, and how this tool fits into the recovery workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. The parameter description 'The session_id to query' is minimal and does not explain what a session_id is, where to obtain it, or its expected format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('recovery session status'). It is specific enough to distinguish from unrelated tools, but does not explicitly differentiate from sibling recovery tools like 'get_recovery_plan' or 'get_recovery_statistics'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. For example, it doesn't mention that the session must be started first or that this is for monitoring progress.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recovery_statisticsA
Get historical recovery success rates and failure distribution.
Returns aggregate statistics about all recovery attempts including success rates per strategy, failure type distribution, and active session counts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It states it returns aggregate statistics with no side effects, implying a read-only operation. However, it does not explicitly confirm that it is safe, idempotent, or requires no special permissions. Adding a note about being non-destructive would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: the first defines the core purpose, the second adds relevant detail about what is returned. No unnecessary wording or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and no output schema, the description adequately explains what the tool returns (success rates, failure distribution, active session counts). It is slightly vague on the time range ('historical') but sufficient for a statistics endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the input schema covers 100%. The description doesn't need to add parameter semantics. The baseline for zero parameters is 4, which is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'historical recovery success rates and failure distribution'. It distinguishes from sibling recovery tools like 'get_recovery_plan' and 'get_recovery_session_status' by focusing on aggregate statistics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving recovery statistics but lacks explicit guidance on when to use this tool versus alternatives. For example, it doesn't clarify when to use this instead of 'get_recovery_session_status' or 'recovery_history'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_restock_suggestionsA
Find materials running low and generate purchase links.
Examines all material types in inventory and returns restock suggestions for any projected to run out within 30 days, sorted by urgency (critical first).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must fully convey behavior. It discloses that the operation is non-destructive (examines, returns), covers all material types, and sorts results by urgency. It does not mention any destructive side effects, auth requirements, or rate limits, but the read-only nature is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise with two sentences. The first sentence provides a clear, front-loaded purpose. The second adds necessary detail about scope and sorting. Every word serves a purpose, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description adequately covers what the tool does and the nature of its output (restock suggestions with purchase links, sorted by urgency). It could be more specific about the output format, but it is sufficient for an AI agent to understand the tool's purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters, so no additional parameter information is needed. Per guidelines, baseline for 0 params is 4. The description adds no param info, which is acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'find', 'examines', and 'returns', and the resource 'materials running low' in inventory. It explicitly says it returns restock suggestions for materials projected to run out within 30 days, sorted by urgency. This distinguishes it from sibling tools like 'forecast_material_consumption' or 'list_materials'.
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 clearly implies when to use: to get restock suggestions for materials running low. It provides context by stating it examines all material types and returns suggestions for those running out in 30 days. However, it does not explicitly mention when not to use or list alternatives, slightly reducing score from 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_safety_profileA
Get the full safety profile for a specific printer model.
Returns temperature limits, feedrate limits, volumetric flow,
build volume, and safety notes. Falls back to the default
profile if the printer_id is not found.
The profile also says where its numbers came from:
``owner_supplied`` lists any limit fields whose values were
typed by this machine's owner rather than verified by Kiln,
and ``limits_provenance`` is a ready-made sentence stating
it. Repeat that sentence when quoting a limit, so a
verified number and a typed one are never presented with
the same authority.
Args:
printer_id: Printer model identifier (e.g. ``"ender3"``,
``"bambu_x1c"``, ``"prusa_mk4"``).
| Name | Required | Description | Default |
|---|---|---|---|
| printer_id | Yes |
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. It discloses fallback behavior when printer_id is not found, explains the owner_supplied and limits_provenance fields, and gives an important usage instruction about quoting limits with appropriate authority.
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 well-structured and front-loaded. Every sentence earns its place, including the provenance guidance, and the Args section is cleanly formatted without unnecessary verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter and no output schema, but the description lists the returned fields, fallback behavior, and provenance semantics. This is sufficient for an agent to invoke the tool and interpret results 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 0%, but the description fully compensates by defining printer_id as a 'Printer model identifier' and providing concrete examples like 'ender3', 'bambu_x1c', and 'prusa_mk4'. This adds meaning well beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Get the full safety profile for a specific printer model.' It clearly distinguishes itself from sibling tools like list_safety_profiles by targeting a single model and returning the full profile.
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 clearly implies when to use this tool: when you need the full safety profile for a specific printer model. It does not explicitly name alternatives or exclusions, but the context is clear enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_session_logB
Return the full audit log for an agent session.
Every tool call made by an agent is recorded with a session ID — a UUID
generated when the MCP server starts. Use this tool to replay exactly
what an agent issued during a session: every command, every safety check
that fired, every blocked attempt.
Args:
session_id: Session UUID to query. Omit to use the current session.
limit: Maximum records to return (default 100, max 500).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| session_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes what is included in the log but does not disclose performance implications, authentication requirements, or side effects. The behavioral disclosure beyond the basic purpose is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a purpose statement, background context, and parameter list. It is concise and informative, but the 'Args' section could be slightly more integrated. Overall, it earns its place without unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, so the description should explain the return format. It says 'full audit log' but does not specify the structure (e.g., fields, ordering). Additionally, it lacks details on pagination or behavior when limit is exceeded. Given the complexity of a log tool, this is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no descriptions (0% coverage), so the description adds crucial meaning: it explains the session_id parameter (optional, defaults to current session) and the limit parameter (default 100, max 500). This provides clear semantics beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns the full audit log for an agent session, explaining what is recorded (tool calls, safety checks, blocked attempts). It does not explicitly differentiate from sibling tools, but the purpose is specific and well-defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use the tool ('replay exactly what an agent issued during a session'), but does not mention when not to use it or suggest alternatives. No explicit exclusions or comparisons with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_skill_manifestA
Get the Kiln skill manifest for agent self-discovery.
Returns a machine-readable description of Kiln's capabilities, configuration requirements, available interfaces, and setup instructions. Use this when first connecting to understand what Kiln can do and what configuration is needed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the tool 'returns a machine-readable description' but does not disclose if the operation is read-only, potential side effects, authentication needs, or rate limits. This lack of behavioral detail is a significant 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?
The description is concise with three sentences, front-loading the primary action. It is well-structured and avoids unnecessary details, though it could be slightly more compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no parameters, the description is fairly complete for a simple info retrieval. It explains the purpose and when to use, but lacks specifics on output format (e.g., JSON) and exact contents, which would enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema description coverage is 100%. According to guidelines, baseline is 4. The description doesn't need to add parameter info, and it correctly omits any.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the verb 'Get' and the resource 'skill manifest', specifying it is for agent self-discovery. It distinguishes the tool from 200+ siblings by its unique purpose of providing a machine-readable description of Kiln's capabilities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'when first connecting to understand what Kiln can do and what configuration is needed.' It provides clear context but does not mention alternatives or when not to use it, which is acceptable given the unique function.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_slicer_profileB
Get the full bundled slicer profile for a printer model.
Returns all INI settings (layer height, speeds, temps, retraction, etc.)
and the recommended slicer. Free-tier profiles (default, ender3,
prusa_mk3s, klipper_generic) are available to all users. Premium
profiles require a Kiln Pro license.
Args:
printer_id: Printer model identifier (e.g. ``"ender3"``,
``"bambu_x1c"``, ``"creality_k1_max"``).
| Name | Required | Description | Default |
|---|---|---|---|
| printer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It does not explicitly state that this is a read-only operation with no side effects, nor does it mention authentication needs or rate limits. The licensing info hints at access control but is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear front-loaded purpose, followed by return details and licensing notes. The args block is somewhat verbose but acceptable. No redundant sentences; every part contributes value.
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 the tool's purpose, return content, and licensing, but lacks description of the return format (e.g., JSON structure) and does not differentiate from many sibling slicer tools. With no output schema, this is a notable gap for an AI agent needing to interpret 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?
The schema has 0% description coverage for the single parameter 'printer_id'. The description compensates by providing example values (e.g., 'ender3'), which adds practical guidance but does not clarify format or constraints beyond examples.
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 'Get the full bundled slicer profile for a printer model' with clear verb and resource. It distinguishes from siblings by emphasizing 'full bundled' but does not explicitly contrast with related tools like 'get_material_slicing_profile' or 'list_slicer_profiles'.
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?
Mentions free-tier vs. premium profile availability based on license, providing context for when this tool is usable. However, it does not specify when to avoid using it or suggest alternative tools, leaving room for ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_speed_profileA
Get the current speed profile (Bambu Lab printers only).
Returns the active speed profile with:
- ``level``: numeric level 1–4
- ``name``: profile name — ``"silent"`` (50%), ``"standard"`` (100%),
``"sport"`` (124%), or ``"ludicrous"`` (166%)
- ``speed_magnitude``: actual speed multiplier percentage reported by the
printer firmware
Use this to check the current speed before adjusting it with
``set_speed_profile()``.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool is a read operation returning specific fields, which is sufficient for a simple getter. However, it could mention any implications of caching or freshness of data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with the purpose stated in the first sentence, followed by a bulleted list of return fields. Every sentence adds value, and there is no superfluous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description is complete: it explains what the tool does, the scope (Bambu Lab printers), and the full return structure. No additional context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, and the schema coverage is 100% (trivially). The description adds value by detailing the return values beyond the schema, which consists of an empty object. Baseline for 0 parameters is 4, and the description exceeds that by providing field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets the current speed profile, specifies it's for Bambu Lab printers, and lists the exact return fields (level, name, speed_magnitude). This distinguishes it from sibling tools like 'set_speed_profile'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises to use this tool to check the current speed before adjusting it with 'set_speed_profile()', providing clear when-to-use guidance and a direct reference to an alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_startedA
Quick-start guide for AI agents using Kiln.
Returns an onboarding summary: what Kiln is, how to discover
its tools, core workflows, and the most useful tools to call
first. Call this at the start of a session if you're
unfamiliar with the available capabilities.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description implies a read-only operation returning a summary, but does not elaborate on side effects or safety. Adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short, front-loaded with 'Quick-start guide', and efficiently conveys purpose and usage. Every sentence adds value.
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 zero parameters and no output schema, the description fully covers what the tool does and when to use it. Complete for its intended role.
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?
No parameters, so baseline is 4. The description adds meaning by specifying the tool's purpose and return content, which is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns an onboarding summary explaining Kiln, tool discovery, core workflows, and useful tools. This distinguishes it from the many operational sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to call at the start of a session if unfamiliar with capabilities. No alternative or when-not-to-use, but that is reasonable for an onboarding tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tool_positionA
Get the current nozzle / tool-head XYZ position (Moonraker and Serial).
Returns a dict with at least ``x``, ``y``, ``z`` coordinates in mm
relative to the printer's home position. Some printers also report
``e`` (extruder position).
Use this for:
- Verifying the printer has been homed (coordinates are valid only
after homing)
- Calibration sequences that need to know the current position
- Move planning when issuing manual jog commands
Not all adapters support this — returns an error if position data is
not available.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description shoulders full responsibility for behavioral disclosure. It explains the return values (x, y, z, possibly e) and the error condition when unsupported. It does not mention side effects, implying read-only behavior, which is sufficient.
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 well-structured with a clear first sentence followed by detailed return info and usage contexts. It is slightly verbose but front-loads the key purpose. Could be more concise in the return description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description fully covers the return format (dict with x, y, z, optionally e) and the error case. It also explains units and calibration prerequisites, making it complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the parameter semantics dimension has a baseline of 4. The description adds value by detailing the returned coordinate keys and units, which goes beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets the nozzle/tool-head XYZ position, using specific verbs and resource references. It distinguishes itself from sibling tools by being a simple positional query, unlike many other tools that perform actions or analyses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists when to use the tool (verifying homing, calibration, move planning) and notes that not all adapters support it, implying when not to use. However, it does not explicitly compare to alternative tools for positional data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hand_back_printerA
Tell Kiln you are taking a printer from here, so it can move on.
Below the fleet tier Kiln works with one printer at a time: the
machine it started a print on, or one it is watching for you.
This hands that machine back — you keep the print, Kiln stops
being the one driving it, and its attention is free for another
printer.
Nothing is cancelled and nothing is paused. The print carries on
exactly as it was; this only changes which machine Kiln considers
itself responsible for.
Called with no arguments it reports which printer Kiln is working
with, without changing anything, so you can always find out where
its attention is before moving it.
One thing worth knowing before you do it: Kiln will come back to
this print once if you need it to, and after that it stays with
whatever machine it moved to until this print finishes. Going
back and forth between two running printers is what the fleet
tier is for.
Args:
printer_name: Printer to hand back. Omit to report only.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full transparency burden and does so thoroughly: it states that nothing is cancelled or paused, the print continues unchanged, only Kiln's responsibility changes, and the no-argument form mutates nothing. It also discloses the subtle one-time return behavior and the fleet-tier limitation.
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 longer than strictly necessary and the opening metaphor partially overlaps with the following explanation, but each paragraph adds a distinct behavioral nuance. It is front-loaded with a plain-language summary and ends with a clear Args section.
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 one optional parameter, no annotations, and no output schema, the description is complete: it covers purpose, single-printer scope, side effects, no-argument behavior, and the one-time return edge case. An agent has enough information to invoke the tool correctly and understand what will happen.
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 schema only shows an optional nullable string, so the description's 'Printer to hand back. Omit to report only' adds real meaning by tying the parameter to the operation and clarifying that omission is a reporting mode rather than an error. It does not specify name format or identifiers, but for one optional parameter this is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies a specific action: handing back the printer Kiln is currently managing so Kiln's attention is freed. It also distinguishes itself from fleet-tier operation and sibling tools by explaining that it works with one printer at a time.
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 explains when to use the tool (below fleet tier, when you want Kiln to stop driving the current print) and when not to (for back-and-forth between two running printers, which is fleet-tier behavior). It also notes that calling with no arguments is a no-op reporting mode, but it does not explicitly name alternative sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
health_checkA
Return system health information for monitoring.
No authentication required. Useful for container healthchecks,
dashboards, and verifying the server is responsive.
**See also:** ``kiln_health`` for version info, module
availability, scheduler status, and webhook configuration.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It states the tool is read-only and safe (no authentication needed) and returns health info. However, it does not disclose return format, side effects, or any caching behavior. For a simple health check, this is adequate but not highly detailed.
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, each serving a clear purpose: stating the function, providing auth and use case context, and linking to the sibling tool. No wasted words, front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, no annotations, and no output schema, the description is complete. It covers purpose, auth requirements, use cases, and distinguishes from the sibling tool. Nothing essential is missing for this simple health check tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema coverage is 100% (vacuous). According to guidelines, baseline for 0 parameters is 4. The description adds no parameter information, which is appropriate as there are none to describe.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool returns system health information for monitoring, and distinguishes itself from kiln_health by specifying that it's for basic health checks while kiln_health provides detailed system information. This is a specific verb and resource with sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description mentions no authentication required and lists use cases (container healthchecks, dashboards, verifying server responsiveness). It also provides a see-also to kiln_health for more detailed info, giving context on alternatives. However, it lacks explicit when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hollow_mesh_modelA
Create a hollow version of a mesh to save material.
Generates an inner offset shell and combines it with the outer
surface. Reports estimated material savings.
:param file_path: Path to the STL file.
:param wall_thickness_mm: Wall thickness in mm (default 2.0).
:param output_path: Output path (defaults to ``<name>_hollow.stl``).
:returns: Dict with hollowing stats and material savings.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| output_path | No | ||
| wall_thickness_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it delivers: it explains the shell generation algorithm, the material savings report, the default output filename pattern, and the inline 3D stage side effect including automatic decimation of oversized meshes and the fallback behavior for hosts that don't render MCP Apps panels. This is substantial behavioral disclosure, though it could go further by noting error conditions or non-destructive 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?
The description is well-structured, front-loaded with a purpose statement, followed by mechanism details and a parameter docstring. The INLINE 3D STAGE paragraph is long but each sentence earns its place, explaining the interactive viewer, decimation behavior, and cross-host fallback. It could be trimmed slightly, but there is little waste overall.
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 moderate-complexity tool with no output schema or annotations, this description covers all the bases: purpose, generation mechanics, parameter semantics, return value shape, and notable side effects (3D stage, decimation). It could be improved by enumerating the specific keys returned in the stats dict, but overall it is quite 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?
Despite 0% schema description coverage, the embedded docstring documents all three parameters with meaningful semantics: file_path (path to STL), wall_thickness_mm (units and default), and output_path (default naming convention). It also documents the return value. This fully compensates for the sparse schema, though a more structured presentation in the schema itself would make it flawless.
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, 'Create a hollow version of a mesh to save material,' is a specific verb+resource+benefit statement that clearly distinguishes this tool from the many other mesh operations in the sibling list (repair_mesh, merge_stl, scale_mesh_to_fit, etc.). The rest of the intro reinforces the unique value proposition of offset shells and material savings.
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 'to save material' implies when to use this tool, and the mention of reporting estimated material savings provides context. However, there is no explicit guidance on when NOT to use it or any named alternative tools (e.g., 'for simple scaling use X'). Usage context is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_step_fileA
Import a STEP (.step/.stp) CAD file and convert it for Kiln's mesh pipeline.
Converts STEP files using whichever backend is available (the
OCCT kernel that ``kiln install-step-backend`` sets up, or an
existing FreeCAD / Gmsh / CadQuery install).
**The output format follows what the file carries.** A plain
single-solid STEP becomes an STL. A STEP with part colours or
multiple bodies becomes ONE 3MF that keeps each part's colour,
name, and position — so a coloured CAD assembly arrives ready
for a multi-material print instead of flattened grey. Pass
``output_format="stl"`` or ``"3mf"`` to force either.
Use ``check_step_support`` first to verify that a conversion
backend is installed. After conversion, use ``diagnose_mesh``
or ``analyze_mesh_geometry`` to validate the output.
If this returns ``code="NO_BACKEND"``, read the ``remedy`` field
rather than guessing: when ``remedy.actionable_by_caller`` is
True, tell the user to run ``remedy.command`` (``kiln
install-step-backend``) — one command and it works. When it is
False the caller is on a hosted server and has nothing to
install; say so plainly and suggest ``report_issue``. Never
hand a hosted user an install instruction.
Args:
file_path: Path to the STEP/STP file.
output_format: ``"auto"`` (default — 3MF when colour or
multiple bodies are present, else STL), ``"stl"``, or
``"3mf"``.
merge_bodies: STL output only: if True, merge all bodies
into one STL; if False, export each body separately.
(3MF keeps bodies as separate named objects either way.)
output_dir: Directory for output files. Defaults to
the STEP file's parent directory.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| output_dir | No | ||
| merge_bodies | No | ||
| output_format | No | auto |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses key behaviors: error handling for missing backend (code='NO_BACKEND' with remedy), output format auto-selection, and the 3D stage side effect. However, it does not mention file writing side effects or other potential failures, and the repetitive structure obscures these details.
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 excessively verbose and repetitive. The core content is duplicated almost verbatim multiple times, making it bloated and hard to parse quickly. Many sentences do not earn their place due to redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers conversion, backends, output format, validation, and error handling, providing a fairly complete picture. However, the repetition hinders clarity, and it omits details like success return values or file system effects beyond the 3D stage mention.
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 description adds significant meaning to all parameters. It explains output_format's 'auto' behavior with conditions, merge_bodies' effect on STL output, output_dir's default, and file_path is self-evident. This fully compensates for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: importing STEP files and converting them for Kiln's mesh pipeline. It specifies the input format, conversion behavior, and output formats, distinguishing it from other file operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use the tool (import STEP) and what to do before/after (check_step_support, diagnose_mesh). It also explains output format selection rules, giving the agent clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
improve_generation_promptA
Generate an improved prompt from feedback.
Adds physical constraints to the original prompt to address
printability and structural issues, without modifying the
creative intent.
Patent KILN-010 claim 51 — the improved prompt is run
through a three-check sanity gate (no contradictions, fits
the provider budget, ≥70% original-token overlap so intent
is preserved). When ``enforce_sanity=True`` (default) and
the gate fails, this tool refuses with
``code="SANITY_GATE_FAILED"`` and returns the failure list
instead of a contradictory prompt. Callers that genuinely
want the failed prompt — for inspection, repair, or model
self-correction — set ``enforce_sanity=False`` and read
``improved_prompt.sanity`` from the response.
Args:
original_prompt: The original generation prompt.
failure_mode: Optional failure mode string.
max_overhang_angle: Maximum overhang angle detected.
min_wall_thickness: Minimum wall thickness detected.
has_bridges: Whether bridges were detected.
iteration: Which retry iteration this is.
file_path: Optional path to the STL file for structural
analysis. When provided, the tool also analyzes
structural risks and folds them into the improved
prompt.
enforce_sanity: When True (default), refuse the
response if the prompt sanity gate fails. Pass
False to receive a contradictory prompt anyway —
useful when the agent intends to repair it before
sending to the generator.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | No | ||
| iteration | No | ||
| has_bridges | No | ||
| failure_mode | No | ||
| enforce_sanity | No | ||
| original_prompt | Yes | ||
| max_overhang_angle | No | ||
| min_wall_thickness | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses the sanity gate logic, refusal behavior on failure, and the effect of setting enforce_sanity=False. It does not mention potential side effects like logging, but covers the core behavioral traits comprehensively.
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 well-organized with paragraphs and an Args section, but is somewhat lengthy. Every sentence contributes value, and it front-loads the purpose effectively, though minor trimming could improve conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters and no output schema, the description adequately explains all parameters and behavior (sanity gate, failure mode). It references response fields like 'improved_prompt.sanity' but could elaborate on the exact output structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Since schema description coverage is 0%, the description adds essential meaning for all 8 parameters, including context for file_path, enforce_sanity, and iteration. The Args block explains each parameter's role, greatly exceeding the schema's minimal info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates an improved prompt from feedback, adding physical constraints for printability without altering creative intent. It distinguishes itself from siblings like 'build_generation_prompt' by specifying it improves an existing prompt.
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 explains when to use the tool (to improve a prompt with feedback) and how to handle the sanity gate via the enforce_sanity parameter. It lacks explicit 'when not to use' guidance but provides clear context for its application.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
infer_print_settingsA
Infer optimal slicer settings from structural analysis.
Bridges the gap between **design analysis** and **print success**.
Analyzes the mesh for structural risks, then recommends concrete
slicer parameters (perimeters, infill, supports, brim, layer height)
tuned to compensate for the design's weaknesses.
**Examples of what it catches:**
- Thin neck detected → increase perimeters to 4+
- Cantilever overhangs → enable tree supports
- High center of gravity → add brim for bed adhesion
- Stress concentrations → switch to gyroid infill at 50%+
- Sharp corners → fine layer height for detail
Material-specific: defaults vary by PLA/PETG/ABS/Nylon/TPU/ASA/PC.
:param file_path: Path to the STL file.
:param material: Filament type (PLA, PETG, ABS, Nylon, TPU, ASA, PC).
:returns: Dict with perimeters, infill, supports, brim, layer height,
orientation, special notes, and confidence level.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | PLA | |
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility. It describes the tool as analyzing and recommending, which suggests a read-only operation, but does not explicitly confirm non-destructive behavior or disclose any side effects, authorization needs, or resource requirements. It adds some context with material-specific defaults but lacks full transparency.
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 well-structured with a clear opening, bullet-pointed examples, and a docstring-style parameter listing. It is concise enough for the purpose, with no wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no output schema), the description adequately explains the return value as a dictionary of specific slicer settings. It covers material-specific defaults and examples of structural analysis. It is sufficiently complete for an AI agent to understand the tool's inputs and outputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds useful meaning for both parameters: it clarifies 'file_path' as an STL file path and 'material' as a list of filament types. This compensates well for the empty schema, though it does not cover format or constraints for the file path.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Infer optimal slicer settings from structural analysis.' It uses specific verbs and resources, and provides concrete examples. However, it does not explicitly differentiate from sibling tools like 'predict_print_settings' or 'recommend_settings', which may have overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context through examples of structural issues (thin neck, overhangs, etc.), but does not explicitly state when to use this tool versus alternatives or provide any exclusion criteria. Usage is implied, not guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_into_scadA
Insert code into an OpenSCAD module without replacing it.
Adds geometry or operations inside a module. Use for targeted
additions like "add ventilation holes to the top panel" or
"add screw holes to the base."
Args:
scad_code: OpenSCAD source code.
module_name: Module to modify (e.g. "base_plate").
code_to_insert: OpenSCAD code to insert.
position: "end" (before closing brace) or "start" (after
opening brace). Default: "end".
| Name | Required | Description | Default |
|---|---|---|---|
| position | No | end | |
| scad_code | Yes | ||
| module_name | Yes | ||
| code_to_insert | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of behavioral disclosure. It describes the insertion action and the two possible positions (start/end), but does not mention potential side effects, error handling (e.g., if the module does not exist), or return behavior. The description is adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a one-sentence summary followed by a usage paragraph and parameter list. Every sentence contributes value, and the format is easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 input parameters, no output schema, and no annotations, the description covers inputs well but omits the return value or post-conditions. The user might need to know whether the modified code is returned or the effect is in-place. This gap reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for parameters, yet the description explains each parameter in detail: scad_code (source code), module_name (module to modify), code_to_insert (code to insert), and position (start/end with default). This fully compensates for the lack of schema descriptions, adding significant meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Insert code into an OpenSCAD module without replacing it', providing a specific verb and resource. However, it does not explicitly differentiate from sibling tools like 'modify_scad_module' or 'update_scad_parameter', which are semantically close. Still, the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides concrete usage examples ('add ventilation holes', 'add screw holes') and explains that it inserts geometry inside a module. Although it does not explicitly state when not to use this tool or name alternatives, the context is sufficiently clear for selecting this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
intercept_gcode_commandA
Check one line of G-code for danger before you send it to a printer.
G-code is the language printers take orders in -- "heat the nozzle to
250C", "move to X=100". One bad line can cook a hotend or drive the
nozzle into the bed. This checks a single line against the safety
rules for this session (temperature ceilings, speed caps, the
printer's build volume) and says whether it looks safe to send.
It is a smoke detector, not a sprinkler. It reports; it does not
intervene. Kiln does not quietly pipe outgoing G-code through it, so
a line gets checked only when you call this on it, and gets stopped
only if you act on the answer. A line you never checked, or one you
checked and sent anyway, reaches the printer untouched.
So call it on each line before sending that line, and do what the
answer says:
- ``allow`` -- looks safe; send as-is.
- ``block`` -- dangerous; do not send.
- ``modify`` -- send ``modified_command`` instead, never the original.
- ``pause`` -- hold, and ask the user before sending.
- ``alert`` -- may be sent, but show the user ``reasons`` first.
A session can also come back with ``coverage_warnings`` (see
``start_gcode_interception``), meaning some checks could not be set up
at all -- usually because Kiln does not know which printer model it is
guarding. An ``allow`` from a session like that means "nothing I was
able to check objected", not "this is safe". Tell the user that
rather than reporting a clean pass.
Args:
session_id: Active interception session ID.
command: Raw G-code command string (e.g. "M104 S280", "G1 X10 F6000").
Returns the interception result including action, modified command
(if applicable), triggered rules, and human-readable reasons.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so burden is on description. It thoroughly explains that the tool only reports and does not intervene, that Kiln does not automatically pipe G-code through, and that sessions may have coverage_warnings affecting result interpretation.
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 lengthy but well-structured with bullet points and clear sections. Every sentence adds value, though some redundancy could be trimmed. Front-loads the core purpose effectively.
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 that output schema exists, descriptions of return values are unnecessary. The description covers session limitations, coverage warnings, and the five possible actions, making it complete for a tool that checks one G-code line.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% with only parameter names and types. The description adds meaning by defining session_id as 'Active interception session ID' and command as 'Raw G-code command string' with examples, providing necessary context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks a single line of G-code for danger before sending to a printer. It distinguishes itself from sibling tools like validate_gcode and validate_gcode_safe by focusing on interception and safety rules specific to a session.
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?
Explicitly states when to use ('call on each line before sending') and what to do with each result (allow, block, modify, pause, alert). Also mentions alternative tools like start_gcode_interception for session setup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_preview_tokenA
Issue a preview-confirmation token for a file about to be printed.
Call this AFTER rendering a preview (``visualize_model`` /
``preview_generated_model``) and showing it to the user. The user
approves → you call this tool → you pass the returned token as
``preview_token`` to ``start_print`` or ``fulfillment_order``.
Without a valid token, ``start_print`` refuses to execute (unless
``KILN_SKIP_PREVIEW_GATE=1``). This is the deepest safety gate
that prevents an agent from sending a print to the physical printer
without the user ever seeing what's about to be printed.
Tokens are single-use and expire after ``ttl_seconds`` (default 600
seconds / 10 minutes). Scoped to the specific file hash and
optionally to a specific printer_id so a token for one file can't
be reused to approve a different file.
Args:
file_path: Path to the file to be printed (STL, 3MF, or .gcode).
Hashed to bind the token to specific bytes. If the file
changes between issuing and using the token, the token is
rejected.
printer_id: Optional printer model ID to scope the token to a
specific printer. When set, using the token with a different
printer will be rejected.
ttl_seconds: Lifetime of the token (default 600).
Returns:
Dict with ``token`` and ``expires_at`` (unix timestamp).
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| printer_id | No | ||
| ttl_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It explains token is single-use, expires, scoped to file hash and optional printer_id, and that changing file invalidates token. Emphasizes this is a safety gate. Does not mention permissions or side effects, but covers critical behavioral aspects well.
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?
Well-structured: starts with a concise purpose sentence, then workflow, then behavioral details, then parameter descriptions. No wasted words. Front-loaded with essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters, no output schema, and no annotations, the description covers return values (Dict with token and expires_at), workflow, binding, expiration, safety gate. Complete for the tool's purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, but the description fully documents all three parameters: file_path (path, types, hashing), printer_id (optional, scoping behavior), and ttl_seconds (default 600). Adds meaning beyond the schema's type and required field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool issues a preview-confirmation token for a file to be printed, specifying the verb 'issue' and the resource 'preview-confirmation token'. It distinguishes from sibling tools like issue_shipping_confirmation_token by context and the explicit workflow described.
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?
Provides explicit workflow: call after rendering preview, user approves, call this tool, then pass token to start_print or fulfillment_order. States that start_print refuses without valid token and mentions the env var skip. Lacks direct comparison to similar sibling tokens but still offers strong guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_shipping_confirmation_tokenA
Issue a single-use token after the user confirms shipping details.
Call this only after showing the normalized contact/shipping address
and selected shipping option to the user, asking whether Kiln should
save the address as a profile, and receiving approval.
``fulfillment_order`` refuses to place an order without this token.
Args:
quote_id: Quote ID from ``fulfillment_quote``.
shipping_option_id: Shipping option ID selected from the quote.
shipping_address: Explicit full shipping address.
shipping_profile_name: Saved profile name to use instead of
passing ``shipping_address``.
save_profile_decision: Required when ``shipping_address`` is
provided directly. Pass ``"save"`` only after the user says
yes; pass ``"do_not_save"`` after the user says no.
save_profile_name: Profile name to save when
``save_profile_decision`` is ``"save"``.
overwrite_saved_profile: Replace an existing profile with the
same name when saving.
set_default_profile: Make the saved profile the default.
ttl_seconds: Token lifetime, default 10 minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| quote_id | Yes | ||
| ttl_seconds | No | ||
| shipping_address | No | ||
| save_profile_name | No | ||
| shipping_option_id | No | ||
| set_default_profile | No | ||
| save_profile_decision | No | ||
| shipping_profile_name | No | ||
| overwrite_saved_profile | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the single-use token behavior and dependencies between parameters (e.g., save_profile_decision required when shipping_address is provided). However, it does not explicitly state whether the tool has destructive or irreversible effects, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured as a docstring with a clear purpose statement and parameter list. It front-loads the key usage instruction and uses concise, direct language. Every sentence adds value, and the length is justified by the number of parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 9 parameters, no output schema, and no annotations, the description is quite thorough. It covers parameter interactions and the workflow context (post-confirmation). However, it lacks details about the return value (e.g., token string) and potential error conditions, which could affect agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description adds detailed semantics for nearly all 9 parameters. It explains conditions like 'Required when shipping_address is provided' for save_profile_decision, and provides context for each parameter (e.g., default TTL, saved profile usage). This greatly aids an AI agent in correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Issue a single-use token after the user confirms shipping details,' providing a specific verb and resource. It distinguishes from sibling tools like issue_preview_token by focusing on shipping confirmation.
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?
Explicitly states when to call: 'Call this only after showing the normalized contact/shipping address and selected shipping option to the user... and receiving approval.' It also explains the consequence of not calling it: 'fulfillment_order refuses to place an order without this token.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iterate_designA
Automated design iteration: generate -> validate -> improve -> regenerate.
Runs a closed loop that generates a model, validates it for
printability issues, and if issues are found, improves the prompt
and regenerates. Stops when the model passes validation or
max_iterations is reached. Returns the best result.
:param prompt: Text description or OpenSCAD code.
:param provider: Generation provider (default ``"openscad"``).
:param max_iterations: Maximum improvement attempts (1-5).
:param material: Optional material for design intelligence.
:param printer_model: Optional printer model for constraints.
:param brief_id: Optional saved-goal id from ``design_session``.
When supplied AND the best iteration produced a mesh, a
``design_brief:<id>`` intent sidecar is written next to
the produced file so the audit's "matches what you
asked for" gate, the brief failure_history wiring, and
the ``compare_design_versions`` intent diff all light
up against the saved goal — without the user having to
re-attach the brief after every iteration round.
Best-effort: kiln-pro not installed silently skips.
:returns: Dict with the best result and iteration history.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | ||
| brief_id | No | ||
| material | No | ||
| provider | No | openscad | |
| printer_model | No | ||
| max_iterations | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses several important behaviors: the loop stops when validation passes or max_iterations is reached, it returns the best result, it writes a sidecar file when brief_id is supplied and a mesh is produced, it skips silently if kiln-pro is absent, and it opens an interactive 3D stage with automatic decimation for large meshes. This is exceptionally transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is verbose but well-structured: a concise process summary, then a parameter block, then a behavioral note about the 3D stage. Every sentence provides useful context, though the inline restructuredText parameter documentation could be slightly more compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the algorithm, all parameters and defaults, the return value ('Dict with best result and iteration history'), side effects (sidecar file, 3D stage), and edge cases (best-effort skip, decimation). Given no output schema, this is complete enough for an agent to select and invoke 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?
Despite 0% schema description coverage, the description includes a full :param list for all six parameters, with defaults, types, and conditional semantics (especially brief_id's side-effect behavior). This adds substantial meaning beyond the schema's bare property titles.
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 opens with a clear process definition ('Automated design iteration: generate -> validate -> improve -> regenerate') and explains the closed-loop behavior, distinguishing it from single-shot generation or validation tools. The title and description together make the tool's purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states when to use the tool ('Runs a closed loop...') and specifies the stopping conditions. It also gives conditional guidance for brief_id and best-effort behavior. However, it does not explicitly mention alternatives like generate_model or validate_openscad_code, only implying this tool is for iterative design refinement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
job_historyA
Get history of completed, failed, and cancelled print jobs.
Args:
limit: Maximum number of jobs to return (default 20, max 100).
status: Optional filter by status -- "completed", "failed", or
"cancelled". Omit to show all finished jobs.
Returns recent job records from newest to oldest.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| status | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the schema by stating the sort order (newest to oldest) and the maximum limit (100). Since no annotations are provided, this disclosure is valuable, though it omits details like authentication or rate 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?
The description is concise (4 lines) with a clear structure: one line for purpose, then Args section, then return behavior. No superfluous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (2 optional parameters, no output schema), the description provides sufficient context for basic usage. It describes ordering and the scope of results, though it lacks output schema details which could aid decision-making.
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?
With 0% schema description coverage, the description fully compensates by explaining the limit (default 20, max 100) and status (possible values and default behavior). It adds clear semantics not present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves history of completed, failed, and cancelled print jobs, specifying the verb and resource. However, it does not differentiate from sibling tools like 'print_history' or 'failure_history', leaving potential 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 explains how to use the parameters (limit, status) and the order of results, but lacks explicit guidance on when to use this tool versus alternatives, such as when to prefer 'print_history' or 'job_status'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
job_statusB
Get the status of a queued or completed print job.
Args:
job_id: The job ID returned by ``submit_job``.
Returns the full job record including status, timing, and metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool is read-only (get status) and describes return content, but does not mention safety (idempotence), error conditions, authentication requirements, or polling behavior. The description is adequate but not highly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: a single sentence defining the purpose, a docstring-style argument explanation, and a return description. No extraneous information, front-loaded with the verb-object structure. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only one parameter and no output schema, the description covers its purpose, input, and output adequately. It could mention that the tool is idempotent or safe to call repeatedly, but the current completeness suffices for a simple status retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must add value. It explains that 'job_id' comes from 'submit_job', which provides necessary context. However, it does not specify format, constraints, or required string patterns, leaving some ambiguity. The explanation is helpful but minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'status of a queued or completed print job'. It specifies scope (queued or completed) and mentions return content (full job record including status, timing, and metadata), which effectively communicates the tool's function. However, it does not explicitly differentiate from sibling tools like 'job_history' or 'print_status_lite', though the single-job focus is evident.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. It implies usage after obtaining a job_id from 'submit_job', but does not state when not to use it or list alternative tools. Siblings such as 'job_history' (for listing jobs) or 'print_status_lite' (for print status) are not mentioned, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kiln_healthA
Get a health check for the Kiln system.
Returns versions, uptime, module availability, scheduler status, webhook status, and overall system health. Use this to verify the system is running correctly.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that the tool returns status data (versions, uptime, etc.) and implies a read-only operation. It does not mention side effects, authorization, or potential performance impact, but for a health check, the behavioral traits are sufficiently clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the purpose ('Get a health check...') followed by a concise list of returned data and a usage note. Every sentence is informative and without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple health check tool with no output schema, the description adequately covers what the tool does, what it returns, and when to use it. It is complete within the context of its simplicity and the absence of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage (trivially). Per guidelines, 0 parameters results in a baseline score of 4. The description adds no parameter information, but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get a health check for the Kiln system'. It lists specific return values (versions, uptime, module availability, scheduler status, webhook status, overall system health), distinguishing it from sibling tools like 'health_check' or 'check_printer_health' by targeting the Kiln system specifically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage context: 'Use this to verify the system is running correctly.' However, it does not explicitly exclude alternative tools or provide when-not-to-use guidance, which would elevate the score to 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kiln_signinA
Start a Kiln sign-in via OAuth.
Returns a URL the user can open in their browser to sign in
with Google / Apple / GitHub. Relay the ``verification_uri``
to the user and then call ``kiln_signin_poll(device_code)``
every few seconds until the status is no longer ``"pending"``.
Response fields (all strings unless noted):
* ``verification_uri`` — URL to open in the browser; the
``user_code`` is already embedded as a query param so the
user typically doesn't have to type anything.
* ``user_code`` — the short human-readable code
(``KLN-ABCD-EFGH``); show it only as a fallback in case
the verification URL didn't pre-fill it.
* ``device_code`` — secret; pass to ``kiln_signin_poll``,
never show to the user.
* ``interval`` (int) — seconds to wait between polls
(default 2).
* ``expires_in`` (int) — seconds the code is valid for
(900 = 15 minutes).
A free Kiln account adds a cloud design library with share
links plus the free monthly allowance of Kiln's hosted
tools. Free tier — no license key required; this is the
very first call an unauthenticated user makes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, but the description thoroughly discloses the tool's non-destructive behavior (it only returns a URL), the expected response fields, and the authentication flow. There is no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections and bullet points for response fields. It is slightly lengthy but remains informative and front-loaded with the key 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?
With zero parameters and an output schema, the description fully explains the tool's behavior, response fields, and the required follow-up polling step. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero input parameters, so the schema coverage is 100%. The description adds value by explaining the response fields and their usage, which goes beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly defines the tool's purpose: to start a Kiln sign-in via OAuth and return a URL for the user to open. It distinguishes itself from sibling tools like `kiln_signin_poll` by specifying that this is the initial sign-in call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear workflow: call this, then poll with `kiln_signin_poll`. It also states that this is the first call for an unauthenticated user. However, it doesn't explicitly exclude already signed-in users or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kiln_signin_pollA
Check whether a sign-in started by kiln_signin is done.
Call this repeatedly (every ``interval`` seconds) with the
``device_code`` that ``kiln_signin`` returned. Each call is a
single HTTP round-trip (it does NOT block), so the agent stays
responsive and the user sees progress.
Returns ``{"status": "pending" | "success" | "denied" |
"expired", ...}``.
* ``pending`` — user hasn't finished in the browser yet;
wait ``interval`` seconds and call again.
* ``success`` — tokens have been written to
``~/.kiln/auth_tokens.json`` (mode 0600); the response
also echoes ``email`` and ``tier``. Every other Kiln tool
picks up the new session automatically.
* ``denied`` — user cancelled in the browser.
* ``expired`` — the device_code timed out (15 min window);
call ``kiln_signin`` again for a fresh code.
Free tier — no license key required.
| Name | Required | Description | Default |
|---|---|---|---|
| device_code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description fully discloses behavior: non-blocking HTTP round-trip, return statuses, side effects (writing tokens to ~/.kiln/auth_tokens.json), and free tier. No contradictions or omissions.
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 well-structured with a clear opening, bullet points for statuses, and concise details. A minor point: it could be slightly tighter, but overall it's efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool (1 parameter, clear outputs), the description covers all needed context: polling behavior, all possible return statuses with actions, side effects, and free tier. The output schema is directly provided in plain text.
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?
Despite 0% schema coverage, the description explains the device_code parameter's origin ('from kiln_signin') and usage, adding essential meaning beyond the schema that only specifies it as a required string.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Check whether a sign-in started by kiln_signin is done', providing a specific verb ('check') and resource ('sign-in poll'). It distinguishes itself from sibling tools like kiln_signin by explaining its role as a follow-up polling mechanism.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to 'Call this repeatedly (every interval seconds) with the device_code that kiln_signin returned', and details actions for each status (e.g., wait for pending, restart for expired). It provides clear usage context without needing exclusion statements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
license_statusA
Get the current license tier, validity, and key details.
Returns the active tier (free/pro/business), whether the license is
valid, expiration date, and how it was resolved (env/file/default).
No authentication required.
When the tier comes from a sign-in session (``source`` is
``"oauth"``), the answer also carries ``session_state``. If that
session has lapsed, ``is_valid`` is ``false`` and
``action_required`` says how to fix it — surface that line to the
user verbatim, because every hosted call will fail until they do.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description effectively discloses key behavioral traits: no authentication needed, return fields (tier, validity, expiration, source, session_state, action_required), and specific actions for a lapsed OAuth session. It lacks only explicit mention of idempotency or side effects, which are minimal for a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is succinct at 8 sentences, front-loading the main purpose. It efficiently conveys necessary details without redundancy. Slight room for improvement: the second paragraph could be more concise, but overall well-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?
For a simple read tool with no parameters and no output schema, the description fully covers what is needed: what data is returned (tier, validity, expiration, source, session_state, action_required), authentication requirements, and how to handle specific cases. It is complete enough for an AI agent to use 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?
The input schema has zero parameters with 100% coverage (empty schema). According to guidelines, 0 parameters earn a baseline of 4. The description adds no parameter details because none are needed, but it enriches understanding by explaining the output structure, which indirectly aids correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves license tier, validity, and details. It uses a specific verb ('Get') and resource ('license status'), making its purpose unambiguous. It distinguishes itself from sibling tools by focusing on license information, which is unique among the many tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions that no authentication is required, which is a useful usage hint. However, it does not provide explicit guidance on when to use this tool versus alternatives (e.g., when to use check_my_tier or other license-related tools). The context is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_available_materialsB
List all available 3D printing materials with properties.
Returns details for every material in the database including strength, flexibility, heat resistance, surface quality, ease of print, cost, and temperature requirements.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that the tool returns all materials with detailed properties, implying a read-only, non-destructive operation. However, it does not mention any constraints like authentication, rate limits, or pagination.
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?
Concise two-sentence description. First sentence states the action and scope, second elaborates on returned data. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and no output schema, the description adequately explains what is returned. However, given the large set of sibling tools, additional context on how this differs from similar list tools would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, and schema description coverage is 100%, so baseline is 3. The description adds no parameter-specific meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it lists all 3D printing materials with properties, specifying included attributes. However, it does not differentiate from sibling tools like list_materials or list_material_catalog, which may have similar purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternative material listing tools. The description lacks context for selection, especially given many related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_cached_designsC
List cached designs, optionally filtered by material.
Args:
material: Filter by material (e.g. "PLA", "PETG").
limit: Maximum number of results.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| material | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only states the basic function and parameters, without mentioning read-only nature, pagination, default ordering, or any side effects. This is insufficient for a complete understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise and front-loaded with the purpose followed by arguments. Every word is used efficiently, though it could still include more useful information without sacrificing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has two parameters, no output schema, and no annotations, the description is incomplete. It does not explain what 'cached designs' are, how the list is ordered, or whether the result set is bounded. This leaves significant gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must compensate. It provides brief explanations for 'material' (with examples) and 'limit' (maximum results). This adds value but lacks details like default behavior, case sensitivity, or accepted formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List cached designs' with optional filtering by material, which is a specific verb and resource. However, it does not explicitly differentiate from sibling tools like 'list_cached_models' or 'search_cached_models', which could cause confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention when not to use it or any conditions for using filtering. The description lacks explicit when-to-use and when-not-to-use scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_cached_modelsB
List all models in the local cache, newest first.
Args:
limit: Maximum results (default 50).
offset: Number of entries to skip for pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions ordering and pagination but does not disclose whether the operation is read-only, any rate limits, or the format of returned data. With no annotations, more behavioral context would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, using only three lines. It front-loads the main action and includes necessary parameter details. Every sentence is useful, though it could be slightly expanded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no output schema), the description covers the essential input behavior. However, it lacks information about the output structure or what fields are returned, which would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains both parameters: limit (max results, default 50) and offset (pagination skip). This adds meaning beyond the schema, which has 0% coverage, making it helpful for the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (List), the resource (all models in local cache), and the ordering (newest first). It effectively communicates the tool's core purpose 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?
No guidance is provided on when to use this tool versus alternatives like list_cached_designs or search_cached_models. There is no mention of prerequisites or context for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_credentialsA
List all stored credentials (metadata only, no plaintext).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states the tool is read-only and only returns metadata, which is a positive behavioral trait. However, it omits potential details like authentication requirements or whether the list is user-specific or global.
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 efficiently communicates the tool's purpose and a key constraint (no plaintext).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema, no annotations), the description is mostly complete. It covers what the tool does and what it returns. Minor gaps like pagination or sorting are not critical for a list-all operation, but could be mentioned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema description coverage is 100%. According to the scale, baseline is 4 for no parameters. The description does not need to add parameter semantics, and it correctly omits any param references.
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 the specific verb 'list' with the resource 'stored credentials' and adds a clear qualifier 'metadata only, no plaintext', which precisely defines the scope. This implicitly distinguishes it from sibling tools like 'retrieve_credential' that likely return full credentials.
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 does not provide explicit guidance on when to use this tool versus alternatives such as 'retrieve_credential' or 'store_credential'. It only hints at the distinction through 'metadata only', but lacks direct instructions or examples.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_decorationsA
List all saved decorations in the library.
Browse the decoration library to find reusable decorations.
Filter by content type, category, or tag.
:param content_type: Filter by type — ``photo``, ``svg``, ``qr``,
``text``, ``procedural_texture``, ``ai_texture``
(empty = show all).
:param category: Filter by category — ``surface`` (photo/svg/qr/text)
or ``texture`` (procedural/AI textures). Empty = show all.
:param tag: Filter by tag (empty = show all).
:returns: Dict with decoration count and list.
This is the decoration LIBRARY: keyed by name, and it ADAPTS —
each recorded success stores proven settings for THAT material,
so applying picks the depth and mode your prints proved for
whatever you are printing in now. It keeps no version history.
Kiln's other kind of saved decoration is a decoration PRESET
(kiln-pro; what the web's /decorations pages show): keyed by an
id because it has versions, branches and signed releases, and
applied at the exact settings its version recorded rather than
adapting to the material. Listed by ``list_decoration_presets``,
applied by ``apply_decoration_preset``. The library adapts, the
preset remembers — if what you want isn't here, look there.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| category | No | ||
| content_type | No |
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 so well by revealing that the library is keyed by name, always adapts to proven settings, and has no version history. It also states the return shape (dict with decoration count and list), which gives useful behavior beyond a simple 'list' label.
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 longer than a simple tool needs, but nearly every section earns its place: the intro sentence, filter documentation, return info, and the critical distinction from presets. It is thoughtfully structured with clear paragraphs and front-loaded intent. A minor redundancy exists between 'List all' and 'Browse...', but it does not detract.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has only three optional filter parameters, no output schema, and no annotations, so the description is the only practical guidance. It covers the purpose, parameter semantics, return value, and a key domain distinction (library vs preset) that materially affects tool selection. This is fully sufficient for an agent to invoke the tool 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 0% because the input schema only has bare string properties with default empty values. The description fills this entirely by documenting all three filter parameters, including valid content_type values ('photo', 'svg', 'qr', 'text', 'procedural_texture', 'ai_texture') and category meanings. This is more helpful than typical schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'List all saved decorations in the library,' naming the exact resource and action. It explicitly contrasts this with decoration presets and points to list_decoration_presets/apply_decoration_preset, making it easy to distinguish from similar catalog-style tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states this is for browsing the decoration library, with filters, and adds a when-not-to-use directive: 'if what you want isn't here, look there' (to presets). It also explains the conceptual difference between library and preset, so an agent can select the right tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_design_componentsA
List available pre-built OpenSCAD components from bundled libraries.
Kiln bundles BOSL2 OpenSCAD libraries with pre-built
components for gears, threads, screws, bearings, hinges, and more.
These components produce proven geometry — much better than
generating complex mechanical parts from scratch.
Categories: mechanical, fasteners, electronics
Args:
category: Optional filter by category. If not provided, lists
all available components.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No |
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 for behavioral disclosure. It only states the basic function and benefits, without mentioning read-only nature, idempotency, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the purpose. The additional paragraph about benefits could be slightly trimmed but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers the purpose, usage context, and parameter details. However, it does not describe the format of the returned list, which would be helpful.
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 only parameter (category) is explained in the description, stating it is an optional filter and that omitting it lists all components. This adds meaning beyond the schema's default and type, compensating for the 0% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists pre-built OpenSCAD components from bundled libraries. It specifies the resource and action, and distinguishes from sibling tools like 'list_available_materials' or 'list_cached_designs' by focusing on OpenSCAD components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool, stating these components are better for complex mechanical parts than generating from scratch. However, it does not explicitly state when not to use it or provide alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_design_materialsB
List public material identifiers and safety/process summaries.
The list is sourced only from public Kiln data and does not include optional engineering enrichment.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; the description reveals that the tool accesses only public data and excludes engineering enrichment. However, it does not explicitly state that the operation is read-only or idempotent, which is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with minimal waste. It is front-loaded with the core purpose and adds a clarifying detail. Could be slightly more structured but is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description should explain what the tool returns. It only says 'material identifiers and safety/process summaries', which is vague. It omits details like whether it returns a list of objects, pagination, or any structure of the summaries.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema already fully covers param semantics. The description adds no param-specific detail, which is acceptable given 0 params baseline of 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool lists public material identifiers and safety/process summaries, and distinguishes itself by noting the data source is only public Kiln data without engineering enrichment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives like list_materials or search_material_catalog. The description implies it is for public data only, but does not clarify when to prefer it over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_design_templatesB
List available parametric design templates for common objects.
Templates provide ready-to-use OpenSCAD code with customizable
parameters. Use ``generate_from_template`` to render one into
a printable STL.
Each template includes:
- Customizable parameters with defaults, ranges, and descriptions
- Pre-validated OpenSCAD code (prints without supports)
- Category and description
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, side effects, permissions, or rate limits. For a listing tool, 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?
The description is concise, front-loaded with the purpose, and includes bullet points for clarity. No unnecessary sentences, though it could be slightly tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and zero parameters, the description covers the tool's functionality well, including template features and connection to generate_from_template. It lacks pagination or output volume details but is sufficient for a simple list.
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?
With zero parameters, schema coverage is trivially 100%. The description adds value by explaining the content and structure of templates, going beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists parametric design templates, with a specific verb and resource. However, it does not differentiate from sibling tools like find_design_templates or search_design_templates, lacking explicit distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by suggesting generate_from_template after listing, but provides no explicit when-to-use guidance or exclusions. No mention of when not to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_design_templates_catalogB
List public design-template discovery summaries.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the tool lists summaries, but does not confirm it is a read-only operation, nor does it mention any side effects or authoritative requirements. The description is minimal in behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that directly states the tool's purpose. No fluff or redundancy. It is front-loaded with the key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (no params, no output schema, no annotations), the description is incomplete. It does not explain what a 'discovery summary' contains or the output format. This leaves agents without enough context to interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description does not need to add parameter meaning. Baseline is 4 per guidelines for 0-parameter tools. The description does not add any parameter info, which is acceptable since no parameters exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists public design-template discovery summaries. It uses a specific verb ('List') and resource ('public design-template discovery summaries'). However, it does not explicitly distinguish from the sibling 'list_design_templates', which likely has a similar purpose, leading to 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 provides no guidance on when to use this tool over alternatives like 'search_design_templates' or 'list_design_templates'. No context is given about the data being public-only or when to prefer this over other listing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_design_versionsA
List version history for a design, newest first.
Args:
design_id: The design whose versions to list.
limit: Maximum number of versions to return (default 20).
Returns:
A list of version records ordered by version number descending.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| design_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It discloses ordering behavior and default limit via the 'limit' parameter description, but lacks details on pagination, total count, or potential side effects. Adequate but not thorough.
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 efficient, using four sentences covering purpose, parameters, and returns. No redundant information, front-loaded with the core action.
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 list tool without output schema, the description covers the essential context: what it does, parameters, and ordering. Lacks mention of pagination or difference from 'search_design_versions', but is otherwise 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?
The 'Args' section in the description adds meaning to both parameters: design_id is explained as 'the design whose versions to list', and limit includes default and maximum semantics. Since the schema has 0% description coverage, this significantly aids understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'version history for a design', and specifies ordering ('newest first'). This distinguishes it from the sibling tool 'search_design_versions', which implies filtering or searching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention when to prefer 'search_design_versions' over listing all versions, nor any context for usage limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_fleet_sitesA
List all fleet sites/locations with printer counts.
Returns the distinct sites defined across registered printers. Useful for multi-site fleet dashboards.
Requires Enterprise license.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description handles behavioral disclosure. It states it returns distinct sites from registered printers and requires a license, but doesn't mention data freshness, pagination, or side effects. Given it's a simple read-only list, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the primary action, and each sentence provides essential information: action, return details, and usage/license. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and no output schema, the description is complete enough. It covers what the tool does, what it returns, and a usage scenario. Minor missing detail: whether results are sorted or paginated, but for a simple list this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so baseline 4 applies. The description adds value by specifying the output includes 'printer counts' and 'distinct sites', which is not present in the schema (no output schema).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all fleet sites with printer counts, using a specific verb and resource. It distinguishes itself from sibling tools like fleet_status_by_site by focusing on site listing with counts, and explicitly mentions usefulness for multi-site dashboards.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context, noting the tool is for multi-site dashboards and requires an Enterprise license. However, it does not explicitly compare to alternatives or state when not to use it, though the sibling tools suggest more detailed status queries exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_generation_providersA
List available text-to-3D generation providers.
Returns details about each provider: name, description,
available styles, and whether it requires an API key.
Use this to discover providers before calling ``generate_model``.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that details returned include name, description, styles, and API key requirement. This gives good insight into the tool's behavior, though it could mention if the tool is read-only or has any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is short and front-loaded: first sentence states purpose, second sentence adds detail. No wasted words, highly 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 0 parameters and no output schema, the description fully explains what the tool does, what it returns, and when to use it. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 0 parameters, so schema coverage is 100%. Description does not need to add parameter information; baseline of 4 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?
Description clearly states 'List available text-to-3D generation providers.' It specifies the resource (generation providers) and action (list), differentiating it from other list tools among siblings. The mention of using it before generate_model provides additional context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states to use this before calling generate_model, providing a clear context. However, it does not mention when not to use it or alternative tools, though the simplicity of the tool makes exclusions less necessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_interception_sessionsA
List all active G-code interception sessions.
Returns summary information for each active session including printer name, command counts, and rule counts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits. It mentions returning summary information (printer name, command counts, rule counts) but does not discuss side effects, permissions, or behavior when no active sessions exist. It is adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the main purpose. No unnecessary information; every sentence contributes.
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 list tool with no parameters and an output schema, the description is largely complete. It covers purpose and return content. It could mention that only active sessions are listed, which is already stated. Minor gap: no mention of read-only nature, but acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so baseline is 4. The description adds value by describing the return fields (printer name, command counts, rule counts), which helps the agent understand the output beyond what the output schema might provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all active G-code interception sessions', using a specific verb and resource. It distinguishes from sibling tools like get_interception_status or start_gcode_interception by focusing on listing all active sessions.
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 does not explicitly indicate when to use this tool versus alternatives such as get_interception_status or get_interception_history. Usage is implied but not guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_material_catalogA
List all material IDs in the catalog.
Returns a sorted list of every material identifier available in the built-in catalog database.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It states the tool lists and returns a sorted list from the built-in catalog, implying read-only behavior. However, it does not disclose potential impacts, limitations, or performance characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The first sentence immediately states the purpose, reflecting good front-loading.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and no output schema, the description is mostly complete for a simple list tool. It clarifies the source (built-in catalog) and order (sorted), but could specify what material IDs look like or whether the list is static.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters and schema coverage is 100%. The description adds no parameter details, which is acceptable given zero parameters. Baseline 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all material IDs in the catalog with a sorted list. However, it does not differentiate from sibling tools like list_materials or list_available_materials, which may have overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like search_material_catalog or list_materials. The description lacks context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_materialsA
List built-in filament material profiles (density, cost, temps).
Returns Kiln's bundled material database — NOT what is physically loaded.
For loaded material, use ``get_material`` (software tracker) or
``get_active_material`` (live AMS hardware query).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It clearly states the tool returns a bundled database and not physical status, implying it is a safe, read-only operation. It could be more explicit about side effects but is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences with line breaks, no fluff. Every sentence serves a purpose—defining the tool and providing alternative guidance.
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 listing tool with no output schema, the description adequately describes what is returned (profiles with density, cost, temps). It does not describe return format or pagination, but these are less critical for such a straightforward tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters and the schema is empty. The baseline for zero parameters is 4. The description adds value by specifying what data fields are returned (density, cost, temps), which is useful context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'list' and clearly identifies the resource as 'built-in filament material profiles (density, cost, temps).' It also explicitly distinguishes from sibling tools that deal with loaded materials, ensuring no confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when not to use this tool (for physically loaded material) and directs to alternative tools ('get_material' and 'get_active_material'). This is perfect usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_model_categoriesA
List available Thingiverse content categories.
Returns category names and slugs. Pass a slug to
``browse_models(category=...)`` to browse models in that category.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It states the tool lists categories (read-only behavior) and returns names and slugs. No side effects or permissions mentioned, but the operation is inherently safe and simple.
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 purpose. Every word serves a purpose, no fluff. The structure efficiently conveys purpose, output, and usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (no parameters, no output schema), the description is fully complete. It covers what the tool does, what it returns, and how to use the output with a sibling tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, and schema coverage is 100%. The description adds value by explaining the purpose of the output (slugs for browse_models), which goes beyond the schema. Baseline 3 is exceeded.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'Thingiverse content categories'. It distinguishes from siblings like browse_models by explaining that the returned slugs are used as input for that tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use the tool: to get category slugs for use with browse_models. It does not exclude other uses, but the context is clear and helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_multi_material_addonsA
List available multi-material add-on systems for 3D printers.
Returns a catalog of optional multi-material add-ons (Creality CFS,
Mosaic Palette, Co Print KCM, 3D Chameleon, Elegoo CANVAS) with
their tool change times, color capacity, and compatibility info.
When a ``printer_id`` is provided, only add-ons compatible with
that printer are returned. Universal add-ons (Palette, Chameleon)
appear for all printers. Klipper-only add-ons (KCM) appear only
for Klipper-based printers.
Use the returned ``id`` values as the ``tool_changer_addon``
parameter in ``estimate_before_design`` to model multi-material
prints on printers that don't have a built-in tool changer.
:param printer_id: Optional printer model to filter by compatibility
(e.g. ``"k1"``, ``"ender3"``, ``"voron_2"``).
| Name | Required | Description | Default |
|---|---|---|---|
| printer_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description fully discloses behavior: returns catalog with specific fields, filtering logic, and universal vs. Klipper-only add-ons. No side effects or auth mentioned, but acceptable for a read-only list 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?
Description is concise and well-structured with a clear lead sentence, followed by details and usage hint. Minor redundancy between first two sentences, but not harmful.
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, but description lists what is returned (tool change times, color capacity, compatibility). Explains filtering and linking to another function. Missing details like pagination or error handling, but adequate for a simple list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% coverage, but description provides a clear definition for printer_id including examples. The single parameter is well explained beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'List' and resource 'multi-material add-on systems for 3D printers'. Differentiates from sibling list tools (e.g., materials lists) by focusing on a specific add-on category. Includes concrete examples of add-ons.
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?
Explicitly describes when to use (need add-on info) and how filtering works with printer_id. Mentions downstream use in estimate_before_design. Does not explicitly state when not to use, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_plate_objectsA
List named objects on the build plate of a Bambu .gcode.3mf file.
Parses the plate metadata embedded in .gcode.3mf files exported by
Bambu Studio or OrcaSlicer. Returns every object that was on the
plate when the file was sliced, with its name, bounding box, area,
and layer height.
Works even when the 3MF contains NO mesh geometry (common for
.gcode.3mf exports).
Bambu Studio supports multiple plates (plate_1, plate_2, etc.).
Use ``plate_number`` to select which plate to inspect. The response
includes a ``plates_available`` field listing all plate numbers found
in the archive.
Use this to discover which parts are in a multi-object file before
calling ``extract_plate_object`` to isolate one — or, if a part fails
mid-print, to get its ``label_id`` for ``skip_print_objects`` so you can
abandon just that object and save the rest of the plate.
:param file_path: Path to the .3mf or .gcode.3mf file.
:param plate_number: Which plate to inspect (1-based, default 1).
:returns: Dict with ``objects`` list (each with a ``label_id`` that
``skip_print_objects`` consumes), plate metadata (bed type,
filament colours, nozzle diameter, sequential print flag),
and ``plates_available``.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| plate_number | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that it parses embedded metadata, works without mesh geometry, and returns specific fields. No annotations are present, so description bears full burden; it adequately explains behavior without omissions.
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?
Well-structured with clear sections, concise language, and effective use of backticks. Every sentence adds value and the description is front-loaded with the core 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?
Given no output schema, the description thoroughly details the return value structure (objects list with label_id, plate metadata, plates_available). Contextual integration with sibling tools is shown, making it self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters are fully explained with context: file_path describes acceptable file types, plate_number explains 1-based indexing and default value. Schema coverage is 0% but description compensates completely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool lists named objects on the build plate from a .gcode.3mf file. Distinguishes from siblings like extract_plate_object and skip_print_objects by explaining how the output (label_id) feeds into those workflows.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides specific use cases: discovering parts before calling extract_plate_object or getting label_id for skip_print_objects. Also explains plate_number parameter and multiple plate support. Could be improved by explicitly stating when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pluginsA
List all discovered plugins and their status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The tool has no annotations, so the description carries the burden. It describes a read-like operation (listing), which is likely safe, but it does not explicitly state that it is non-destructive or has no side effects. Given the simplicity, this is acceptable but could be improved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no unnecessary words. It is front-loaded with the verb and resource, and every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema), the description is complete enough. It states what it lists and what information is provided (status). There are no gaps for the intended use case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, and schema coverage is 100%. The description adds the detail that it lists status, which provides meaning beyond the empty schema. Baseline 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all discovered plugins and their status. The verb 'List' and resource 'plugins' are specific, and it distinguishes from sibling list tools by focusing on plugins, which is a distinct 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 guidance is provided on when to use this tool versus alternatives. It is implied that it is used to obtain plugin information, but there is no mention of prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_printer_variantsA
Show the curated hardware variants available for a printer.
A curated profile describes a printer AS SHIPPED. When Kiln has
verified a documented hardware change — an Ender 3 whose PTFE-lined
hotend has been replaced with an E3D Revo CR, say — that
configuration is curated as a VARIANT, with its own limits, its
manufacturer source, and the preconditions that make it true.
Returns the as-shipped limits alongside each variant's, so you can
see what selecting one would change before selecting it. An empty
``variants`` map is the honest answer for a machine Kiln has not
verified a modified configuration for.
Args:
printer_model: Printer identifier (e.g. ``"ender3"``).
| Name | Required | Description | Default |
|---|---|---|---|
| printer_model | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosure. It transparently explains the return behavior: as-shipped limits alongside each variant's limits, and an empty variants map for unverified machines. It does not explicitly state read-only or side-effect-free behavior, but the 'Show' verb and content imply it.
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 multi-paragraph and somewhat verbose, but all content serves a purpose: defining 'curated profile', 'variant', and the return semantics. The Args section is clearly formatted. Could be tightened, but it is not wasteful.
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 having no output schema and no annotations, the description fully covers the tool's behavior, the meaning of variants, and the empty-map edge case. It is complete enough for an agent to confidently invoke the tool with a printer identifier and interpret the response.
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 only parameter, printer_model, is described with a concrete example ('ender3'), adding meaning beyond the bare schema type. While format and validation rules are not specified, the example sufficiently clarifies the expected identifier format for a simple single-parameter tool.
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 opening sentence uses a specific verb ('Show') and resource ('curated hardware variants available for a printer'), clearly distinguishing this listing operation from related tools like select_printer_variant. The detailed explanation of what constitutes a variant further cements the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when variants exist (after Kiln verifies a documented hardware change) and notes that an empty map is the honest answer when no variants exist. However, it does not explicitly contrast with alternative tools or state when NOT to use this tool, so it falls short of full exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_print_pipelinesA
List all available pre-validated print pipelines.
Pipelines are named command sequences that chain multiple operations
into reliable one-shot workflows (e.g. quick_print, calibrate, benchmark).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description fails to state read-only nature or output format. 'List' implies safety, but behavioral traits are minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded, no fluff. Every sentence adds value.
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 list tool, the description covers what it does and gives context (examples). Could mention the return type or typical use, but largely 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?
With zero parameters and 100% schema coverage, the baseline is 4. No additional parameter info is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all available pre-validated print pipelines' with concrete examples like quick_print and calibrate, distinguishing it from siblings that perform specific pipelines or actions.
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 usage is implied for listing pipelines, but no explicit when-to-use or alternatives are given. Given the simplicity, it suffices.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_provider_capacityB
List printers registered with connected provider integrations.
Returns all provider-side listings associated with this integration account.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose behavioral traits beyond the basic operation. No annotations are provided, so it should describe aspects like data freshness, pagination, or authentication requirements. It only says 'returns all provider-side listings' without further details.
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 two sentences, front-loaded with the main action. It is concise but could be slightly tighter by combining sentences. No superfluous 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 simple list tool with no parameters or output schema, the description provides minimal but adequate context. However, given the complexity of sibling tools and integration context, it could benefit from additional details about the return format or when to prefer this over 'find_provider_capacity'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, and schema coverage is 100% (empty). The baseline for 0 params is 4; the description does not need to explain parameters. It adds no parameter info, which is acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists printers registered with connected provider integrations, and distinguishes it from siblings like 'find_provider_capacity' (targeted search) and 'sync_provider_capacity' (sync operation). The verb 'list' is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description does not indicate prerequisites, when not to use it, or how it compares to similar tools like 'find_provider_capacity' or 'sync_provider_capacity'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_published_modelsA
List models that have been published to marketplaces.
Args:
marketplace: Filter by marketplace name (optional).
limit: Maximum number of results (default 50).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| marketplace | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states the action and optional parameters, omitting details like response format, pagination behavior, or default marketplace behavior. This is minimal transparency for a list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, consisting of a single sentence and an Args block with two parameters. No extraneous information is present, and the structure is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description covers the core purpose and parameters. However, it does not mention the return type or any limitations, which would be helpful given the lack of an output schema. It is minimally viable but not 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?
The schema has 0% description coverage, so the description adds value by explaining that marketplace is a filter and limit sets max results. This compensates for the schema's lack of parameter descriptions, though it does not specify allowed values or format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists 'models that have been published to marketplaces,' using a specific verb and resource. It distinguishes from sibling tools like search_models or browse_models by focusing on published models.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as search_models or list_cached_models. The description implicitly suggests usage for listing published models but lacks explicit contextual direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_safety_profilesA
List all available printer safety profiles.
Returns a list of profile IDs and display names from the bundled
safety database. Use with ``get_safety_profile`` to inspect limits
for a specific printer, or ``validate_gcode_safe`` to validate
commands against a printer's limits.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It states it's a list operation from a 'bundled safety database,' implying read-only. No contradictions. Lacks details on auth or rate limits, but for a simple list that's acceptable.
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?
Very concise: three sentences with no wasted words. Information is front-loaded and structured logically.
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 zero parameters, no output schema, and a straightforward operation, the description fully explains the purpose and suggests related tools. 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?
No parameters, so the description cannot add parameter meaning. Schema coverage is 100%. Baseline 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all available printer safety profiles, returning profile IDs and display names. It distinguishes itself from siblings by naming 'get_safety_profile' and 'validate_gcode_safe' as subsequent 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?
Explicitly tells when to use this tool and provides alternatives: 'Use with get_safety_profile to inspect limits' or 'validate_gcode_safe to validate commands.' This gives clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_shipping_profilesA
List saved local shipping profiles.
Args:
include_addresses: Include full contact/address fields. Defaults
to ``False`` so listing profiles does not expose personal
details unless the user is actively reviewing them.
| Name | Required | Description | Default |
|---|---|---|---|
| include_addresses | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that include_addresses defaults to False to avoid exposing personal details. No annotations exist, so description carries burden. No mention of permissions, rate limits, or return behavior beyond the parameter.
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: one for purpose, one for parameter. No extra verbiage. Front-loaded with core purpose. 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?
Lacks response format, pagination, error handling, or confirmation. With no output schema, description should explain what a 'shipping profile' contains. Adequate for its simplicity but incomplete for full agent self-sufficiency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% but the description fully explains the parameter: why it defaults to False, what it includes (full contact/address fields), and the rationale for defaulting. Adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'list' and resource 'saved local shipping profiles'. Distinguishes from sibling tools like save/delete_shipping_profile. No ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like save_shipping_profile or search tools. No when-not or prerequisite context. Implied usage is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_slicer_profilesA
List all bundled slicer profiles for supported printers.
Returns profile IDs, display names, recommended slicer, and the
minimum license tier required for each. Free-tier profiles can be
used by everyone; PRO profiles require a Kiln Pro license.
Use with ``get_slicer_profile`` to see full settings, or
``slice_model`` with printer_id for auto-profile selection.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It discloses the tool lists all bundled profiles and returns specific fields, including license tier requirements. It does not mention any edge cases, pagination, or rate limits, but for a list operation, the description is sufficiently transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at three sentences, each earning its place: first states purpose, second lists return fields, third gives usage guidance. It is front-loaded with the main purpose and uses no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple parameterless list tool, the description completely covers what the tool does and what it returns. It explains the output fields (IDs, display names, recommended slicer, license tier) and how to use the results with other tools. No missing information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema coverage is 100% (empty schema). According to guidelines, baseline is 4. The description adds no parameter information because none exist, which is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists bundled slicer profiles for supported printers, specifies the returned fields (IDs, display names, recommended slicer, license tier), and distinguishes from siblings by mentioning get_slicer_profile for full settings and slice_model for auto-profile selection.
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?
Explicitly says when to use the tool (to list all bundled slicer profiles) and provides guidance on subsequent actions: use with get_slicer_profile for full settings or slice_model with printer_id for auto-profile selection. This clearly differentiates from alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_snapshotsA
List persisted snapshots from the database.
Returns metadata for snapshots captured during print monitoring,
timelapses, or manual captures. Use this to review print history
visually or correlate snapshots with print outcomes.
Args:
printer_name: Filter by printer name.
job_id: Filter by job or timelapse ID.
phase: Filter by capture phase (e.g. "first_layer", "timelapse", "mid_print").
limit: Maximum records to return (default 20).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| phase | No | ||
| job_id | No | ||
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. States it lists snapshots and returns metadata, mentions default limit (20). Does not disclose pagination, performance, or whether it's read-only. Adequate but not comprehensive.
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?
Description is compact, with clear header, use case explanation, and bulleted args. Front-loaded purpose, no redundant 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?
No output schema, but description does not explain what metadata fields are returned. No mention of pagination or ordering. For a list tool, this is a gap, but basic usage is covered.
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 0%, but description adds brief descriptions for each parameter: printer_name, job_id, phase (with examples), limit (with default). Adds meaning beyond schema types and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'List persisted snapshots from the database' with specific verb and resource. Explains types of snapshots (print monitoring, timelapses, manual captures) and use cases (review print history, correlate with outcomes). Distinguishes from sibling tools like 'print_snapshot'.
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?
Provides guidance on when to use: 'review print history visually or correlate snapshots with print outcomes'. Does not explicitly state when not to use or suggest alternatives, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_spoolsA
List all tracked filament spools in inventory.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states 'list all' implying read-only, but fails to disclose ordering, pagination, authentication requirements, or any side effects. More detail is needed for safe usage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the action and resource, containing no extraneous words. It is appropriately concise and well-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?
Given no output schema, the description should hint at what information each spool entry contains (e.g., id, material, weight). It only says 'filament spools' without return structure, leaving the agent uncertain. However, for a simple list tool, it is minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has zero parameters, described fully by the schema (100% coverage). The description adds no parameter information, but none is needed. Baseline for 0 params is 4, and the description doesn't detract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb 'list' and resource 'tracked filament spools in inventory', clearly distinguishing it from sibling tools like add_spool and remove_spool. It accurately states the tool's purpose without any vagueness or tautology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus other list tools (e.g., list_available_materials). Since it has zero parameters, usage is straightforward, but explicit context about when to prefer this over alternatives is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_supported_materialsA
List all materials with adaptive slicing profiles.
Returns material names with their key slicing constraints (layer height limits, bridge parameters, overhang angles).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It explains the read-only nature and output, but does not disclose any potential side effects, authentication needs, or rate limits. However, for a simple listing tool, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loads the core purpose, and contains no unnecessary words. It is highly efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no output schema), the description is sufficiently complete. It covers what the tool does and what it returns. It could mention if the list is exhaustive or limited to certain materials, but this 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?
The input schema has 0 parameters, so the description is not required to explain parameters. It adds value by detailing what information is returned, which compensates for the lack of schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool lists materials with adaptive slicing profiles and specifies the return values (material names and key slicing constraints). This distinguishes it from sibling tools like 'list_materials' which likely list all materials.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing materials with adaptive slicing profiles, but does not explicitly state when to avoid this tool or mention alternatives. Sibling tools exist for general material listing, but no direct guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_trusted_printersA
Return the list of trusted printer hostnames/IPs.
Trusted printers are used to flag discovered printers that have been explicitly approved by the user, preventing spoofed-printer attacks.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It correctly implies a safe read operation by stating it returns a list, but does not disclose potential prerequisites, error conditions, or confirm that the operation has no side effects beyond reading.
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 two sentences, front-loaded with the core function, and each sentence adds value. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no parameters or output schema, the description adequately explains what it returns and why. It lacks mention of edge cases like an empty list, but otherwise 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?
The tool has zero parameters, so the description does not need to add parameter meaning. According to guidelines, 0 params gets baseline 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns the list of trusted printer hostnames/IPs, with a specific verb and resource. It also distinguishes from sibling tools like trust_printer and untrust_printer by explaining the purpose (preventing spoofed-printer attacks).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about what trusted printers are and why they are used, implicitly guiding when this tool should be called. However, it lacks explicit exclusions or comparison to alternatives like discover_printers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_webhooksA
List all registered webhook endpoints.
Returns endpoint details including URL, subscribed events, and delivery statistics.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given no annotations, the description carries full burden. It discloses that the tool returns endpoint details (URL, subscribed events, delivery statistics), which is sufficient for a read-only list operation. No side effects or safety issues are mentioned, but they are not expected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two short sentences, no redundant words, and the main action is front-loaded. Every word adds value.
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 list tool with no output schema, the description adequately explains what is returned. It is complete given the simplicity of the tool. No additional context is necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters and 100% coverage. The description adds no parameter information because none exist. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'List all registered webhook endpoints,' using a specific verb ('List') and resource ('webhook endpoints'). It distinguishes itself from sibling tools like 'register_webhook' and 'delete_webhook' by focusing on listing.
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 the tool is used to view existing webhooks, but it does not provide explicit guidance on when to use it versus alternatives or any prerequisites. It lacks 'when not to use' or comparison to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_safety_interception_rulesA
Load safety-profile rules for a printer into an active session.
Generates rules from the printer's safety profile (temperature
limits, feedrate caps, blocked commands) and adds them to the
session. Use this to reset or refresh safety rules.
Args:
session_id: Target session ID.
printer_name: Printer model for safety profile lookup.
AGENT CONTRACT: relay any ``coverage_warnings`` to the user verbatim
-- they mean the loaded rule set protects less than a full one.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | ||
| printer_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden and discloses key behaviors: it generates rules from the printer's safety profile and adds them to the session. The AGENT CONTRACT about coverage warnings adds important user-facing behavior. It could be clearer about whether existing rules are replaced or merged, but overall it provides substantial transparency.
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 well-structured with a purpose statement, usage guidance, parameter list, and agent contract. Every sentence adds value without redundancy. It is concise yet sufficiently detailed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (so return values are handled), the description covers all necessary aspects: what the tool does, when to use it, what parameters are needed, and a critical user-facing contract. No obvious gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description's Args section provides clear, concise explanations for both required parameters (session_id and printer_name), fully compensating for the schema gap and adding meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool loads safety-profile rules for a printer into an active session, specifying the exact resource and action. It distinguishes itself from sibling tools like add_interception_rule and remove_interception_rule by focusing on loading a predefined set from a safety profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this to reset or refresh safety rules,' providing a clear primary use case. While it does not list alternatives or when not to use, the context of sibling tools implies this is for bulk loading rather than individual rule manipulation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lock_safety_profileA
Lock a safety profile so agents cannot modify its limits.
Enterprise feature. When locked, community profile updates for this
printer model are rejected. Only an admin can unlock.
Args:
printer_model: Profile identifier to lock (e.g. "ender3").
| Name | Required | Description | Default |
|---|---|---|---|
| printer_model | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that locking rejects community profile updates and that only admins can unlock. This is fairly transparent for a lock operation, though it doesn't mention side effects on existing agents or reversibility beyond admin unlock.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear first sentence stating purpose, followed by relevant details about enterprise feature and admin unlock. The Args section is structured and adds value without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 required parameter, no output schema), the description is complete. It explains the purpose, usage context, and parameter semantics. No additional information is needed.
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 description adds significant value beyond the input schema. It provides an example ('e.g. 'ender3'') and clarifies that the parameter is a 'Profile identifier'. Since schema description coverage is 0%, the description compensates fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Lock a safety profile' and the resource 'safety profile', with a concise explanation of the effect ('agents cannot modify its limits'). This distinguishes it from sibling tools like unlock_safety_profile or list_safety_profiles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions it's an 'Enterprise feature' and that 'Only an admin can unlock', providing context for when this tool is applicable. It also says 'When locked, community profile updates for this printer model are rejected', which implies when not to use. However, it doesn't explicitly list alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
log_project_costA
Log a cost entry against a project.
Args:
project_id: The project ID returned by ``create_project``.
category: Cost category — ``"material"``, ``"printer_time"``,
``"fulfillment_fee"``, ``"labor"``, or ``"other"``.
amount: Cost amount in the configured currency.
description: What this cost entry is for.
printer_name: Optional printer that incurred the cost.
job_id: Optional job ID for traceability.
Requires Enterprise license.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | ||
| job_id | No | ||
| category | Yes | ||
| project_id | Yes | ||
| description | No | ||
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It does not disclose side effects (e.g., whether logging is immutable, modifies project state), permissions beyond Enterprise license, idempotency, or rate limits. The description focuses on parameters rather than behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a one-sentence summary followed by a clean Args list. Every line is informative, no fluff. It is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, no output schema, and no annotations, the description covers parameters and license requirement adequately. However, it lacks information on return values, error conditions (e.g., invalid project_id), validation behavior, or examples. This makes it minimally complete for a simple logging tool but leaves some uncertainty.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains all 6 parameters with meaningful context: category with specific enum values, amount in configured currency, optional printer_name and job_id for traceability. This adds significant value beyond the schema (which only provides names, types, and titles). Minor gaps: no format constraints on 'amount' (e.g., positive) or 'description' length.
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 'Log a cost entry against a project.' This is a specific verb ('Log') and resource ('cost entry') with clear scope ('against a project'). It distinguishes from siblings like 'create_project' (creates projects) and 'project_cost_summary' (summarizes costs).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'Requires Enterprise license' as a constraint but does not explicitly state when to use this tool vs alternatives (e.g., estimate_cost, project_cost_summary). It implies usage for recording actual costs to existing projects but lacks exclusions or guidance on alternative tools. Given the large sibling list, some differentiation would help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_team_memberA
Add, remove, or update a team member.
Enterprise feature. Manages team seats and role assignments.
Business includes 3 seats and meters to a cap of 10; Enterprise is
unlimited.
Args:
action: One of ``"add"``, ``"remove"``, ``"set_role"``, ``"list"``.
email: Member email address (ignored for ``"list"``).
role: Role for add/set_role: ``"admin"``, ``"engineer"``, ``"operator"``.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | engineer | |
| Yes | |||
| action | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool manages team seats and role assignments, and enumerates possible actions and roles. No contradictory behaviors are stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise—two sentences and a clean bullet-style args section. Every sentence adds value, with no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description could mention the return value (e.g., success message or updated member list), but the tool's purpose is clear enough for most use cases. No annotations exist to provide additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage, the description fully compensates by listing allowed values for 'action' and 'role', and explaining that 'email' is ignored for the 'list' action. This is more informative than schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Add, remove, or update a team member') and specifies the resource ('team member'). It distinguishes itself from siblings by being a dedicated team management tool, with no similar sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context ('Enterprise feature') and seat limits for Business and Enterprise tiers, helping the agent decide when to use it. It doesn't explicitly name alternatives, but sibling tools are unrelated, so this is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marketplace_diagnosticsA
Run connectivity checks against all configured marketplaces.
Performs a lightweight probe (empty search) against each connected marketplace and reports which ones are reachable. Useful for debugging download failures.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the probe is 'lightweight' and an 'empty search,' giving insight into its non-intrusive nature. It also clarifies it 'reports which ones are reachable,' indicating read-only behavior. Minor omissions include output format details, but it is sufficient for a zero-parameter tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, front-loaded with the primary action. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters or output schema, the description adequately covers the tool's function and use case. It explains the mechanism (empty search) and purpose (debugging downloads). It does not elaborate on output format, but this is acceptable for a simple diagnostic tool with no structured output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema coverage is effectively 100% (no parameters to describe). Per guidelines, the baseline for 0 parameters is 4, and the description adds no unnecessary parameter info, remaining correct and clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Run connectivity checks against all configured marketplaces' with a specific verb and resource. It distinguishes itself from siblings by focusing on marketplace reachability via a lightweight probe, which is unique among the listed tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates usage context with 'Useful for debugging download failures,' providing clear when-to-use guidance. However, it does not explicitly mention alternatives or when not to use this tool, which would elevate it to a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marketplace_infoA
Show which 3D model marketplaces are connected and available.
Returns the list of connected marketplace sources and their
capabilities (search, download support, etc.). Configure
marketplaces via environment variables.
**See also:** ``marketplace_status`` for per-credential diagnostics,
or ``marketplace_diagnostics`` for live connectivity probes.
**Safety note:** Community-uploaded models are unverified. Always
review model dimensions and preview prints before starting.
Proven, popular models with high download counts are safer choices
than untested uploads.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 discloses that the operation is a read (Show/Returns), mentions configuration via environment variables, and adds a safety note about unverified community-uploaded models. This provides good context beyond a simple listing, though no details on rate limits or permissions are given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at four sentences, with front-loaded purpose, clear structure, and no superfluous content. The safety note is separated and relevant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema), the description fully covers its purpose, configuration, alternatives, and safety considerations. It is complete and actionable for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the input schema is trivially complete (schema coverage 100%). The description does not need to add parameter details. The baseline for 0 parameters is 4, and the description adds no unnecessary information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description begins with a clear verb-resource pair: 'Show which 3D model marketplaces are connected and available.' It differentiates from sibling tools marketplace_status and marketplace_diagnostics by referencing them in the 'See also' section.
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?
Description explicitly states when to use this tool (to list connected marketplaces and their capabilities) and gives alternatives for more specific diagnostics: marketplace_status for per-credential diagnostics and marketplace_diagnostics for live connectivity probes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marketplace_statusA
Check which 3D model marketplaces are connected and available.
Returns the list of configured marketplace sources, their connection status, and whether credentials are present. Use this to verify marketplace access before searching or downloading models.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It clearly states the tool is a read-only check and describes the output (list of sources, status, credential presence). It does not discuss side effects, rate limits, or authentication, but given the tool's simplicity, this is arguably sufficient.
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 three sentences, front-loaded with the main purpose, and contains no extraneous information. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 params, no output schema), the description provides enough context to understand what it does and when to use it. It does not cover edge cases or data freshness, but these are reasonable omissions for a status check.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, and schema description coverage is 100%, so baseline is 3. The description adds no parameter-specific information, but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks which 3D model marketplaces are connected and available, and specifies the return values. However, it does not explicitly differentiate from sibling tools like marketplace_diagnostics or marketplace_info, which may have overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a concrete use case ('Use this to verify marketplace access before searching or downloading models'), but it does not mention when not to use this tool or suggest alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
match_design_componentsA
Find pre-built library components matching a design description.
Given a natural language description of what you want to build,
identifies which bundled OpenSCAD library components can be used.
Returns import lines, example usage, parameters, and guidance
for each matching component.
Examples:
"hand crank with a gear" → finds spur_gear
"box with a hinge" → finds knuckle_hinge
"mounting bracket with screw holes" → finds screw_hole
Args:
description: Natural language description of the design.
| Name | Required | Description | Default |
|---|---|---|---|
| description | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It states what the tool returns but does not disclose side effects, authentication needs, rate limits, or whether it is read-only. The lack of behavioral disclosure is a gap for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is reasonably concise and front-loaded with the purpose. It includes examples in a structured list. A minor improvement would be to trim the initial repetition of the purpose in the first two lines.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the return value (import lines, example usage, parameters, guidance) and gives examples. Without an output schema, this is adequate. Missing error handling or limitations, but sufficient for a simple one-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter 'description' is explained as 'Natural language description of the design' and illustrated with examples. Given that the schema has 0% coverage (no parameter descriptions), the description compensates effectively.
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 'Find pre-built library components matching a design description' and elaborates on returning import lines, example usage, and parameters. Examples clarify the input-output mapping. It distinguishes from sibling tools like list_design_components and match_design_requirements by focusing on natural language matching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for finding components from a design description but does not explicitly state when to use it versus alternatives (e.g., list_design_components). No when-not-to-use guidance is provided, leaving the agent to infer context from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
match_design_requirementsA
Identify which functional requirements apply to a design task.
Scans natural language for requirement triggers (load bearing,
watertight, outdoor, food safe, heat resistant, flexible, impact
resistant, precision, aesthetic) and returns matched constraint
sets with rules and guidance.
Use this to understand WHAT constraints apply before getting
the full design brief.
Args:
description: What the object needs to do (e.g. "outdoor
hook that holds a heavy hanging planter").
| Name | Required | Description | Default |
|---|---|---|---|
| description | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It describes scanning for triggers and returning results, but does not disclose side effects, authorization needs, or rate limits. The description is adequate but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the purpose, and includes a helpful example. It is well-structured without wasted words, though minor reduction could make it even terser.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has one parameter and no output schema. The description mentions returning 'matched constraint sets with rules and guidance' but does not detail the structure of the output. This is adequate for a simple tool but leaves some ambiguity about the return format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has only one parameter 'description' with 0% schema description coverage. The tool description compensates by explaining the parameter's meaning: 'What the object needs to do' and provides an example ('outdoor hook that holds a heavy hanging planter'). This adds significant value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: identifying functional requirements from a natural language description of a design task. It lists specific requirement triggers and indicates the output is matched constraint sets with rules and guidance. This distinguishes it from siblings like 'analyze_design_requirements' by focusing on scanning language for triggers.
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 says 'Use this to understand WHAT constraints apply before getting the full design brief,' implying it is a preliminary step. However, it does not explicitly state when not to use it or mention alternatives, leaving room for ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_mesh_filesA
Combine multiple STL files into a single mesh file (simple concatenation).
For positioning parts with x/y/z offsets, use ``merge_stl`` instead.
Useful for composing multi-part designs into one printable file.
:param file_paths: List of STL file paths to merge.
:param output_path: Destination path for the merged file.
:returns: Dict with merge statistics.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| file_paths | Yes | ||
| output_path | Yes |
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 discloses important behavioral traits: the operation is simple concatenation (no positioning logic), and it opens an interactive 3D stage on success, with automatic decimation of oversized meshes for display. This goes beyond the basic operation and manages expectations about the inline viewer and preview 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?
The description is well-structured: it opens with a clear one-line summary, immediately provides usage guidance, then lists the parameters in a compact docstring format, and ends with an explanatory note about the 3D stage. It is mostly front-loaded with the most critical info (what it does and when to use an alternative). The note about the 3D stage is a bit verbose but adds useful context about a side effect that could surprise the user.
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 that there is no output schema, the description mentions that the tool returns a dict with merge statistics, which covers the return value. It also explains the side effect (opening the 3D stage) and notes that oversized meshes are decimated. The description covers the tool's core purpose, parameters, alternatives, and side effects. It could mention error handling or file format limitations, but for a relatively simple concatenation tool, it is reasonably 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?
The input schema has 2 parameters with 0% description coverage, meaning the schema only provides type information (array of strings, string) without descriptions. The description adds a sentence listing `file_paths` and `output_path` and explains their roles ('List of STL file paths to merge', 'Destination path for the merged file'). This is basic but adequate; it doesn't add details like accepted formats, file size limits, or path resolution rules. The description does not fully compensate for the schema's lack of detail, 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 clearly states the tool's function: 'Combine multiple STL files into a single mesh file (simple concatenation)'. It uses a specific verb (Combine), resource (STL files), and clarifies the scope (simple concatenation). It also distinguishes itself from the sibling tool `merge_stl`, which handles positioning with x/y/z offsets. This is a precise, unambiguous purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly guides usage: 'For positioning parts with x/y/z offsets, use ``merge_stl`` instead.' This directly points to an alternative tool and clarifies when not to use this one. It also adds context that this is useful for 'composing multi-part designs into one printable file', giving a clear use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_multicolor_gcodeA
Merge separately-sliced gcode files into one multi-tool gcode.
Uses a batched strategy that minimises tool changes for multi-color
prints. Parts with overlapping Z ranges are printed in tool order
within the overlap zone, then remaining layers continue above.
This is the key step between slicing individual parts and wrapping
as a Bambu 3MF. The merged gcode contains T0/T1/... tool change
commands that ``wrap_gcode_as_3mf`` converts to M620/M621 AMS
load sequences.
**Precondition:** Parts must be **XY-disjoint** (non-overlapping
footprints on the build plate). The batched merge prints each
tool's layers independently in the overlap zone — overlapping XY
regions will cause collisions.
Args:
parts: JSON array of part objects. Each must have:
- ``gcode_path``: Path to the sliced ``.gcode`` file.
- ``tool_index``: Tool number (0, 1, ...) for AMS mapping.
- ``name``: Human-readable name (e.g. ``"body_grey"``).
Example::
[
{"gcode_path": "/path/body.gcode", "tool_index": 0, "name": "body"},
{"gcode_path": "/path/qr.gcode", "tool_index": 1, "name": "qr_pads"}
]
output_path: Output file path. Defaults to a temp directory.
Returns a dict with ``output_path``, merge phases, layer count,
and estimated print time.
| Name | Required | Description | Default |
|---|---|---|---|
| parts | Yes | ||
| output_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It details the batched merge strategy, tool change commands, and output contents. It discloses the precondition and limitation about XY overlap. It doesn't mention destructiveness or authentication needs, but for a file merge tool, the behavior is well explained.
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?
Well-structured with bold preconditions, a clear example, and sections. The description is front-loaded with purpose and strategy. Every sentence adds value without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers behavior, parameters, preconditions, output, and relationship to sibling tool wrap_gcode_as_3mf. Lacks error handling or edge cases, but for a file merge tool with no output schema and no annotations, it is remarkably thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description fully compensates. The Args section thoroughly explains both parameters: parts (JSON array with required fields gcode_path, tool_index, name, including an example) and output_path (default behavior). It adds meaning far beyond the schema's property definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool merges separately-sliced gcode files into one multi-tool gcode, with a specific batched strategy for multi-color prints. It distinguishes itself from sibling tools like wrap_gcode_as_3mf by describing this as the key intermediate step.
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?
Explicitly states the use case (between slicing and 3MF wrapping) and preconditions (XY-disjoint parts). It warns about overlapping XY regions causing collisions, providing clear when-not-to-use guidance. However, it does not list alternative tools or scenarios where this tool is inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_stlA
Merge multiple STL files into a single mesh (supports positional offsets).
Use this when you need to position parts relative to each other.
For simple concatenation without positioning, ``merge_mesh_files`` also works.
Combines triangle data from multiple STL files into one output file.
Optionally translates each part to a specified position before merging.
:param file_paths: JSON array of STL file paths.
:param output_path: Where to write the merged STL.
:param positions: Optional JSON array of {"x", "y", "z"} offsets per file.
:returns: Dict with output_path, total_triangles, bounding_box.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| positions | No | ||
| file_paths | Yes | ||
| output_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the merging behavior, optional translation, return value shape, and a notable side effect: opening an interactive 3D stage and decimating oversized meshes for display. It stops short of describing error cases or file overwrite behavior, but the disclosed details are substantial and useful.
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 well-organized with a summary line, usage guidance, parameter documentation, return type, and side-effect note. A little redundancy exists ("Combines triangle data" and "Optionally translates each part" restate earlier points), but overall every section earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description appropriately includes the return dictionary fields. It also covers the inline 3D stage side effect and distinguishes the tool from its closest sibling. It could be more complete by specifying coordinate units or behavior when positions are omitted, but it is sufficiently complete for an agent to invoke the tool 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?
The input schema only provides parameter names, types, and a default, with 0% schema coverage. The description compensates fully by explaining `file_paths` as a JSON array of STL paths, `output_path` as the write target, and `positions` as an optional JSON array of {"x","y","z"} offsets per file. This adds meaningful semantic 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?
The opening sentence clearly states the tool's function: "Merge multiple STL files into a single mesh (supports positional offsets)." It uses a specific verb and resource, and explicitly differentiates itself from the sibling tool `merge_mesh_files` by noting the positioning capability.
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 direct usage guidance: "Use this when you need to position parts relative to each other" and "For simple concatenation without positioning, `merge_mesh_files` also works." This explicitly names an alternative and clarifies when each tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mesh_quality_scorecardA
Assess a model — a graded scorecard for a mesh, an intake report for a CAD file.
**For a mesh** (.stl, .obj, .glb) it evaluates four dimensions:
- **Printability** (35%): overhangs, manifold, support needs
- **Structural** (25%): aspect ratio, base stability, component count
- **Efficiency** (20%): fill ratio, support waste
- **Quality** (20%): triangle density, degenerate count
and returns per-factor scores, an overall 0-100 score, and a
letter grade (A-F). ``subject`` is ``"mesh"``.
**For a CAD file** (.step, .stp) it returns an INTAKE REPORT and
deliberately no letter grade. ``subject`` is ``"cad_file"``,
``grade`` is null, and ``grade_withheld`` says why: 20% of that
score measures Kiln's own tessellation, so the identical part
would grade differently depending on which converter is installed
on the machine that read it. Instead you get three bands:
- ``exact`` — read from the user's file by the CAD kernel:
volume, surface area, envelope, validity, solid/shell/face
counts, in mm. These match their CAD package to the decimal
and are the numbers to quote back to them.
- ``measured`` — what genuinely needs triangles (overhangs,
stability, floating parts), with the conversion named and this
part's own conversion difference stated.
- ``about_our_copy`` — triangle and degenerate counts for Kiln's
generated mesh, as counts, never scored.
When quoting a CAD part's size to a user, quote ``exact`` —
``about_our_copy`` describes Kiln's mesh, not their design.
:param file_path: Path to a mesh (.stl, .obj, .glb) or a CAD file
(.step, .stp).
:returns: Dict with scores and a grade for a mesh; the three-band
intake report with ``grade: null`` for a CAD file.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It thoroughly discloses behavior: it explains for meshes the scoring dimensions and weights, and for CAD it details the three-band output, the reason grade is null (converter-dependent tessellation), and that 'about_our_copy' counts are never scored. This is exceptionally transparent, even explaining measurement methodology.
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 long but highly structured with bullet points, bold labels, and clear sections. Every sentence adds value, covering two distinct use cases and their outputs. It could be slightly shortened, but the thoroughness justifies the length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, so the description must fully describe returns. It does so exhaustively: for meshes, it lists dimensions, weights, and grade; for CAD, it details all three bands and their contents. It also covers edge cases like null grade and the difference between measured and exact data. Nothing is left unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Though the schema provides no parameter descriptions (0% coverage), the description compensates fully by explaining file_path accepts mesh or CAD file extensions (.stl, .obj, .glb, .step, .stp). This adds concrete format guidance beyond the bare schema, which is essential for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly distinguishes two modes: mesh assessment and CAD intake report. It specifies the exact verbs ('assess', 'returns a graded scorecard', 'returns an intake report') and the resource inputs (.stl, .obj, .glb vs .step, .stp). The purpose is unambiguous and distinct from siblings, as it is the only tool focused on quality scoring.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly explains when to use for meshes and CAD files, and provides critical usage guidance such as quoting 'exact' measurements for CAD parts. It warns against using 'about_our_copy' for user-facing sizes and explains why grade is withheld, giving clear context on when to expect a grade vs an intake report.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mirror_mesh_modelA
Mirror (reflect) a mesh along an axis.
Creates a mirror image by negating coordinates on the chosen axis
and reversing triangle winding order to preserve correct normals.
:param file_path: Path to the STL file.
:param axis: Axis to mirror ("x", "y", or "z", default "x").
:param output_path: Output path (defaults to overwriting input).
:returns: Dict with mirror info.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| axis | No | x | |
| file_path | Yes | ||
| output_path | No |
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 that winding order is reversed, output_path defaults to overwriting the input, the inline 3D stage is opened, and oversized meshes are decimated. This adds meaningful behavioral context beyond the core operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, then explains behavior in two clear paragraphs. The inline 3D stage paragraph is slightly verbose but provides necessary context about preview behavior and decimation. No wasted words, but could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and absence of annotations/output schema, the description covers the key aspects: the operation, parameter semantics, default overwrite behavior, and post-success UI behavior. It omits error conditions and output dict structure details, but overall it is substantially complete for a mesh mirroring tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides parameter-by-parameter details that exceed the schema: it explains that file_path is the STL file, axis must be 'x', 'y', or 'z' with default 'x', and output_path defaults to overwriting the input. This semantic context is critical because schema coverage is 0%.
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 opens with a specific verb and resource: 'Mirror (reflect) a mesh along an axis.' It clearly states the operation and differentiates from sibling tools like rotate_model or rescale_model by focusing on reflection and normal preservation.
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 tool's purpose is clear and implies when to use it (when a mirrored mesh is needed), but it does not explicitly state when not to use it or mention alternatives. It lacks explicit exclusions or comparisons to sibling tools, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
model_detailsA
Get full details for a Thingiverse model.
Args:
thing_id: Numeric thing ID (from ``search_models`` results).
Returns comprehensive metadata including description, instructions,
license, tags, and file count.
| Name | Required | Description | Default |
|---|---|---|---|
| thing_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full burden. It states that the tool returns comprehensive metadata including description, instructions, license, tags, and file count. It does not disclose if it's read-only or any side effects, but for a data retrieval tool this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two short paragraphs. The first line gives the summary, and the second adds parameter details and output content. No redundant 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 simple one-parameter tool with no output schema, the description covers purpose, parameter source, and output content. It does not mention return format or error handling, but it is complete enough for an agent to use 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?
The single parameter thing_id is described as 'Numeric thing ID (from search_models results)', which adds essential context beyond the schema type and requirement. It tells the agent where to obtain the value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get full details for a Thingiverse model' with a specific verb and resource. It distinguishes from sibling tools like search_models by specifying that it uses a numeric thing_id from search results.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage pattern: use thing_id from search_models results. It does not explicitly contrast with other model-related siblings like model_files or get_cached_model, but the guidance is sufficient for the primary use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
model_filesA
List downloadable files for a Thingiverse model.
Args:
thing_id: Numeric thing ID.
Returns a list of files with name, size, and download URL.
Use ``download_model`` with the ``file_id`` to save a file locally.
| Name | Required | Description | Default |
|---|---|---|---|
| thing_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description adequately discloses that the tool is read-only (lists files, no side effects). It specifies return fields but does not detail potential errors or limitations (e.g., authentication requirements, pagination).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: three sentences covering purpose, arguments, returns, and a usage hint. No filler or repetition, and information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and lack of output schema or annotations, the description adequately explains what the tool does and returns. It could mention potential failure modes (e.g., invalid thing_id) but is sufficient for basic usage.
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 description adds minimal meaning to the parameter 'thing_id' by stating it is a 'Numeric thing ID', which is redundant given the schema type 'integer' and 0% schema description coverage. It could include more context (e.g., 'The ID of the Thingiverse model').
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists downloadable files for a Thingiverse model, with a specific verb ('List') and resource ('downloadable files'). It distinguishes from sibling tools like 'download_model' by describing its output as a list and referencing 'download_model' for the actual file download.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (before downloading) and explicitly references 'download_model' as the next step. However, it does not provide explicit when-not-to-use or alternative tools for similar tasks (e.g., 'model_details' for metadata).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
model_revenueB
Get revenue summary for a specific model.
Args:
model_id: File hash or listing ID of the model.
| Name | Required | Description | Default |
|---|---|---|---|
| model_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It does not disclose behaviors like authentication requirements, error handling, or that it is a read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two lines plus an argument list. Every sentence is relevant and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (1 parameter, no output schema, no annotations), the description covers the basics but lacks any indication of the return format or additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning to the single parameter 'model_id' with 'File hash or listing ID of the model', which is not present in the schema (only 'Model Id'). Schema description coverage is 0%, so this is valuable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets a revenue summary for a specific model (verb+resource+scope). It distinguishes from sibling tools like 'revenue_dashboard' by specifying 'for a specific model', but does not explicitly differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as 'revenue_dashboard' or 'record_revenue'. The description lacks context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
modify_scad_moduleA
Replace a module in OpenSCAD code with new implementation.
Finds the named module and replaces its body entirely. Use for
major modifications like redesigning a component.
Args:
scad_code: OpenSCAD source code.
module_name: Module to replace (e.g. "top_panel").
new_module_code: Complete new module code including the
module declaration and braces.
| Name | Required | Description | Default |
|---|---|---|---|
| scad_code | Yes | ||
| module_name | Yes | ||
| new_module_code | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that the module's body is replaced entirely, but does not mention prerequisites (e.g., module must exist), error handling, or side effects. It is adequate but has gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the key action, followed by a clear docstring. It is concise and well-structured, with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose and parameters, but lacks information about return value (e.g., does it return modified code?) and error conditions (e.g., module not found).Given the 3 params and no output schema, it is adequate but not 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?
The description includes a docstring explaining each parameter (scad_code, module_name, new_module_code) with examples. This adds significant meaning beyond the schema, which has no descriptions. Schema coverage is 0%, so the description compensates well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'replace' and the resource 'module in OpenSCAD code'. It provides a specific action: 'Finds the named module and replaces its body entirely.' This distinguishes it from many sibling tools, but does not explicitly contrast with all alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'Use for major modifications like redesigning a component', implying when to use it, but does not provide explicit guidance on when not to use it or mention alternative tools. It gives some context but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_printA
One-shot print status report (human-readable text: progress, temps, speed, cost, ETA).
Use for quick status checks. Returns a fixed-format text report with
progress, temps, speed, errors, cost estimate, camera snapshot, and
health commentary. For structured data + AI vision inspection, use
``monitor_print_vision``. For persistent background monitoring, use
``watch_print``.
:param printer_name: Target printer name. Omit for the default printer.
:param include_snapshot: Whether to capture and save a camera snapshot.
:param brief_id: Optional saved-goal id from ``design_session``. When
the brief resolves, the report appends a single ``Goal:`` line
with the design's duty and environment — so the agent watching
a print can answer "is this the right design for the goal?"
without a separate lookup. Best-effort: a missing kiln-pro
install or an unresolvable brief silently skips the line.
| Name | Required | Description | Default |
|---|---|---|---|
| brief_id | No | ||
| printer_name | No | ||
| include_snapshot | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that it is one-shot, returns a fixed-format text, includes snapshot behavior, and notes best-effort behavior for brief_id (silent skip on failure). It does not explicitly state read-only nature, but 'status report' strongly implies no side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear purpose sentence, usage guidance, and parameter documentation. Every sentence adds value with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 optional parameters and an output schema, the description covers purpose, usage, return format (progress, temps, speed, errors, cost estimate, camera snapshot, health commentary), parameter behaviors, and distinguishes two sibling tools. The presence of an output schema means return structure is covered elsewhere.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters (printer_name, include_snapshot, brief_id) are explained with meaningful context beyond the schema's bare titles. The :param lines clarify defaults and behavior (e.g., 'Omit for default', 'Best-effort: a missing kiln-pro install... silently skips the line'). Schema coverage is 0%, so description fully compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a 'one-shot print status report' returning human-readable text with specific fields. It distinguishes itself from two sibling tools: monitor_print_vision (structured data + AI vision) and watch_print (persistent monitoring).
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?
Explicitly states 'Use for quick status checks' and provides when-not-to-use guidance with alternatives: 'For structured data + AI vision inspection, use monitor_print_vision. For persistent background monitoring, use watch_print.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_print_visionA
Snapshot + structured data for AI visual inspection of an in-progress print.
Use when analyzing camera images for print failures. Returns webcam image
(base64 or saved file) alongside structured metadata (temps, progress,
phase, cost estimate, failure hints). Can auto-pause on detected issues.
For a quick text status report, use ``monitor_print`` instead.
For persistent background monitoring, use ``watch_print``.
Args:
printer_name: Target printer. Omit for the default printer.
include_snapshot: Whether to capture a webcam snapshot (default True).
save_snapshot: Optional path to save the snapshot image.
failure_type: Optional detected failure type (e.g. "spaghetti",
"layer_shift", "warping"). Reported by the agent after visual
inspection of a previous snapshot.
failure_confidence: Confidence score (0.0-1.0) of the failure detection.
auto_pause: If True, automatically pause the print when a failure is
detected with confidence >= 0.8. Defaults to the value of the
``KILN_VISION_AUTO_PAUSE`` environment variable (default False).
| Name | Required | Description | Default |
|---|---|---|---|
| auto_pause | No | ||
| failure_type | No | ||
| printer_name | No | ||
| save_snapshot | No | ||
| include_snapshot | No | ||
| failure_confidence | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses key behavioral traits: returns a webcam image (base64 or saved file) alongside structured metadata (temps, progress, phase, cost estimate, failure hints) and can auto-pause on detected issues. This is comprehensive for transparency.
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 well-structured with a summary, usage pointers, and parameter list. It is slightly lengthy but every sentence adds value. Minor redundancy could be trimmed, but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, no annotations, and no output schema, the description covers all necessary aspects: purpose, usage, parameter semantics, behavioral traits, and expected return values. An agent can confidently select and invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, meaning the description must compensate. It provides detailed explanations for all 6 parameters, including defaults (e.g., include_snapshot default True) and context (e.g., auto_pause defaults to an environment variable). This fully adds meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Snapshot + structured data for AI visual inspection of an in-progress print.' It contrasts with sibling tools by directing to 'monitor_print' for text status and 'watch_print' for persistent monitoring, thus distinguishing itself effectively.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'Use when analyzing camera images for print failures.' It also provides explicit alternatives for related tasks, such as 'monitor_print' for a quick text status and 'watch_print' for persistent background monitoring, offering clear usage boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
multi_color_copiesA
Print multiple copies of the same model, each in a different AMS color.
Takes a single model file and produces a multi-color print where each
copy uses a different AMS filament slot. Perfect for "print 4 lids
in 4 different colors" workflows.
**Auto-detect mode** (default): omit *copies*, *ams_slots*, and
*colors* — the tool queries the AMS, finds all loaded trays matching
*material*, and prints one copy per loaded tray.
**Manual mode**: specify *ams_slots* (and optionally *colors*) to
choose exactly which AMS trays to use and how many copies.
Requires PrusaSlicer or OrcaSlicer installed locally. The printer
must be idle and have an AMS with loaded filament.
The emitted 3MF (``multi_color_3mf`` in the result) also opens in
Bambu Studio, which keeps the per-copy colors but re-derives print
settings itself — the result's ``slicer_note`` explains this; relay
it to the user when handing over the file.
:param model_path: Path to the model file (STL or OBJ).
:param copies: Number of copies. Auto-detected from AMS if omitted.
:param ams_slots: Explicit AMS slot indices (0-based) per copy.
E.g. ``[0, 1, 2, 3]`` for all 4 AMS Lite trays.
:param colors: Hex color strings per copy for slicer preview.
E.g. ``["#FF0000", "#00FF00", "#0000FF", "#FFFF00"]``.
Auto-read from AMS if omitted.
:param material: Material type filter for AMS auto-detect
(default ``"PLA"``). Only trays matching this type are used.
:param spacing_mm: Gap between copies on the plate (default 10 mm).
Copies are arranged side by side, centered on the plate.
:param printer_id: Printer model ID for slicer profile selection and
plate-size lookup when arranging the copies.
:param slicer_path: Explicit path to slicer binary.
:returns: Dict with print result, object details, and AMS mapping.
| Name | Required | Description | Default |
|---|---|---|---|
| colors | No | ||
| copies | No | ||
| material | No | PLA | |
| ams_slots | No | ||
| model_path | Yes | ||
| printer_id | No | ||
| spacing_mm | No | ||
| slicer_path | No |
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 — and it delivers. It discloses environment requirements (slicer binary, idle printer, loaded AMS), side effects (none to hardware; produces a 3MF), the Bambu Studio behavior of re-deriving print settings, and the requirement to relay the 'slicer_note' to the user. This goes beyond typical transparency and is highly actionable for the agent.
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 long but meticulously structured: intro, realistic use case, bolded mode headers, prerequisites, cross-slicer caveat, then a cleanly formatted :param: block. Every sentence earns its place; even the Bambu Studio note and slicer_note handoff serve the agent's decision-making. Excellent use of formatting for scanability.
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 tool (8 parameters, 2 modes, no output schema, and 300+ sibling tools to disambiguate from), the description is remarkably complete: it covers mode selection logic, environment requirements, result shape (3MF, slicer_note, AMS mapping), and even user-handoff instructions. The only minor gap is no explicit return-value details, but the :returns: line plus the mention of 'slicer_note' provides reasonable coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the docstring shoulders full responsibility and succeeds: all 8 parameters are documented with type info, semantics, defaults, and concrete examples (e.g., ams_slots [0,1,2,3] and color hex strings). It fully compensates for the schema's lack of description, providing more than the input schema alone ever could.
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 opens with a specific verb-resource pairing ('Print multiple copies of the same model, each in a different AMS color') and immediately grounds it with a concrete 'print 4 lids in 4 different colors' use case. It clearly distinguishes this tool from the large sibling set (e.g., multi_copy_print, multi_material_print) by scoping to AMS-slot-per-copy workflow and references specific prerequisite slicers.
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 clear, contextual usage guidance via two modes ('Auto-detect mode' vs 'Manual mode') and when to pick each, plus environment prerequisites (PrusaSlicer/OrcaSlicer installed, idle printer with AMS loaded). However, it never explicitly names alternative sibling tools for disambiguation or states when NOT to use this tool — so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
multi_copy_printA
Print multiple copies of a model arranged on one build plate.
Automatically arranges copies in a grid with spacing so they don't
overlap, slices the plate as a single job, and prints.
Uses PrusaSlicer's ``--duplicate`` flag when available (handles placement,
collision avoidance, and travel optimization). Falls back to STL mesh
duplication for OrcaSlicer or when fine control is needed.
Requires a slicer (PrusaSlicer or OrcaSlicer) installed locally.
The printer must be idle and connected.
Args:
model_path: Path to input model (STL, OBJ).
copies: Number of copies to print (2-20).
printer_name: Registered printer name in fleet.
printer_id: Printer model ID for auto-profile selection.
spacing_mm: Gap between copies in mm (default 10).
overrides: JSON string of slicer parameter overrides.
slicer_path: Explicit path to the slicer binary.
| Name | Required | Description | Default |
|---|---|---|---|
| copies | Yes | ||
| overrides | No | ||
| model_path | Yes | ||
| printer_id | No | ||
| spacing_mm | No | ||
| slicer_path | No | ||
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It details key behaviors: automatic grid arrangement, slicer selection (PrusaSlicer with --duplicate flag, fallback to OrcaSlicer), and prerequisites. It does not cover failure modes or side effects (e.g., file creation), but covers core behavior well.
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 well-structured: a concise opening sentence, followed by behavioral details, then a labeled parameter list. It is slightly longer than necessary but every sentence adds value. A bulleted or more compact format could improve scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description adequately covers inputs, process, and prerequisites. It lacks explicit mention of return value (e.g., job ID or success status) and error handling, but for a print action tool, the core flow is sufficiently described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description fully compensates by explaining each parameter's purpose, including format (e.g., STL, OBJ), range (copies 2-20), default (spacing 10mm), and nullable fields. This adds significant value beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: printing multiple copies of a model on one build plate with automatic arrangement. It distinguishes itself by detailing the slicer-specific behavior and fallback mechanism, making it distinct from siblings like 'multi_color_copies' or 'arrange_parts_on_plate'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: when multiple copies are needed, with prerequisites (slicer installed, printer idle and connected). However, it does not explicitly mention when not to use this tool or list alternative tools for similar tasks, though the specificity of the tool makes this less critical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
multi_material_printA
Print multiple objects in different materials/colors on one build plate.
Takes a JSON array of objects, each with a model file and material
assignment. Builds a multi-material 3MF file with per-object filament
assignments, slices it, auto-maps materials to AMS slots, and prints.
This is how you print "object A in red PLA, object B in black PETG"
in a single print job.
Example: Print a bracket in PETG and a cover in PLA::
multi_material_print(
objects_json='[
{"file_path": "/path/to/bracket.stl", "material_id": "petg"},
{"file_path": "/path/to/cover.stl", "material_id": "pla"}
]',
printer_name="my_bambu",
printer_id="bambu_a1",
)
Each object in the JSON array supports:
- ``file_path`` (required): Path to STL/OBJ/GLB mesh file.
- ``material_id`` (required): Material identifier (e.g. ``"petg"``).
- ``name`` (optional): Display name for the object.
- ``color`` (optional): Hex color override (e.g. ``"#FF0000"``).
- ``group`` (optional): Objects sharing a group index are placed
coincident (for meshes that share one coordinate space, like a
body and its inlay). By default every object is its own group
and gets its own spot on the plate.
The tool automatically:
1. Looks up each material's properties (temps, colors)
2. Arranges the objects side by side on the plate (per ``group``)
and builds a multi-object 3MF with per-object material assignments
3. Generates merged slicer overrides (uses the highest-temp material)
4. Checks AMS slots for matching materials
5. Slices and prints with correct AMS mapping
Requires PrusaSlicer or OrcaSlicer installed locally.
The emitted 3MF (``multi_material_3mf`` in the result) also opens in
Bambu Studio, which keeps the per-object materials but re-derives
print settings itself — the result's ``slicer_note`` explains this;
relay it to the user when handing over the file.
Args:
objects_json: JSON array of objects with ``file_path`` and
``material_id`` keys (see example above).
printer_name: Registered printer name in fleet.
printer_id: Printer model ID for profile selection.
auto_ams: Auto-detect AMS slot mapping (default ``True``).
extra_overrides: Additional slicer overrides JSON.
slicer_path: Explicit path to slicer binary.
| Name | Required | Description | Default |
|---|---|---|---|
| auto_ams | No | ||
| printer_id | No | ||
| slicer_path | No | ||
| objects_json | Yes | ||
| printer_name | No | ||
| extra_overrides | No |
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 thoroughly explains the automatic steps (material lookup, arrangement, slicer overrides, AMS slot checking, slicing/printing) and clearly notes the requirement for PrusaSlicer or OrcaSlicer locally. It even discloses the Bambu Studio compatibility nuance and the slicer_note field, which is exceptional transparency for a complex operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every section earns its place: the intro, example, object field specification, automated steps, prerequisites, and args list are all directly useful. The use of code blocks and bullets enhances readability without being redundant. It is well-structured for a tool with this complexity.
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 multi-step tool with no output schema, the description is remarkably complete. It covers prerequisites, parameter details, the exact JSON structure, the automated pipeline, output fields (multi_material_3mf, slicer_note), and even how to handle the artifacts (relay slicer_note to the user). The content fully equips an agent to invoke the tool correctly and understand the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description fully compensates with a dedicated Args section and an in-depth explanation of the objects_json structure, including required and optional fields with examples. It goes beyond the schema's bare type definitions by explaining the meaning and usage of every parameter, including the group behavior for coincident placement.
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 opens with a clear statement of purpose: 'Print multiple objects in different materials/colors on one build plate.' It then elaborates with a concrete example ('object A in red PLA, object B in black PETG'), making the tool's function unmistakable. This distinguishes it from siblings like multi_copy_print or multi_color_copies by focusing on per-object material assignment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states a use case ('This is how you print...') and walks through the process step by step. It doesn't explicitly list alternatives or exclusions, but the context is clear enough for an agent to select this tool when multi-material per-object printing is needed. The detailed example and prerequisites add practical guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
optimize_fleet_assignmentA
Assign print jobs to printers by material availability.
Each job dict should contain ``file_name``, ``material_type``,
``required_grams``, and optionally ``color``. Returns optimal
printer assignments that minimise spool swaps and prefer
colour matches.
Args:
jobs: List of job dicts to assign.
| Name | Required | Description | Default |
|---|---|---|---|
| jobs | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the optimization criteria (minimize spool swaps, prefer color matches) and that the tool returns assignments (not executing them). However, it does not clarify if the tool modifies any state, requires printer locks, or handles edge cases like insufficient materials.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: a single-line summary followed by a bullet-point parameter explanation. Every sentence adds value with no repetition. It is front-loaded with the core purpose, making it easy for the agent to quickly understand the tool's role.
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 tool with one parameter and no output schema, the description covers the input format and optimization objective. However, it fails to describe the return structure explicitly (e.g., type of assignments, mapping of jobs to printers), which is needed for the agent to parse the output 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 0% with a generic array of objects. The description adds critical meaning by specifying the expected job dict fields (file_name, material_type, required_grams, optional color) and their purpose. This compensates well for the schema's lack of detail, though it could further explain constraints on the job list (e.g., maximum size).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Assign print jobs to printers by material availability.' It specifies what the tool does (optimize assignments) and the resource (print jobs and printers), distinguishing it from siblings like 'route_print_job' which likely focuses on routing individual jobs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you have a list of print jobs to assign optimally based on material availability and color preferences. However, it does not provide explicit guidance on when not to use this tool or mention alternatives such as 'route_print_job' for single-job assignment, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
optimize_print_orientationA
Auto-rotate a mesh to minimize overhangs and maximize bed contact.
Tests multiple candidate orientations and picks the one with the
best printability score. Re-orients the mesh and places it flat
on the build plate (z_min = 0).
:param file_path: Path to the STL file.
:param output_path: Output path. Defaults to overwriting the input.
:returns: Dict with rotation angles, overhang stats, and new dimensions.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| output_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden and exceeds it. It discloses the optimization loop, the z_min=0 placement, the default overwrite behavior, the side effect of opening an interactive 3D stage, automatic decimation of oversized meshes, and explicitly notes that the PNG preview is secondary. This is far more than a basic safety profile.
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 well-structured with a clear purpose, a brief algorithm outline, a docstring-style parameter section, and a separate note about the inline 3D stage. Each part adds unique value, though the final line about the PNG preview is slightly cryptic and could be tightened. Overall it is appropriately sized without wasteful repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema and minimal annotations, the description provides a complete picture: it explains the returned dict contents (rotation angles, overhang stats, new dimensions), the side effects (3D stage, decimation), and the default file overwrite behavior. For a mesh-operation tool with two simple parameters, this level of detail is sufficient for correct selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and there are only two parameters, so the description must compensate. It does so fully: file_path is described as 'Path to the STL file,' and output_path includes the crucial default behavior ('Defaults to overwriting the input'). It also documents the return value, adding semantic meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific active verb and outcome: 'Auto-rotate a mesh to minimize overhangs and maximize bed contact.' It then explains the algorithm ('Tests multiple candidate orientations and picks the one with the best printability score') and the final disposition ('Re-orients the mesh and places it flat on the build plate (z_min = 0)'), clearly differentiating it from generic rotation or orientation-checking siblings.
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 use for automatically optimizing a mesh's orientation before printing, but it never explicitly states when to use this tool versus alternatives like auto_orient_model or rotate_model. No prerequisites, exclusions, or alternative recommendations are given, leaving the selection decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
optimize_template_paramsA
Find the structurally strongest version of a parametric template.
Sweeps each template parameter across its [min, max] range at
evenly spaced sample points, generates every combination via
OpenSCAD, runs structural analysis on each variant, and returns
the configuration with the highest structural score.
Use this when you want to **automatically** find optimal dimensions
for a functional part -- e.g. "what wall thickness and bracket
height give the strongest shelf bracket?"
:param template_id: Template ID from the design template library.
:param samples_per_param: Sample points per parameter (default 3).
:param max_variants: Maximum total variants to test (default 27).
:param constraints: JSON string of constraints, e.g.
``{"max_width_mm": 100, "max_height_mm": 50}``.
:param output_dir: Directory for generated STLs (temp dir if empty).
:returns: Dict with best_params, best_score, best_grade, best_stl_path,
variants_tested, all_scores, and summary.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| output_dir | No | ||
| constraints | No | ||
| template_id | Yes | ||
| max_variants | No | ||
| samples_per_param | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does an excellent job. It discloses the side effect of opening an interactive 3D stage, automatic mesh decimation, and the full return payload structure (best_params, best_score, best_grade, etc.). This goes well beyond basic operation and helps the agent anticipate consequences.
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 long but well-structured, beginning with a one-sentence summary, then a mechanism explanation, a usage hint, and param docs. It could be slightly tighter, but every section earns its place given the tool's complexity and the need to document side effects and return values.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex (5 params, no output schema, no annotations), yet the description covers the workflow, parameter details, return values, and even the inline 3D stage side effect. An agent has everything needed to invoke the tool correctly and understand the result without additional documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description provides :param lines for all five parameters, explaining template_id, samples_per_param, max_variants, constraints, and output_dir with a JSON constraints example. This fully compensates for the missing schema descriptions and adds meaning beyond the bare schema titles.
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 opens with a specific verb and resource: 'Find the structurally strongest version of a parametric template.' It then explains the mechanism (sweeping parameters, generating combinations, running structural analysis) and clearly distinguishes itself from siblings like analyze_structural_risks or iterate_design by focusing on automatic parameter optimization.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'Use this when you want to automatically find optimal dimensions for a functional part,' with a concrete example. It does not explicitly mention alternatives or exclusions, but the use case is clear enough to guide selection among the many sibling design tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parse_scad_parametersA
Parse parameter variables from OpenSCAD code.
Extracts named dimension variables from the top of an OpenSCAD
file, including their values, units, descriptions, and valid
ranges (if annotated in comments).
Use this after generating OpenSCAD code to discover which
parameters can be adjusted.
Args:
scad_code: OpenSCAD source code string.
| Name | Required | Description | Default |
|---|---|---|---|
| scad_code | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It describes the extraction process and output content, but does not explicitly state that the operation is read-only or non-destructive. This leaves ambiguity about side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficient with three clear sentences covering purpose, behavior, and usage context. It is front-loaded with the core action and avoids unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 param, no output schema), the description covers the main aspects. However, it does not mention the return format or any edge cases, leaving room for improvement for complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter with 0% description coverage. The description only repeats the parameter name and a generic type ('OpenSCAD source code string'), adding no additional meaning or formatting details beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Parse' and the resource 'parameter variables from OpenSCAD code', with specific details about what is extracted (values, units, descriptions, ranges). It distinguishes itself from siblings like analyze_scad_code and validate_openscad_code.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this after generating OpenSCAD code to discover which parameters can be adjusted.', providing clear context and purpose. However, it does not mention when not to use it or list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_printA
Pause the currently running print job.
Pausing lifts the nozzle and parks the head.
Heater behaviour during pause varies by firmware:
- Bambu A1 / A1 mini: the firmware sets a ~90°C hotend standby
target IMMEDIATELY on pause, regardless of slicer settings (the
bed target survives). Measured 2026-08-14 on a real A1: the
target moved 220°C -> 90°C in the same telemetry sample as the
pause, and the nozzle fell to 139°C within 114 seconds — about
0.7°C per second. This docstring previously said the drop came
"3-5 minutes into a pause", and the keep-alive was built to wait
two minutes before its first assert on the strength of that; the
measurement says the damage starts at once. A resume onto a
cooled nozzle can't extrude until it re-heats — and bed adhesion
can fail in the meantime.
- Bambu X1/P1 series: typically holds both targets, but a long
idle can still trigger cooldown.
- OctoPrint / Moonraker / Klipper: depends on firmware config;
most hold targets across pause.
To fight this, ``pause_print`` spawns a best-effort daemon thread
that re-asserts the pre-pause hotend + bed targets immediately, and
then every 2 minutes until the printer leaves the PAUSED state
(resume, cancel, error, or manual button press). This is enabled by
default. The immediate assert is the part that matters on an A1:
without it, a pause shorter than the interval got no protection at
all, which is most pauses a person actually takes.
Args:
keep_temps: When ``True`` (default), capture the pre-pause tool
and bed targets and re-assert them every ~2 minutes via a
background daemon thread. Set ``False`` to skip the
keep-alive (legacy behaviour — printer may cool during long
pauses). The keep-alive thread is idempotent: repeat
pause/resume cycles do not compound threads.
printer_name: Which printer to pause. Omit for the default
printer. Each paused machine gets its own keep-alive thread,
re-asserting its own targets on its own adapter.
Use ``resume_print()`` to continue from where the print left off — pass
the same ``printer_name`` you paused with. The keep-alive thread is
automatically stopped on that printer's resume or cancel.
| Name | Required | Description | Default |
|---|---|---|---|
| keep_temps | No | ||
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosure. It goes far beyond basic behavior: it details firmware-specific heater behavior with measured data, explains the keep-alive daemon thread, its idempotence, and when it stops. This is exceptional transparency beyond what annotations could provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence carries substantive information about behavior, firmware differences, measured data, and thread management. It is structured with clear sections (general behavior, firmware notes, keep-alive, args). While verbose, the density of unique details justifies the length; it is not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (firmware variability, temperature management, background threads) and absence of annotations and output schema, this description covers all essential aspects: what happens, why it happens, how to control it, and how to resume. It is fully self-sufficient for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain both parameters. It thoroughly explains keep_temps: default, behavior, idempotence, and what happens when False. It explains printer_name: which printer, default, and that each printer gets its own thread. The description adds substantial meaning beyond the schema's bare type/default info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Pause the currently running print job' and elaborates on the action (lifting nozzle, parking head). It distinguishes itself from siblings like cancel_print and resume_print by describing the pause action and its implications, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the behavior and how to resume (use resume_print), but does not explicitly state when to use pause versus cancel or emergency_stop. It provides context about the keep-alive behavior and firmware differences, which implicitly guides usage, but lacks explicit exclusions or alternatives beyond resume.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipeline_abortA
Abort a running or paused pipeline.
Immediately marks the pipeline as aborted. Any completed steps
are preserved in the result.
Args:
execution_id: The pipeline execution ID.
| Name | Required | Description | Default |
|---|---|---|---|
| execution_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states the action ('marks as aborted') and a key behavioral detail ('completed steps are preserved'). No annotations exist, so burden is on description. Lacks info on undo capability, permissions, or side effects, but adequate for a simple abort.
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?
Extremely concise: two sentences plus one parameter doc. Front-loaded with purpose, no filler. Every sentence 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 simple abort tool with one parameter, the description covers the purpose, effect, and parameter meaning. No output schema exists, but return value is likely straightforward. Sibling tools are many but well-differentiated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (no parameter descriptions in schema), so description adds meaning by explaining 'execution_id: The pipeline execution ID.' This goes beyond the schema's type-only definition.
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 ('Abort') and resource ('running or paused pipeline'), clearly distinguishing from sibling tools like pipeline_pause, pipeline_resume, and pipeline_status. It is precise and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for running or paused pipelines, but does not explicitly mention when not to use (e.g., already aborted or completed pipelines) or compare to alternatives like cancel_job. Still, 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.
pipeline_pauseA
Pause a running pipeline at the next step boundary.
The pipeline will finish the current step and then pause before
starting the next one. Use ``pipeline_resume`` to continue.
Args:
execution_id: The pipeline execution ID.
| Name | Required | Description | Default |
|---|---|---|---|
| execution_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even without annotations, the description provides good behavioral context: the pipeline finishes the current step before pausing, meaning it is not instantaneous. It also indicates that the pause is temporary and requires a resume call. The description does not contradict any annotations (none provided). The only missing details are error conditions (e.g., what if the pipeline is not running) or side effects, but for a simple pause action the behavior is adequately transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences plus a parameter line, efficiently conveying the tool's purpose, behavior, and next steps. It is front-loaded with the key action and uses minimal words. Every sentence serves a purpose (action, detail, follow-up, parameter explanation). No waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one required parameter, no output schema, no nested objects), the description covers the essential aspects: what it does, how it behaves, and what comes next. It references the sibling `pipeline_resume` for continuation. It does not mention prerequisites (e.g., pipeline must be running) or error states, which would be helpful but are not critical for a straightforward pause action. Overall, it is fairly complete for its complexity.
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 description includes a parameter list for `execution_id` with the text 'The pipeline execution ID.', which adds meaning beyond the schema (which has no description). Since schema coverage is 0%, the description partially compensates by naming the parameter and explaining its role. However, it does not provide details like format, how to obtain the ID, or examples. For a single required string parameter, this is acceptable but not exceptional.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Pause a running pipeline') and provides specific behavior details: it finishes the current step then pauses before the next. It also distinguishes from siblings by explicitly mentioning `pipeline_resume` to continue, and implicitly differentiates from `pipeline_abort` (which stops permanently). The combination of verb ('Pause') and resource ('pipeline') with boundary condition is precise.
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 directly states when to use the tool (to pause a running pipeline) and provides guidance on the next step ('Use `pipeline_resume` to continue'). It does not explicitly list when not to use it or compare to `pipeline_abort`, but the context of siblings and the behavioral description make the appropriate usage clear. A minor improvement would be to state that this is for temporary pauses only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipeline_resumeA
Resume a paused pipeline from where it stopped.
Continues executing from the next unfinished step.
Args:
execution_id: The pipeline execution ID.
| Name | Required | Description | Default |
|---|---|---|---|
| execution_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses core behavior: continues from next unfinished step. No annotations provided, so description carries burden. Missing details like error conditions (e.g., pipeline already running), authentication needs, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences plus an Args line. No redundant information, front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-param tool, description covers purpose, parameter, and behavior. Nearly complete but lacks prerequisites or return value info (no output schema).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage 0%, description adds minimal meaning: parameter is 'pipeline execution ID'. Does not explain format, origin, or required constraints beyond what schema's title provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool resumes a paused pipeline from where it stopped, using specific verb 'resume' and resource 'pipeline'. Distinguishes from sibling tools like pipeline_pause, pipeline_abort.
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?
Implied usage for resuming paused pipelines, but no explicit guidance on when not to use or alternatives. Lacks context like 'only use on paused pipelines' or comparison to pipeline_retry_step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipeline_retry_stepA
Retry a specific failed step in a pipeline, then continue from there.
Re-runs the step at the given index and, if it succeeds, continues
executing the remaining steps.
Args:
execution_id: The pipeline execution ID.
step_index: Zero-based index of the step to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| step_index | Yes | ||
| execution_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It explains that it re-runs the step and, if successful, continues remaining steps. However, it omits details like error handling, state requirements, or what happens if the step fails again.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: three sentences total. The first sentence gives a clear high-level purpose, followed by an Args section for parameters. Every sentence is necessary and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two required parameters and no output schema, the description covers the core behavior and parameter meanings. It lacks details on return values or error cases, but given the simplicity, it is largely 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?
Despite 0% schema description coverage, the description manually documents both parameters with meaningful roles: 'execution_id' as pipeline execution ID and 'step_index' as zero-based index. This adds value beyond the schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Retry a specific failed step in a pipeline'—a specific verb and resource. It distinguishes from sibling tools like pipeline_abort or pipeline_resume by focusing on retrying a single step, not the entire pipeline.
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 use when a step has failed and should be retried, and the context of continuing from that step is clear. However, it does not explicitly mention when not to use it or list alternative tools, though siblings are present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipeline_statusA
Get the current state of a pipeline execution.
Returns the execution state (running/paused/completed/failed/aborted),
completed steps, and the name of the next step to run.
Args:
execution_id: The pipeline execution ID returned when starting a pipeline.
| Name | Required | Description | Default |
|---|---|---|---|
| execution_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the return content and the parameter but does not discuss side effects, error handling, or any constraints. Since no annotations are provided, it carries the full burden, and while adequate, it lacks details like what happens if the execution_id is invalid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at two sentences plus one bullet, front-loaded with the core purpose, and contains no redundant or unnecessary 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 simple status check tool with one parameter, the description covers purpose, return values, and parameter guidance. It could mention that the pipeline must be running, but overall it is fairly complete and commensurate with the tool's simplicity.
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 description adds meaning to the single parameter 'execution_id' by explaining its source (returned when starting a pipeline). Since schema description coverage is 0%, this is valuable and compensates for the missing schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets the current state of a pipeline execution, specifies the return values (execution state, completed steps, next step), and distinguishes it from siblings like pipeline_abort, pipeline_pause, etc.
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 the tool is used after starting a pipeline to check status, but it does not provide explicit guidance on when to use it versus other pipeline tools, nor does it mention any prerequisites or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_assembly_splitA
Split a multi-file assembly across printers.
Assigns each file in a multi-part assembly to a different
printer for parallel printing.
Args:
file_paths: List of file paths in the assembly.
material: Material type (default ``"pla"``).
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | pla | |
| file_paths | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only describes the basic operation without mentioning side effects, state changes, prerequisites (e.g., printer locks), or if it is read-only. The agent lacks safety cues.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, with a docstring format. Every sentence provides value (purpose and parameter explanations). It could be slightly more structured but is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no output schema), the description covers the main operation and parameters. However, it lacks details on return values, synchronization, or process flow, making it minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description successfully explains both parameters: 'file_paths' as list of assembly files and 'material' with default 'pla'. This adds meaning beyond the schema's bare titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Split' and 'Assigns') and the resource ('multi-file assembly','printers'). It distinguishes from sibling tools like 'plan_multi_copy_split' by focusing on multi-file assembly for parallel printing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for multi-part assemblies for parallel printing but does not explicitly state when not to use or mention alternatives among siblings. No exclusions or context limits are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_failure_recoveryA
Generate a recovery plan for a previously detected failure.
Uses the failure ID from a prior ``detect_print_failure`` call
to look up the failure report and generate an appropriate recovery
strategy with preparation steps, parameter adjustments, and risk
assessment.
**Which recovery tool to use:**
- Have a printer_name + job_id from a failed print? → ``plan_print_recovery``
- Have a failure_id from ``detect_print_failure``? → ``plan_failure_recovery`` (this tool)
Args:
failure_id: The failure_id from a detect_print_failure result.
printer_capabilities: Optional printer capabilities dict.
safety_profile: Optional safety profile dict.
| Name | Required | Description | Default |
|---|---|---|---|
| failure_id | Yes | ||
| safety_profile | No | ||
| printer_capabilities | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It mentions the plan includes preparation steps, parameter adjustments, and risk assessment, but does not disclose whether the tool modifies any state or has side effects. Some context is given, but more could be added.
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 well-structured with a clear main sentence, followed by a bulleted decision guide. It is front-loaded with the core purpose. Slightly verbose due to formatting, but overall concise and easy 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 tool with 3 parameters, no output schema, and no annotations, the description adequately explains the tool's role, input requirements, and output structure (preparation steps, adjustments, risk assessment). It provides sufficient context for an AI agent 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 0%, so the description must compensate. It describes each parameter: failure_id as the ID from detect_print_failure, printer_capabilities and safety_profile as optional dicts. This adds basic meaning beyond the schema, but lacks format or content expectations for the dicts.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates a recovery plan for a previously detected failure, specifying the resource (failure ID from detect_print_failure) and action. It also distinguishes from plan_print_recovery, which is a sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: use this tool when you have a failure_id from detect_print_failure, and use plan_print_recovery when you have a printer_name and job_id. This clearly differentiates between the two tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_multi_copy_splitB
Plan parallel printing of multiple copies across printers.
Distributes N copies of a file across available printers in the
fleet for maximum parallelism.
Args:
file_path: Path to the G-code or model file.
copies: Number of copies to print.
material: Material type (default ``"pla"``).
| Name | Required | Description | Default |
|---|---|---|---|
| copies | Yes | ||
| material | No | pla | |
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It mentions planning and distribution but does not disclose side effects (e.g., resource reservation, state changes), auth needs, or whether it is read-only. The lack of behavioral context leaves the agent uncertain about consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two lead sentences and an 'Args' block. It front-loads purpose. Minor redundancy between first and second sentence, but overall no wasted words. Could be slightly tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (3 params, no output schema, no annotations), the description lacks critical context. It does not explain the return value (e.g., a plan ID, status), error conditions, or post-conditions. Incomplete for an agent to safely invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description's 'Args' block adds basic meaning to each parameter. File_path, copies, and material get one-line definitions. However, it does not specify formats, constraints (e.g., copies > 0), or valid material values. Adequate but not comprehensive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('plan') and resource ('parallel printing of multiple copies across printers'). It distinguishes from siblings like 'multi_copy_print' by emphasizing distribution across printers for maximum parallelism.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. The description does not mention any prerequisites, exclusions, or comparison to siblings like 'multi_copy_print' or 'plan_failure_recovery'. The agent is left to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_print_recoveryA
Plan a recovery strategy from a printer + job + failure type.
Convenience wrapper that synthesizes a :class:`FailureReport` from
the supplied args (using the latest checkpoint for the printer/job
when available) and runs it through the same planner used by
``plan_failure_recovery``.
**Which recovery tool to use:**
- Have a printer_name + job_id from a failed print? → ``plan_print_recovery`` (this tool)
- Have a failure_id from ``detect_print_failure``? → ``plan_failure_recovery``
Args:
printer_name: Name of the printer that failed.
job_id: The failed job's identifier.
failure_type: Type of failure (thermal_runaway, layer_shift,
adhesion_failure, filament_runout, nozzle_clog,
communication_loss, power_loss, blob_detected, spaghetti,
stringing, warping). Defaults to ``communication_loss``.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| failure_type | No | ||
| printer_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It explains that the tool is a convenience wrapper that synthesizes a FailureReport from supplied args using the latest checkpoint and runs the same planner as 'plan_failure_recovery'. This provides good insight into the tool's behavior, though it does not explicitly state whether the tool has side effects or is read-only.
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 well-structured with a clear first sentence, a technical detail paragraph, usage guidelines in bullet points, and an arg list. It is concise with no fluff, though the reference to a Python class (':class:`FailureReport`') may be slightly esoteric for an AI agent.
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?
While the description provides good context about when to use and how the tool works internally, it lacks information about the return value. Since there is no output schema, the description should describe what the planned recovery strategy looks like. Additionally, there is a discrepancy between the described default for failure_type ('communication_loss') and the schema default (null), which is a minor completeness issue.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the tool description provides detailed parameter descriptions for all three parameters: printer_name, job_id, and failure_type. It lists possible failure types and the default value, fully compensating for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it plans a recovery strategy from a printer + job + failure type, with a specific verb 'plan' and resource 'recovery strategy'. It distinguishes itself from the sibling 'plan_failure_recovery' by explicitly noting the different input criteria (printer_name+job_id vs. failure_id).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool versus the alternative 'plan_failure_recovery'. It includes a bulleted list with clear scenarios: 'Have a printer_name + job_id from a failed print? → plan_print_recovery' and 'Have a failure_id from detect_print_failure? → plan_failure_recovery'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plugin_infoC
Get detailed information about a specific plugin.
Args:
name: Plugin name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full burden. It only states it gets 'detailed information' without specifying what that entails, any side effects, or permissions needed. Vague.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, one sentence. However, it could be expanded slightly without losing efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and low schema coverage, the description fails to specify what 'detailed information' includes, making it incomplete for an agent to fully understand the tool's return value.
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 parameter 'name' is described as 'Plugin name,' which adds minimal value beyond the schema's title. With 0% schema description coverage, the description should explain format or constraints but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves detailed information about a specific plugin, using a specific resource. It implicitly distinguishes from 'list_plugins' but does not explicitly differentiate.
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 provided on when to use this tool versus alternatives like 'list_plugins'. No prerequisites or context given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
predict_print_failureA
Predict common 3D printing failure modes from mesh geometry.
Analyzes the mesh for thin walls, long unsupported bridges,
severe overhangs, top-heavy geometry, small features, and
non-manifold issues. Returns a risk score (0-100) and
per-failure details with fix suggestions.
:param file_path: Path to mesh file (.stl, .obj, or .glb).
:param min_wall_mm: Minimum printable wall thickness (default 0.8).
:param max_bridge_mm: Maximum unsupported bridge length (default 15).
:param max_overhang_deg: Maximum overhang angle before failure (default 55).
:returns: Dict with verdict, risk score, and failure list.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| min_wall_mm | No | ||
| max_bridge_mm | No | ||
| max_overhang_deg | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It discloses that the tool analyzes mesh geometry and returns risk scores with fix suggestions, implying read-only behavior. However, it does not mention side effects, performance, or data handling, leaving gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences stating purpose and analysis scope, followed by parameter docs. No wasted words, front-loaded with the verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description specifies the return type (Dict with verdict, risk score, failure list) and covers key inputs and behaviors. It could detail the output structure more, but it is largely complete for its complexity.
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 description includes :param documentation for all four parameters, explaining their meaning (file_path, min_wall_mm, max_bridge_mm, max_overhang_deg) and defaults. This fully compensates for the 0% schema description coverage, adding value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool predicts common 3D printing failure modes from mesh geometry and lists specific failure types. However, it does not differentiate from sibling tools like analyze_print_failure or detect_print_failure, which may have overlapping purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With many sibling tools for print failure analysis, the lack of usage context or exclusions leaves the agent without direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
predict_print_settingsA
Predict optimal print settings from historical DNA data.
Searches for exact file hash matches first, then falls back to
geometrically similar models, and finally to material defaults.
Args:
file_hash: SHA-256 hash of the model file.
geometric_signature: Geometric signature from fingerprinting.
surface_area_mm2: Surface area in mm^2.
volume_mm3: Model volume in mm^3.
complexity_score: Model complexity (0.0-1.0).
printer_model: Target printer model.
material: Target material.
geometric_signature_v2: ``fingerprint_model``'s
``geometric_signature_v2``. Pass it: without it the
prediction can be averaged over prints of a DIFFERENT
design that shares the older signature.
| Name | Required | Description | Default |
|---|---|---|---|
| material | Yes | ||
| file_hash | Yes | ||
| volume_mm3 | Yes | ||
| printer_model | Yes | ||
| complexity_score | Yes | ||
| surface_area_mm2 | Yes | ||
| geometric_signature | Yes | ||
| geometric_signature_v2 | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It discloses the core behavioral trait (prediction degrades gracefully from exact match to geometric similarity to material defaults) and explicitly warns about the v2 caveat with real consequences. It does not, however, mention whether the tool has side effects, requires prior state (like `record_print_dna` calls), or how errors are surfaced when no historical data exists.
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 well-structured: a one-sentence summary up front, a succinct algorithm note, then a clean Args block. Every sentence earns its place. It loses a small point for some awkward whitespace/indentation in the raw text and for spending its only prose sentences on already-obvious content while domain jargon like 'DNA data' goes unexplained.
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 8 parameters, no output schema, and no annotations, the description covers the algorithm and parameter semantics well. However, with 600+ siblings including extremely similar tools like `infer_print_settings`, `recommend_settings`, and `predict_print_failure`, the complete absence of any return-value description or disambiguation is a meaningful gap for an agent choosing purposes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the docstring Args section is the sole documentation, and it fully compensates: all 8 parameters are documented with clear types, units (mm^2, mm^3), ranges (0.0-1.0), and the optional `geometric_signature_v2` receives a purpose-specific note. Slight deduction because there are no format examples or valid-combination guidance for the optional parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific verb+resource ('Predict optimal print settings') and clarifies the prediction mechanism via a documented fallback chain (file hash → geometric similarity → material defaults). However, it doesn't differentiate itself from closely-named siblings like `infer_print_settings` or `recommend_settings`, and the 'historical DNA data' phrase is figurative and could be mildly confusing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly implies when different data sources are used through the fallback ordering, and provides a crucial warning about passing `geometric_signature_v2` to avoid mis-sized predictions. But it never states when to prefer this tool over the many overlapping siblings, does not give exclusions, and prerequisites (e.g., linking to `fingerprint_model` output) are only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preflight_checkA
Run pre-print safety checks to verify the printer is ready.
Checks performed:
- Printer is connected and operational
- Printer is not currently printing
- No error flags are set
- Temperatures are within safe limits
- (Optional) Material loaded matches expected material
- (Optional) Local G-code file is valid and readable
- (Optional) Remote file exists on the printer
Args:
file_path: Optional path to a local G-code file to validate before
upload. If omitted, only printer-state checks are performed.
expected_material: Optional material type (e.g. "PLA", "ABS", "PETG").
If provided and a material is loaded, checks for a mismatch.
remote_file: Optional filename to verify exists on the printer.
If provided, checks the printer's file list for a matching file.
accept_paused: When ``True``, the ``printer_idle`` check accepts
the ``paused`` state in addition to ``idle``. Used by
``start_print(resume_from_paused=True)`` for mid-print
resume 3MFs (which start from a paused-state printer).
Default ``False`` — only ``idle`` is accepted.
printer_name: Which printer to check. Omit to check the default
printer, which is what this did before it could be aimed.
The state, the temperature ceilings and the material profile
all follow the named machine — a readiness verdict is about
one printer, and it has to be the printer that will print.
Call this before ``start_print()`` to catch problems early. The result
includes a ``ready`` boolean and detailed per-check breakdowns.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | No | ||
| remote_file | No | ||
| printer_name | No | ||
| accept_paused | No | ||
| expected_material | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the exact checks performed, the effect of printer_name (state/temps/material follow the named machine), the accept_paused behavior, and the return structure (ready boolean and per-check breakdowns). This goes beyond a high-level summary and provides actionable behavioral details.
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 well-structured with a summary sentence, a bulleted checklist, and a detailed Args section. Every sentence provides needed detail; there is no fluff. The front-loaded summary gives immediate understanding of the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (5 optional parameters, no output schema) and the safety-critical nature of the checks, the description is complete. It covers what is checked, how each parameter modifies behavior, the intended usage context (before start_print), and the return value (ready boolean and breakdowns). An agent can decide when and how to invoke this tool with confidence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description exhaustively documents all five parameters: file_path, expected_material, remote_file, accept_paused, and printer_name, including defaults, optionality, and behavioral effects. It adds meaning far beyond the schema's bare type/default 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?
The description explicitly states 'Run pre-print safety checks to verify the printer is ready' and enumerates specific checks (connectivity, idle state, error flags, temperatures, optional material/file checks). This clearly distinguishes it from sibling tools like printer_status or start_print by naming the exact purpose and the expected follow-up call.
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?
Provides clear usage context: 'Call this before start_print() to catch problems early.' Also explains optional parameters and their applicability (e.g., accept_paused used by start_print with resume). However, it does not explicitly exclude alternatives among the many readiness-related sibling tools, so it lacks the when-not or explicit alternative guidance for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_ai_model_for_printA
Prepare any AI-generated model for printing — fixes the unit mix-up.
AI model generators (Meshy, Tripo, Stability, Gemini) routinely
export models in meters instead of millimeters, so a 60mm figurine
reads as 0.06mm. This tool corrects that by the real unit
conversion when exactly one explains the size — never by scaling
to an invented "reasonable" target — then runs the full validation
pipeline and provides smart recommendations for simplification
and hollowing.
Pipeline:
1. Run validate_and_prepare for baseline analysis
2. Size — scale to target_height_mm when given; otherwise
apply a unit correction only when exactly one real
conversion (meters, centimeters, inches, microns) lands
the model at a printable size. A size several units
could explain, or none can, is reported, never guessed at.
3. Mesh simplification recommendation (if > 100K triangles)
4. Smart hollow recommendation (only when appropriate)
5. Re-validate the scaled model
6. Return combined before/after comparison
Works with STL, OBJ, and 3MF files.
:param input_path: Path to the AI-generated model file.
:param target_height_mm: Desired height in mm — an instruction,
honored at any starting size. If 0, only a unit mistake is
ever fixed; the model's designed size is otherwise kept.
:param printer_id: Optional printer model ID for bed-fit checking.
:param material: Material name (default "PLA") for material checks.
:returns: Dict with original/prepared comparison, actions taken,
recommendations, and next_action for slicing.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | PLA | |
| input_path | Yes | ||
| printer_id | No | ||
| target_height_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It transparently discloses the entire workflow: validation, scaling logic, simplification/hollow recommendations, re-validation, and combined before/after comparison. It also discloses side effects, such as opening an interactive 3D stage and automatic decimation for oversized meshes. It explicitly warns that the PNG preview is not the whole experience, covering user expectations.
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 long but well-structured, with a numbered pipeline and inline bolded steps. The opening sentence is a clear summary, and subsequent details are organized. While it is extensive, every section adds necessary behavioral or procedural context, and the effective use of lists keeps it scannable. It is slightly verbose but not overly 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?
Given the tool's complexity (multi-step pipeline, unit conversion, interaction with 3D stage, return data), the description is complete. It covers all major aspects: input types, supported formats, each pipeline step, parameter semantics, return value structure, and the interactive stage behavior. There is no output schema, so the description appropriately provides the return contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description fully explains all four parameters. It provides detailed semantics for input_path, target_height_mm (with instruction that it is honored at any starting size), printer_id for bed-fit checking, and material with default 'PLA'. It also covers the return value structure. This compensates fully for the schema's bare definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Prepare any AI-generated model for printing — fixes the unit mix-up.' It specifies the target resource (AI-generated models) and the key action (unit correction), and distinguishes itself from general validation tools by mentioning the pipeline and the specific unit fix. Siblings like validate_and_prepare are broader, while this focuses on AI generator exports.
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 explains when to use it: for models from AI generators (Meshy, Tripo, etc.) that often have meter/millimeter confusion. It also clarifies the scaling logic: only applies a unit correction when exactly one real conversion fits, never guessing. It implicitly contrasts with general validation by naming specific generators and the unit-fix purpose, though it does not explicitly name alternatives like validate_and_prepare_mesh. The context is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_generated_modelA
Specialized post-generation verification renderer. For general-purpose
model viewing, use visualize_model instead. This tool adds
generation-specific checks (floating geometry, thin walls) on top of
the standard multi-angle renders.
Render a 3D model to multi-angle PNG previews for visual inspection.
**REQUIRED** before printing any generated model. You MUST call this
tool after generating a model and BEFORE printing. View ALL rendered
angles to check for:
- Missing or simplified features (e.g., plain box instead of pattern)
- Incorrect proportions or dimensions
- Floating/disconnected geometry
- Thin walls that won't print
- Overhangs that need supports
- Non-manifold artifacts
- Bottom surface not flat (check bottom view for bed adhesion)
- Elephant's foot risk on first layer
**Required workflow:**
1. Call ``generate_model`` or ``generate_model_from_image``
2. **MUST** call ``preview_generated_model`` — view ALL angles
3. If the model doesn't match the request, regenerate with refined prompt
4. Call ``validate_generated_mesh`` for structural checks
5. Only then proceed to print
Args:
file_path: Path to an STL or 3MF file to render. Colored 3MF
files are rendered with per-face colors via the PIL-based
colored renderer; STL and colorless 3MF use OpenSCAD.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool adds generation-specific checks on top of standard renders and details rendering differences based on file type (colored 3MF vs STL/colorless 3MF). It does not mention read-only nature or return format, but is fairly transparent for a rendering tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear summary, differentiation, required workflow, and parameter detail. It uses formatting (bold, bullet points) effectively. Each sentence adds value, and it is concise for the amount of information conveyed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one parameter, no output schema, and no annotations, the description covers the essential context: purpose, workflow, and parameter semantics. It does not specify return format or number of angles, but it is sufficient for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the file_path parameter as 'Path to an STL or 3MF file to render' and adds context about how different file types affect rendering, which goes beyond the schema's type constraint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a specialized post-generation verification renderer, contrasting with the general-purpose visualize_model tool. It explicitly says 'Render a 3D model to multi-angle PNG previews for visual inspection' and adds generation-specific checks, making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidelines: 'REQUIRED before printing any generated model. You MUST call this tool after generating a model and BEFORE printing.' It also outlines a required workflow with steps and lists specific checks to perform, leaving no ambiguity about when and how to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
printer_filesA
List all G-code files available on the printer.
Handles FTPS directory listing (Bambu), REST file API
(OctoPrint/Moonraker) automatically.
Returns a JSON array of file objects, each containing:
- ``name``: file name
- ``path``: full path on the printer
- ``size_bytes``: file size (may be null)
- ``date``: upload timestamp as Unix epoch (may be null)
When G-code metadata is available, files may also include:
- ``material``, ``estimated_time_seconds``, ``tool_temp``,
``bed_temp``, ``slicer``, ``layer_height``, ``filament_used_mm``
Use this to discover which files are ready to print. Pass a file's
``name`` or ``path`` to ``start_print`` to begin printing it.
For detailed metadata on a specific file, use ``analyze_print_file()``.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses handling of FTPS and REST API, return format with nullable fields, and availability of metadata. Misses rate limits or authentication but adequate for a read-only listing 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?
Description is structured with purpose, technical handling, return fields bullet list, and usage guidance. Slightly long but every sentence adds value, front-loaded with key action.
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 zero parameters and no output schema, description thoroughly describes return fields, protocol handling, and usage linking to sibling tools. Lacks error handling or performance details but sufficient for a listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters; schema coverage is 100%. Baseline for 0 params is 4. Description adds value by explaining tool purpose, return format, and usage, compensating beyond empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all G-code files available on the printer' with specific verb and resource. It distinguishes itself from 'analyze_print_file' (detailed metadata) and 'start_print' (initiating printing), and explains handling of different protocols.
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?
Explicitly says 'Use this to discover which files are ready to print' and directs to pass file name/path to 'start_print' for printing, and to use 'analyze_print_file()' for detailed metadata. This provides clear when-to-use and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
printer_snapshotA
Capture a webcam snapshot from the printer.
Handles TLS+JPEG camera protocol (Bambu A1/P1), MJPEG stream capture
(OctoPrint/Moonraker), and RTSPS (Bambu X1) automatically.
:param printer_name: Target printer name. Omit for the default printer.
:param save_path: Optional path to save the image file. If omitted, the
image is returned as a base64-encoded string.
| Name | Required | Description | Default |
|---|---|---|---|
| save_path | No | ||
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden. It discloses automatic protocol detection and the two output modes (save path or base64). However, it does not mention whether the operation is read-only, any potential side effects, or required permissions. The description covers basic functionality but lacks deeper behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise and front-loaded. The first sentence states the core purpose, followed by essential details on protocols and parameter behavior. Every sentence adds value 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?
Given the tool has two optional parameters and no output schema, the description covers the main aspects: capture action, supported protocols, and parameter behavior. However, it misses details like the image format of the base64 string or any prerequisites (e.g., printer must be online). For a tool with many similar siblings, it is reasonably complete but could be slightly enhanced.
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?
With 0% schema description coverage, the description compensates fully. It explains both parameters clearly: 'printer_name' as target (omit for default) and 'save_path' as optional save location (otherwise base64). This adds significant meaning beyond the schema's type/nullable constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool captures a webcam snapshot from the printer, specifying the verb 'Capture' and the resource. It lists supported protocols (Bambu A1/P1, OctoPrint/Moonraker, RTSPS for Bambu X1), distinguishing it from siblings like 'webcam_stream' and 'analyze_print_snapshot'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some context by detailing the automatic handling of different protocols, but it does not explicitly state when to use this tool over alternatives like 'webcam_stream' or 'monitor_print'. No usage exclusions or conditions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
printer_statsC
Get aggregate statistics for a printer: total prints, success rate, average duration.
Args:
printer_name: Name of the printer to get stats for.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description does not disclose behavioral traits such as response format, error handling, or potential side effects. It is a read operation but lacks transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences plus parameter list. Purpose is front-loaded. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema. Description lists only three example metrics, not a comprehensive set. Lacks details on return format or error conditions.
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 description repeats the parameter name 'printer_name' without adding meaning beyond the schema. With 0% schema description coverage, the description does not compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets aggregate statistics for a printer, listing specific metrics. It is a specific verb+resource combination, but does not explicitly distinguish from sibling tools like 'printer_trend_analysis' or 'printer_usage_summary'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. Among many printer-related siblings, no usage context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
printer_statusA
Get printer state, temperatures, job progress, and capabilities.
Returns a JSON object with:
- ``printer``: connection status, operational state, tool/bed temperatures
- ``job``: current file name, completion percentage, elapsed and remaining time
- ``capabilities``: what this printer backend supports (``full`` only)
Use this as the first call to understand what the printer is doing.
Args:
printer_name: Target printer. Omit for the default printer.
detail: ``"full"`` (default) for everything, or ``"lite"`` for
frequent polling during a print — same field names, but
``capabilities`` is omitted and ``printer`` is trimmed to the
readings that actually move. Both levels carry every warning.
``detail`` exists so polling and inspection share ONE vocabulary. The
retired ``print_status_lite`` returned the same numbers under different
names (``completion_pct``, ``hotend_temp``), which is why clients grew
defensive key-alias lists to read either shape.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | full | |
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so admirably. It discloses the exact return structure (printer, job, capabilities), how `lite` alters the payload, that both levels include 'every warning,' and rationalizes the design to prevent client confusion. This goes beyond generic statements and gives an agent a solid mental model of the tool's 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?
The description is well-structured with a clear opening, a 'Returns' section, and 'Args' explanations. It is longer than strictly necessary, especially the final paragraph explaining the history of `print_status_lite`, but that narrative directly supports understanding the `detail` parameter and avoids future confusion. Every sentence adds value, even if the historical note could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema and no annotations, this description is quite complete for a status tool. It covers what to expect in the response, how to interpret `detail`, and even mentions warnings. It could be slightly more exhaustive (e.g., elaborating on the 'warnings' field or edge cases), but for a first-call tool it provides all necessary context for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage, the description fully documents both parameters. It explains `printer_name` (omit for default) and `detail` (accepted values, defaults, and behavioral impact). It even clarifies the difference between 'full' and 'lite' with concrete examples of what is included/omitted, which is far more than the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('Get printer state, temperatures, job progress, and capabilities') that clearly states what the tool does. It differentiates itself from siblings by mentioning it should be used as the 'first call' and explicitly contrasts itself with the retired `print_status_lite`, making its scope and positioning unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'Use this as the first call to understand what the printer is doing,' providing clear when-to-use guidance. It also explains the `detail` parameter for 'frequent polling during a print' versus full inspection. However, it does not mention alternatives beyond the retired `print_status_lite`, so it lacks an explicit when-not-to-use or discussion of other sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
printer_trend_analysisA
Analyze local print history trends for a printer.
Uses only data already stored in the local database — nothing
leaves the machine. Returns health score, failure rate trends,
duration trends, recurring failure modes, and material reliability.
Args:
printer_name: Printer to analyze.
lookback_days: How far back to look (default 30 days).
| Name | Required | Description | Default |
|---|---|---|---|
| printer_name | Yes | ||
| lookback_days | No |
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 states data stays local (privacy) and lists return types, but does not disclose prerequisites (e.g., printer existence), side effects, or error handling. It is not contradictory but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a single sentence for purpose, a privacy note, and a bulleted list of outputs, followed by parameter explanations. Every sentence adds value, and it is front-loaded with the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 2 parameters and no output schema, the description covers the core functionality, privacy, and output types. It does not explain error cases or return format, but given the tool's simplicity, it is reasonably 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 0%, so the description must compensate. It explains printer_name as the printer to analyze and lookback_days as how far back to look with a default of 30 days, adding valuable meaning beyond the schema's title and type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it analyzes local print history trends for a specific printer, listing specific outputs like health score and failure rate trends. It distinguishes itself from siblings by focusing on trends over time and local data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions it uses local database data only, implying it's for local analysis, but does not explicitly state when to use this tool versus alternatives like analyze_print_failure or predict_print_failure. No exclusion criteria or use cases are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
printer_usage_summaryA
Show printer count, included allowance, and overage charges.
Enterprise feature. Enterprise base includes 50 printers. Additional printers are $15/month each.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 fails to disclose behavioral traits such as whether the tool is read-only, requires authentication, or has rate limits. The description only states what is shown, not how it behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, using only two short paragraphs and one sentence for the core purpose. Every sentence adds value: the first states what is shown, the second provides enterprise context and pricing.
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?
While the description is adequate for a simple summary tool, it lacks details like the time period covered (current month? all time?), data recency, and whether it includes historical data. Given no output schema, the description could be more 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?
The input schema has zero parameters, so the description must convey all meaning. It does so by describing the output (printer count, allowance, overage charges) and pricing details. Schema coverage is 100%, but the description adds necessary context beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Show printer count, included allowance, and overage charges.' This specifies the action (show) and the resource (printer usage summary), making the purpose unambiguous and distinct from sibling tools like troubleshoot_print_issue.
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 includes 'Enterprise feature,' which provides context on when this tool is applicable (enterprise users). It does not explicitly state when not to use or list alternatives, but the context helps narrow usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
print_historyB
Get recent print history with success/failure tracking.
Args:
printer_name: Filter by printer name, or all printers if omitted.
status: Filter by status (``"completed"`` or ``"failed"``).
limit: Maximum records to return (default 20).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| status | No | ||
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, yet description lacks behavioral details such as read-only hint, authentication needs, rate limits, or pagination. Only basic functionality is mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise with one sentence for purpose followed by clear parameter bullet points. No redundant information; every sentence is useful.
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 the input parameters well, but given no output schema and many sibling history tools, missing description of return values or additional behavioral details. Reasonably complete for a simple list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, and the description adds meaningful parameter explanations (e.g., filter by printer name, status with examples, limit with default). However, status allowed values are not fully constrained (schema allows any string).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get recent print history with success/failure tracking', which is a specific verb+resource. However, it does not differentiate from sibling history tools like 'failure_history' or 'get_model_print_history'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. The Args section explains parameters but does not indicate context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
print_plate_objectA
Extract a single object from a multi-object .gcode.3mf and print it.
This is a compound workflow tool that performs the complete pipeline
in one call:
1. **Extract** the requested object's G-code (``extract_plate_object``)
2. **Upload** the extracted G-code to the printer (``upload_file``)
3. **Preflight + Start** the print (``start_print``, which runs its
own preflight safety check)
Bambu Studio supports multiple plates (plate_1, plate_2, etc.).
Use ``plate_number`` to select which plate to extract and print from.
Object matching is case-insensitive and supports partial names:
``"cap"`` matches ``"TreatHolder - cap.stl"``.
Use ``list_plate_objects`` first if you want to preview what's
available before committing to a print.
:param file_path: Path to the .gcode.3mf file.
:param object_name: Name (or partial name) of the object to print.
:param use_ams: AMS mode — ``"auto"``, ``"true"``, or ``"false"``.
:param ams_mapping: AMS slot mapping (e.g. ``[0]`` for slot 1).
:param bed_leveling: Run bed leveling before print.
:param flow_cali: Run flow calibration before print.
:param vibration_cali: Run vibration calibration before print.
:param bed_type: Bed surface type — ``"auto"``, ``"textured_plate"``,
``"cool_plate"``, or ``"engineering_plate"`` (Bambu only).
:param plate_number: Which plate to extract from (1-based, default 1).
:param printer_name: Which printer to print on. Omit for the default
printer. Both steps are aimed at it, so the object is uploaded to
and started on the same machine.
:returns: Dict with extraction info and print start status.
| Name | Required | Description | Default |
|---|---|---|---|
| use_ams | No | auto | |
| bed_type | No | auto | |
| file_path | Yes | ||
| flow_cali | No | ||
| ams_mapping | No | ||
| object_name | Yes | ||
| bed_leveling | No | ||
| plate_number | No | ||
| printer_name | No | ||
| vibration_cali | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does disclose it is a compound workflow running preflight checks, but does not mention side effects like filament usage, print cancellation, or error handling. It states it performs extraction, upload, and start, but lacks deeper behavioral details such as failure modes or prerequisites beyond file existence.
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 well-structured with a clear numbered list, parameter documentation, and examples. It is comprehensive but not verbose, with each section adding value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (compound workflow, 10 parameters), the description covers the pipeline, matching rules, and key parameters. No output schema exists, but it mentions return value. It lacks details on failure scenarios or interaction with printer availability, but is largely complete for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the burden. It explains plate_number (1-based), use_ams allowed values, bed_type allowed values, and ams_mapping example. Most parameters are documented, though some like flow_cali and bed_leveling are only mentioned inline without detailed semantics beyond their names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it extracts a single object from a multi-object .gcode.3mf and prints it, with a compound workflow. It distinguishes itself from siblings like extract_plate_object and start_print by explaining it combines those steps.
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 explicitly says to use list_plate_objects first to preview available objects, and explains plate selection and partial name matching. It also mentions that printer_name aims both steps at the same machine, providing clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
print_service_quoteB
Confirm a print service order and start processing.
Args:
order_id: The order ID from ``create_print_service_order``.
option: ``"local"``, ``"fulfillment"``, or ``"recommended"``.
| Name | Required | Description | Default |
|---|---|---|---|
| option | No | recommended | |
| order_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It states that the tool confirms and starts processing, which likely mutates state, but offers no details on side effects, irreversibility, permissions, or what 'start processing' entails. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the action. It uses a structured Args section. However, the Args section mostly repeats the schema's parameter names, but it adds value by providing source for order_id. Could be more concise without repeating 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?
The description lacks information about return values or confirmation details, especially since no output schema exists. It is part of a workflow with many siblings but does not explain the full context or sequence. Missing return info and workflow steps reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains order_id comes from create_print_service_order and lists possible option values. This adds meaning, but does not explain what each option does or provide further context. It adds value but is not comprehensive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool confirms a print service order and starts processing. The verb 'confirm' and 'start processing' are specific. However, the tool name 'print_service_quote' suggests a quote, but the description indicates confirmation and processing, causing slight mismatch. Still, the purpose is distinct from siblings like create_print_service_order.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage after create_print_service_order by referencing that tool for the order_id. It also lists possible options. However, it does not explicitly state when to use this tool vs alternatives like fulfillment_quote, nor does it provide exclusions or prerequisites beyond having the order.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
print_service_statusC
Check the status of a print service order.
Args:
order_id: The order ID to check.
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It only says 'Check the status' without disclosing side effects, required permissions, or what 'status' entails. Minimal behavioral info.
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?
Extremely concise: one sentence plus argument listing. No wasted words, front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so description must explain return values. It does not mention what status information is returned or possible error conditions. Incomplete for a status-checking tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%. The argument description 'The order ID to check' adds no meaning beyond the parameter name and type. It does not explain format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Check the status of a print service order,' which is a specific verb-resource combination. It distinguishes from sibling tools like cancel_print_service_order or create_print_service_order.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Does not mention exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
print_status_liteA
DEPRECATED — call printer_status(detail="lite") instead.
Kept so an existing caller does not break. It now delegates, and
therefore returns ``printer_status``'s shape: nested ``printer`` /
``job`` blocks, not the flat ``completion_pct`` / ``hotend_temp``
keys this tool used to invent. That rename was the whole problem —
two tools describing one nozzle temperature with two different words,
which is why clients grew alias lists to read either.
Args:
printer_name: Target printer. Omit for the default printer.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses that the tool delegates to printer_status, explains the return shape change (nested printer/job vs flat keys), and details the historical naming problem. No behavioral traits are hidden.
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 somewhat verbose but well-structured: deprecation, delegation, shape change, reason, then args. It could be slightly more concise but the extra detail is necessary for context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It comprehensively covers the deprecation, replacement, return shape, historical problem, and parameter usage. For a deprecated wrapper, it leaves no relevant context unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The Args section adds meaning to printer_name: 'Target printer. Omit for the default printer.' This exceeds the schema info (optional, default null) and clarifies usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a deprecated alias for printer_status with detail='lite', and states its role as a backward-compatibility wrapper. This distinguishes it from sibling tools like printer_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to call printer_status(detail='lite') instead, making the alternative clear. The deprecation notice provides direct guidance on when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_cost_summaryA
Get cost breakdown for a project.
Returns total costs, per-category breakdown, and budget utilization
for a given project.
Args:
project_id: The project ID returned by ``create_project``.
Requires Enterprise license.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It mentions 'Requires Enterprise license' as a behavioral constraint and describes the return value. However, it does not state whether the tool is read-only or has side effects, leaving some behavioral ambiguity.
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 relatively concise, front-loading the purpose and return details. It could be slightly tighter by merging the first two sentences, but overall it is efficient and well-structured with a clear separation of purpose, returns, args, and requirements.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema, no annotations), the description adequately covers purpose, return values, parameter meaning, and a key prerequisite (Enterprise license). It does not mention data freshness or aggregation details, but for a summary tool this is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, but the description adds important context for the single parameter 'project_id' by specifying it is 'the project ID returned by ``create_project``'. This clarifies the origin and expected format beyond the schema's simple type definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get cost breakdown for a project' with specific return details (total costs, per-category breakdown, budget utilization). This distinguishes it from sibling tools like 'estimate_cost' which focus on estimation rather than retrieving actual summarized data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The only prerequisite mentioned is 'Requires Enterprise license', but there is no discussion of use cases, when not to use, or comparison to sibling tools like 'log_project_cost' or 'estimate_cost'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
provider_job_statusB
Check status of a provider-managed remote job.
Args:
job_id: Job ID from ``submit_provider_job``.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Only states 'check status', implying a read operation, but does not disclose behavior on invalid job_id, polling, or idempotency. Lacks depth for a non-annotated 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?
Description is short (two sentences) but includes an unnecessary 'Args' docstring block. Could be more streamlined. No wasted words, but structure is minimal.
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 one parameter and no output schema, description covers the basic purpose and parameter source, but lacks information about return values, error handling, or result format. Adequate for a simple tool but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must add meaning. It provides context that job_id comes from submit_provider_job, which is helpful, but does not elaborate on format or constraints beyond the schema's type definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'check' and the resource 'status of a provider-managed remote job', which distinguishes it from sibling tools like 'job_status' that may handle non-provider jobs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage after submit_provider_job by linking the job_id, but does not explicitly state when to use this tool vs alternatives (e.g., job_status). No direct guidance for exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_modelA
Publish a 3D model to one or more marketplaces.
Validates the model, optionally generates a print "birth
certificate" from print history, and uploads to the specified
marketplaces.
Args:
file_path: Path to the 3D model file (STL, 3MF, OBJ).
title: Listing title for the model.
description: Listing description (Markdown supported).
tags: List of tags for discoverability.
category: Model category (e.g. "tools", "art", "gadgets").
license: License type — ``"cc-by"``, ``"cc-by-sa"``,
``"cc-by-nc"``, ``"gpl"``, or ``"public_domain"``.
target_marketplaces: Marketplaces to publish to.
Defaults to ``["thingiverse"]``.
include_certificate: Attach print certificate if available.
include_print_settings: Include recommended print settings.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | Yes | ||
| title | Yes | ||
| license | No | cc-by | |
| category | Yes | ||
| file_path | Yes | ||
| description | Yes | ||
| include_certificate | No | ||
| target_marketplaces | No | ||
| include_print_settings | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for disclosing behavior. It mentions validation and optional certificate generation, but lacks details on side effects (e.g., file deletion, overwriting existing listings), error handling, permissions, or rate limits. This is a significant gap for an upload 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?
The description is structured with a clear first sentence and a bullet list for parameters. It is efficient without being overly verbose. Minor reduction could be made, but overall it is appropriately sized and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 9 parameters and no output schema, the description covers the action and parameter semantics adequately but misses return value information, error conditions, and post-publishing behavior. It is sufficient for basic understanding but not fully complete for an AI agent to anticipate outcomes.
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 description adds meaningful context beyond the schema: examples for category, enumerated license values, purpose of tags ('discoverability'), and defaults for target_marketplaces and boolean flags. While schema coverage is 0%, the description compensates well, though it could clarify data types and constraints (e.g., file_path format, tags as array).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Publish a 3D model to one or more marketplaces.' It specifies the key actions (validates, optionally generates certificate, uploads) and distinguishes from sibling tools like 'list_published_models' or 'browse_models' by focusing on the publishing action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by detailing the steps and optional features, but it does not explicitly state when to use this tool vs alternatives, nor does it provide prerequisites or exclusions. For example, it doesn't mention that the model must be ready or that 'list_published_models' might be used to verify the result.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_print_twinA
Upload the current print's sliced file so the web Monitor can show the object and scrub its layers.
The web Monitor at kiln3d.com calls this through the Kiln bridge
while a print is running; there is normally no reason to call it
by hand. It reads the engine's own retained copy of the file it
last sent to the printer (kept per printer under
``~/.kiln/monitor_twin``), uploads it — gzipped — to YOUR Kiln
account, and returns a short-lived artifact token the browser
uses to fetch the mesh and toolpath. Nothing is uploaded except
by this explicit call, and nothing crosses tenants: the token is
IDOR-checked against your own account on every fetch.
Honest refusals: prints Kiln did not slice on this machine (a
pre-sliced upload, a job started at the printer's screen) have
no retained file, and the response says so rather than guessing.
Args:
printer_name: Which printer's active print to publish. Omit
for the machine's single/default printer.
Returns:
``{"success": True, "artifact_token", "stl_url"|null,
"gcode_url"|null, "file_name", "expires_in"}`` on success;
``{"success": False, "code", "message"}`` otherwise.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains the data flow (reads retained copy, uploads gzipped, returns token), clarifies security (nothing crosses tenants, IDOR-checked), and mentions honest refusals for unsliced prints. This adds transparency beyond what annotations would provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections for explanation, args, and returns, but includes some redundancy in phrasing. It is not overly long but could be tightened without loss of 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?
The description covers the operation, return values, edge cases (unsliced prints), and security considerations. Given no annotations, it effectively fulfills the need for complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'printer_name' is clearly described with its purpose and default behavior. The description adds meaningful context not present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: uploading the current print's sliced file for monitor viewing. It distinguishes itself from sibling tools by specifying the target (web Monitor) and the action (publishing).
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 explicitly says when to use it (called by the web Monitor while a print is running) and that there's normally no reason to call by hand. This provides strong usage context without ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
queue_summaryB
Get an overview of the print job queue.
Returns counts by status, next job to execute, and recent jobs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It indicates a read-only query but does not explicitly state whether it is safe or idempotent, nor describe any side effects. Minimal behavioral disclosure beyond expected output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundant information. Front-loaded with purpose, followed by outputs. Highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no parameters and no output schema, the description adequately covers what it returns. Could mention if it's read-only but not required given low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0 parameters with 100% coverage. Description does not need to add parameter semantics; baseline of 4 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?
Description clearly states it retrieves an overview of the print job queue, listing counts, next job, and recent jobs. The verb 'Get' and resource 'overview' are specific, but no distinction from sibling tools is made.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like job_status or print_history. No mention of prerequisites or typical scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quick_adaptive_planA
All-in-one adaptive slicing: analyze geometry + generate plan.
Convenience tool that combines geometry analysis and plan generation
in a single call. Ideal when you have basic model info and want a
quick adaptive plan without multiple tool calls.
Args:
material: Material name (PLA, PETG, ABS, etc.).
model_height_mm: Total model height in mm.
model_name: Optional model name.
nozzle_diameter_mm: Nozzle diameter (default 0.4mm).
mode: Adaptive strategy — "balanced", "quality_first",
"speed_first", or "material_optimized".
printer: Optional printer identifier.
regions: Optional list of region dicts. If omitted, a default
STANDARD region spanning the full height is used.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | balanced | |
| printer | No | ||
| regions | No | ||
| material | Yes | ||
| model_name | No | ||
| model_height_mm | Yes | ||
| nozzle_diameter_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that it combines analysis and planning, mentions default region behavior, but does not describe the return value format, error conditions, side effects, or performance characteristics. The transparency is moderate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: first sentence states the all-in-one nature, second gives usage context, then well-structured parameter list with non-default values explained. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description does not explain what the tool returns (a plan, confirmation, etc.). It also omits error handling and prerequisites. For a tool with 7 parameters and a combined function, this leaves gaps for an agent to understand the complete input-output contract.
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?
With 0% schema description coverage, the description adds significant meaning: it provides examples for material (PLA, PETG, ABS), specifies model_height_mm as total height, defaults for nozzle_diameter_mm (0.4), and enumerates mode strategies (balanced, quality_first, etc.). It also explains that regions default to a STANDARD region. This goes beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'All-in-one adaptive slicing: analyze geometry + generate plan.' It explicitly says it combines geometry analysis and plan generation in a single call, distinguishing it from sibling tools like 'analyze_model_geometry' and 'generate_adaptive_slicing_plan'.
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 says 'Ideal when you have basic model info and want a quick adaptive plan without multiple tool calls.' This implies appropriate usage (for quick, basic info) and suggests when not to use (when separate analysis or planning is needed). However, it does not explicitly list alternatives or when-not-to-use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rebuild_designA
Re-execute the full build pipeline from a saved design recipe.
Two modes, chosen by what the recipe carries — the result names
which one ran:
- **Parametric** (the recipe has OpenSCAD source): the geometry
is RE-DERIVED. The recipe's numeric parameters are applied to
the source and recompiled, so wall thicknesses and fastener
holes come out exactly as designed. To resize a parametric
design, change the parameter — with ``update_scad_parameter``
on the source, or on the recipe's parameters — and rebuild.
Never scale the mesh instead: it scales every feature with
the body, so a 3mm wall becomes 3.6mm and a 3.4mm M3
clearance hole becomes 4.08mm — no longer the fit it was
dimensioned for.
- **Mesh** (no source): the recorded part meshes are re-sliced
exactly as they are. A geometry change needs a mesh edit first
(``rescale_model``, ``thicken_mesh_walls``, ...), then a rebuild.
Every parameter is itemized as applied, absent from the source,
or skipped with a reason — an edit this tool cannot honor is
reported, never silently dropped.
The artifact is a print-ready 3MF where a Bambu printer is
registered and the merged G-code otherwise (send that with
``upload_file``); ``wrapped`` says which one you got.
When the render pipeline is available this also returns an
inline preview of the rebuilt design; display that image to the
user rather than summarizing it. The rebuild itself never
depends on it.
Example: rebuild_design("prints/bracket/")
:param recipe_path: The design directory, or the recipe file.
:param brief_id: Optional saved-goal id. When supplied it is
recorded on the recipe before the rebuild, so the output
carries the goal in its provenance; when omitted the
recipe's existing goal is kept, so iterating a
goal-attached design keeps it automatically.
:returns: Dict with the print artifact, the mode used, and
per-part or per-parameter results.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| brief_id | No | ||
| recipe_path | Yes |
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 discloses the two modes, that parameters are itemized as applied/absent/skipped, the output artifact type (3MF or G-code), the inline preview behavior (including the 3D stage and decimation), and that the rebuild never depends on the preview. It also notes that brief_id is recorded on the recipe. This is rich behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-organized with clear sections (mode details, parameter semantics, return value, preview note, example). Each section adds necessary information. While verbose, it is not redundant; every paragraph earns its place given the tool's complexity.
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 all aspects: purpose, modes, parameter details, return value, artifact type, preview/3D stage behavior, and example usage. The output is described as a Dict with print artifact and mode, which is sufficient since no output schema exists. The description is comprehensive and self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has only minimal type info for recipe_path and brief_id, with 0% description coverage. The tool description fully explains recipe_path (design directory or recipe file) and brief_id (optional saved-goal id, how it's recorded, and behavior when omitted). This adds significant semantic value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Re-execute the full build pipeline from a saved design recipe.' It distinguishes between parametric and mesh modes, and explains what the tool does (re-derives geometry or re-slices meshes). This is a specific verb+resource, and it differentiates from siblings like tweak_and_compile_scad or rescale_model by focusing on full rebuild.
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?
Provides explicit when-to-use guidance: for parametric resizing, use update_scad_parameter and rebuild; for mesh geometry changes, use rescale_model/thicken_mesh_walls first. It also warns against scaling the mesh instead of rebuilding. It names alternative tools (update_scad_parameter, rescale_model, upload_file) and explains when to use them. This is thorough and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recent_eventsA
Get recent events from the Kiln event bus.
Args:
limit: Maximum number of events to return (default 20, max 100).
type: Filter by event type prefix (e.g. ``"print"`` matches
``print.started``, ``print.completed``; ``"job"`` matches
``job.submitted``, ``job.completed``). Omit for all events.
Returns events covering job lifecycle, printer state changes,
safety warnings, and more.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | ||
| limit | No |
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 mentions that events cover job lifecycle, printer state changes, etc., and specifies the default and maximum limit. However, it lacks details on ordering (presumably most recent first), error handling, and whether pagination is supported.
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 three short paragraphs with no superfluous text. The first sentence states purpose, then 'Args:' clearly presents parameters, and a final sentence summarizes return scope. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, parameter usage, and the types of events returned. Given the absence of an output schema, this is sufficient. Minor missing details like ordering (most recent first) and potential errors could be added but do not significantly detract.
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?
With 0% schema description coverage, the description fully compensates. It explains limit as 'Maximum number of events to return (default 20, max 100)' and type as 'Filter by event type prefix' with clear examples, adding significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get recent events from the Kiln event bus,' specifying a concrete verb and resource. It distinguishes itself from sibling tools like job_history or failure_history by focusing on the general event bus.
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 explains when to use the tool and provides details on the limit and type parameters, including examples for prefix matching. However, it does not explicitly contrast with sibling tools or indicate when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_adhesion_settingsA
Recommend brim/raft settings for a 3D model based on geometry + material.
Analyzes the model's bed contact area, material warp tendency, and
printer type to produce a concrete brim width and optional raft
recommendation. Returns ``slicer_overrides`` ready to pass to
``slice_model`` or ``slice_and_print``.
Args:
model_path: Path to an STL or OBJ mesh file.
material: Filament material (e.g. ``"PLA"``, ``"ABS"``,
``"PETG"``). Affects warp risk calculation.
printer_id: Optional printer model ID (e.g. ``"bambu_a1"``).
Used to detect bed-slinger printers that need wider brims.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | PLA | |
| model_path | Yes | ||
| printer_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It describes the analysis process and output format (slicer_overrides) but does not explicitly state that the tool is read-only or disclose any side effects (e.g., file modifications, permissions, rate limits). It is adequate but could be more transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a concise summary followed by clear parameter bullet points. Every sentence contributes to understanding the tool's purpose, inputs, and output. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, but the description explains the return value (slicer_overrides) and its usage. It covers main aspects but lacks details on edge cases (e.g., no bed contact) or error conditions. Still, it is sufficiently complete for its intended use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description provides full semantic meaning for each parameter: model_path (STL/OBJ), material (affects warp risk, defaults to PLA), and printer_id (for bed-slinger detection, optional). It adds significant value beyond the schema's basic titles and types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it recommends brim/raft settings based on geometry and material, specifying analysis inputs (bed contact area, warp tendency, printer type) and output (brim width, raft, slicer_overrides). It distinguishes from siblings like analyze_warping_risk and recommend_settings by being specific about its output and usage with slice_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?
The description implies usage when needing brim/raft settings but does not explicitly state when to use or when not to use, nor does it mention alternatives or exclusions. Among siblings, there are related tools like recommend_settings and analyze_warping_risk, but no guidance on selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_design_materialA
Recommend material for engineering/functional parts (strength, heat, environment).
Analyzes functional requirements and recommends the optimal
material considering mechanical needs, environmental exposure,
printer capabilities, and ease of printing. Returns the top
recommendation with reasoning, warnings, and alternatives.
**Which material tool to use:**
- Designing a part and need engineering specs? → ``recommend_design_material`` (this tool)
- Quick intent-based pick for your own printer? → ``recommend_material``
- Ordering a print from a service? → ``suggest_material_for_order``
Args:
requirements: What the object needs to do (e.g. "hold 5 kg
of books on an outdoor shelf").
printer_has_enclosure: Whether the printer has an enclosed
build chamber (needed for ABS, ASA, Nylon, PC).
printer_has_direct_drive: Whether the printer has a direct
drive extruder (needed for TPU).
max_hotend_temp_c: Maximum hotend temperature in Celsius.
| Name | Required | Description | Default |
|---|---|---|---|
| requirements | Yes | ||
| max_hotend_temp_c | No | ||
| printer_has_enclosure | No | ||
| printer_has_direct_drive | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains that the tool analyzes functional requirements and returns recommendations with reasoning, warnings, and alternatives. It doesn't mention side effects, but given the tool is read-only, the description adequately covers behavior. Lacks details on error handling or edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a short purpose sentence, a brief paragraph on what it does, a clear 'Which material tool to use' section, and parameter explanations. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a recommendation tool with 4 parameters and no output schema, the description explains parameters and sibling tools thoroughly. It mentions return elements (reasoning, warnings, alternatives) but could elaborate on the return structure. Still, it provides sufficient context for an agent to use the tool 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?
With 0% schema description coverage, the tool description fully compensates by explaining each parameter's meaning and usage (e.g., `requirements` with example, `printer_has_enclosure` with material needs). This adds critical value beyond the schema's titles and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's verb (Recommend) and resource (material for engineering/functional parts). It differentiates from siblings via a dedicated section, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly outlines when to use this tool versus `recommend_material` and `suggest_material_for_order`, providing clear usage context and alternatives. No ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_design_reinforcementsA
Recommend specific reinforcements for an STL mesh.
Analyzes geometry to find structural risks, then generates actionable
recommendations with **specific locations** and **estimated strength gains**:
- **gusset**: triangular support at cantilever bases (3-10x stronger)
- **fillet**: smooth transitions at stress concentrations (30-60% gain)
- **thicken_wall**: add material at thin necks (2-5x gain)
- **add_base**: widen the base for stability
- **reorient**: change print orientation for layer strength
Each recommendation includes the coordinates where the reinforcement
should be applied and which Kiln tool to use (e.g., ``add_mesh_fillet()``).
:param file_path: Path to the STL file.
:param min_cross_section_mm2: Minimum safe cross-section area.
:returns: Dict with ``reinforcements`` list.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| min_cross_section_mm2 | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It transparently describes the analysis process and output format (dict with reinforcements list), including specific coordinate locations and tool suggestions. However, it does not mention any side effects, permissions, or potential destructive actions, though it appears to be a read-only analysis.
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 well-structured with a brief introductory sentence, a bulleted list of reinforcement types, and a docstring for parameters. Every sentence adds value, and the most critical information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and only two simple parameters, the description provides complete context: it explains the tool's purpose, input parameters, output format (dict with reinforcements list), and the nature of recommendations. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does so by explicitly describing both parameters in a docstring format ('file_path: Path to the STL file' and 'min_cross_section_mm2: Minimum safe cross-section area'), adding meaning beyond the schema's minimal type information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Recommend specific reinforcements for an STL mesh.' It lists five distinct reinforcement types with their benefits, and distinguishes itself from sibling tools like apply_design_reinforcements (which applies) and analyze_structural_risks (which only analyzes).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage after analyzing geometry to find structural risks, but it does not explicitly state when to use this tool versus alternatives (e.g., analyze_structural_risks vs apply_design_reinforcements). No exclusions or context for when not to use are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_materialA
Recommend material from intent + printer capabilities (considers enclosure, bed, budget).
Uses printer DNA + historical data to translate natural language
intent (e.g. ``"make it strong"``, ``"make it pretty"``,
``"make it cheap"``) into an optimal material recommendation
with settings.
Pass ``printer_id`` to answer for a SPECIFIC machine — essential
on a mixed fleet, where "what should I run this in" depends on
which printer will run it. The recommendation is then computed
against that machine's nozzle state (abrasive materials on a
brass nozzle get an explicit wear warning) and the response
names the machine it answered for.
Pass ``on_hand_only=True`` to recommend only from materials you
physically have — recorded spools (``add_spool``) plus what's
loaded on your machines (AMS/CFS sync). Scoped to one printer
this works on every tier; sweeping a multi-machine fleet in one
call is a Kiln Business feature (https://kiln3d.com/pricing). The recommendation's
``availability`` block then says WHERE the material is: which
machine has it loaded, or that it's on the shelf and needs a
spool swap first. With ``printer_id`` the loaded half is
scoped to that one machine (shelf spools always count — they
can be swapped in); without it, every machine's load counts.
When nothing on hand suits the request, the response returns
the best catalog pick clearly labeled needs-purchase — it
never silently widens to the catalog. And when what you have
works but a material you DON'T own fits the job materially
better, the answer names that too, so "best of what you have"
is never mistaken for "right for the job".
**Which material tool to use:**
- Quick intent-based pick for your own printer? → ``recommend_material`` (this tool)
- Only from spools I actually own? → ``recommend_material(on_hand_only=True)``
- Designing a part and need engineering specs? → ``recommend_design_material``
- Ordering a print from a service? → ``suggest_material_for_order``
- Which of MY printers has a material loaded? → ``find_printers_with_material``
- What's loaded across the fleet right now? → ``get_fleet_material_summary``
Args:
intent: User intent text (e.g. ``"strong"``, ``"pretty"``).
has_enclosure: Whether the printer has an enclosure.
has_heated_bed: Whether the printer has a heated bed.
budget_usd: Optional maximum budget per kg in USD.
printer_id: Optional registered printer to answer for.
Empty = printer-agnostic recommendation.
on_hand_only: Restrict candidates to recorded inventory
(loaded materials + shelf spools). Default False =
full catalog.
| Name | Required | Description | Default |
|---|---|---|---|
| intent | Yes | ||
| budget_usd | No | ||
| printer_id | No | ||
| on_hand_only | No | ||
| has_enclosure | No | ||
| has_heated_bed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the burden, disclosing key behaviors: printer DNA usage, wear warnings, availability scoping, needs-purchase labeling, and naming better materials not owned. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is thorough but somewhat lengthy. However, it is well-structured with clear sections (summary, details, tool comparison, Args) and every sentence adds value. Minor conciseness improvement possible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, no output schema, and 6+ sibling tools, the description covers all necessary context: inputs, behavior, edge cases (needs-purchase, best-of-have vs best-for-job), and ties to pricing tiers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description compensates by explaining all six parameters in detail with examples and context (e.g., intent as natural language, printer_id essential on mixed fleet, on_hand_only for inventory restriction).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Recommend material from intent + printer capabilities' and provides a dedicated section listing sibling tools with usage scenarios, making the tool's purpose distinct and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a 'Which material tool to use:' section that explicitly differentiates this tool from six siblings with concrete when-to-use guidance. It also explains parameters like printer_id and on_hand_only in context of when they should be passed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_settingsA
Recommend print settings based on historical successful outcomes.
Queries the learning database for settings that produced successful
prints, filtered by printer, material, and/or file hash. Returns
aggregated recommendations (most common temps, speeds, slicer profiles)
plus the raw successful settings for agent review.
When kiln-pro is installed AND the user has a calibrated slicer
profile for ``(printer_name, material_type)``, the calibration coach
overlays personally-tuned values (flow rate, max volumetric speed,
pressure advance, retraction distance) on top of the historical
medians. The response gains a ``calibration_used`` block and an
extra ``rationale`` line per overridden value naming the slicer +
staleness — so the user sees "Using your calibrated flow rate of
0.95 from OrcaSlicer (updated 12 days ago)" instead of the generic
aggregate. Behavior is unchanged when kiln-pro is not installed
or no calibration is available.
**Note**: Recommendations are advisory. They do NOT override safety
limits or preflight checks. Always validate settings against printer
safety profiles before use.
Args:
printer_name: Filter by printer (e.g. ``"voron-350"``).
material_type: Filter by material (e.g. ``"PLA"``, ``"PETG"``).
file_hash: Filter by file hash for exact file matching.
| Name | Required | Description | Default |
|---|---|---|---|
| file_hash | No | ||
| printer_name | No | ||
| material_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behaviors: it queries a learning database, returns aggregated recommendations plus raw settings, and details the conditional calibration overlay when kiln-pro is installed. It also notes recommendations are advisory and do not override safety limits. This is comprehensive given no annotations exist.
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 front-loaded with a clear summary, followed by filtering details, then the conditional calibration behavior, and a note. It is logically structured and reasonably concise, with no extraneous information, though the calibration section could be slightly condensed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers core functionality and the calibration overlay, but lacks details on empty results or error handling. Without an output schema, the agent has limited understanding of the response structure beyond the calibration block. This leaves some gaps for an agent to navigate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema only provides names and types with no descriptions. The description's 'Args' section adds examples and clarifies each parameter's role (e.g., filtering by printer, material, or file hash). This compensates for the 0% schema coverage, though it does not exhaustively specify constraints or allowed values.
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 clearly states the tool recommends print settings based on historical outcomes. It specifies filtering by printer, material, and file hash. However, it does not explicitly distinguish itself from sibling tools like infer_print_settings or predict_print_settings, leaving room for 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 provides no explicit guidance on when to use this tool versus alternatives. It does not mention scenarios to avoid or recommend this tool over others, leaving the agent to infer usage context from the tool's function alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_print_dnaA
Record a print outcome with full model DNA.
Saves the model fingerprint alongside print settings and outcome
for cross-user learning. Use ``fingerprint_model`` first to
compute the fingerprint fields.
Args:
file_hash: SHA-256 hash of the model file.
geometric_signature: Geometric signature from fingerprinting.
triangle_count: Number of triangles in the model.
surface_area_mm2: Total surface area in mm^2.
volume_mm3: Model volume in mm^3.
overhang_ratio: Ratio of overhanging triangles (0.0-1.0).
complexity_score: Model complexity (0.0-1.0).
printer_model: Printer model name.
material: Material used (e.g. ``"PLA"``).
settings: Print settings dict.
outcome: ``"success"``, ``"failed"``, or ``"partial"``.
quality_grade: Grade from ``"A"`` to ``"F"`` (default ``"B"``).
failure_mode: Optional failure description.
print_time_seconds: Print duration in seconds.
geometric_signature_v2: ``fingerprint_model``'s
``geometric_signature_v2``. Pass it: it is what lets
this print be told apart from a different design that
happens to share the older signature. Omitted, the row
is stored with the older key only and can never be
separated from that design later.
| Name | Required | Description | Default |
|---|---|---|---|
| outcome | Yes | ||
| material | Yes | ||
| settings | Yes | ||
| file_hash | Yes | ||
| volume_mm3 | Yes | ||
| failure_mode | No | ||
| printer_model | Yes | ||
| quality_grade | No | B | |
| overhang_ratio | Yes | ||
| triangle_count | Yes | ||
| complexity_score | Yes | ||
| surface_area_mm2 | Yes | ||
| print_time_seconds | No | ||
| geometric_signature | Yes | ||
| geometric_signature_v2 | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It discloses the persistence side effect ('Saves the model fingerprint...'), explains the cross-user learning purpose, and highlights a significant consequence: omitting `geometric_signature_v2` permanently stores the row with the older key and prevents later separation from another design. It stops short of describing the return value or error behavior, but the core behavioral impact is covered.
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 long, but the tool has 15 parameters so a detailed Args block is justified. The one-sentence summary and prerequisite are front-loaded, and each parameter line adds semantic value. The `geometric_signature_v2` paragraph is somewhat lengthy but necessary because it explains a non-obvious data-integrity consequence.
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 15-parameter tool with no output schema and no annotations, this description is unusually complete: it defines every input, names the prerequisite tool, explains the persistence side effect, and calls out the v2-signature pitfall. The main gaps are the absence of a described return value and no detail about the expected structure inside the `settings` dict.
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 schema has zero property descriptions and no enums, so the description is the only source of parameter semantics. It explains units (`surface_area_mm2`, `volume_mm3`), ranges (`overhang_ratio`, `complexity_score`), valid values (`success`, `failed`, `partial`, grades `A`-`F`), defaults, and the especially important meaning of `geometric_signature_v2`. This fully compensates for the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Record a print outcome with full model DNA.' It then clarifies the distinguishing feature—saving the model fingerprint for cross-user learning—which separates it from simpler sibling tools like `record_print_outcome` or `record_recovery_check`.
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 an explicit prerequisite: 'Use fingerprint_model first to compute the fingerprint fields.' This tells the agent when to use the tool in a workflow. It does not state when not to use it or explicitly name alternatives, but the fingerprint-first instruction provides clear operational guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_print_outcomeA
Record the outcome of a print for cross-printer learning.
The learning database helps agents make better decisions about which
printer to use for a given job and material. Outcomes are agent-curated
quality data — separate from the auto-populated print history.
**Safety**: Settings are validated against hard safety limits. Outcomes
with temperatures exceeding safe maximums are rejected to prevent
poisoning the learning database with dangerous data.
**Decoration feedback**: When ``decoration_slug`` is provided, the
corresponding decoration's proven-settings counter is auto-updated
(``success_count`` or ``failure_count``) so the library's tracked
reliability reflects real field outcomes without manual curation.
**Auto-classification** (opt-in): When ``auto_classify=True`` and the
outcome is ``"failed"`` with no explicit ``failure_mode``, the failure
classifier runs (:func:`kiln.failure_recovery.analyze_failure`) and
its result is mapped into the canonical DB vocabulary. The
classification is always echoed back in the ``auto_classification``
key of the response; it is only STORED as ``failure_mode`` when the
classifier's confidence meets or exceeds
``_AUTO_CLASSIFY_MIN_CONFIDENCE`` (0.75). Lower-confidence guesses
are surfaced to the caller without poisoning the learning database.
Args:
job_id: The job ID from the print queue.
outcome: One of ``"success"``, ``"failed"``, ``"partial"``, or
``"cancelled"``.
quality_grade: Optional — ``"excellent"``, ``"good"``, ``"acceptable"``, ``"poor"``.
failure_mode: Optional — e.g. ``"spaghetti"``, ``"layer_shift"``, ``"warping"``.
settings: Optional dict of print settings used (temp_tool, temp_bed, speed, etc.).
environment: Optional dict of environment conditions (ambient_temp, humidity).
notes: Optional free-text notes about the print.
printer_name: Printer used. Auto-resolved from job if omitted.
file_name: File printed. Auto-resolved from job if omitted.
file_hash: Optional hash of the file for cross-printer comparison.
material_type: Material used (e.g. ``"PLA"``, ``"PETG"``). Omit and
Kiln backfills it from what the job declared (print history, then
the queue job) or — for an outcome watched live — from the
filament the printer currently holds. Stays unset when no honest
source knows it; per-material learning skips unset rows rather
than learning from a guess.
decoration_slug: Optional decoration slug that was applied to this
print. When set, the matching decoration's success/failure
counters are auto-updated.
decoration_settings: Optional dict of decoration settings used
(``depth_mm``, ``mode``, ``image_style``). Falls back to the
decoration's current defaults when omitted.
auto_classify: When True and this outcome is a failure with no
explicit ``failure_mode``, run the failure classifier and
store its best-guess mode if confidence >= 0.75. Default
False — callers opt in.
auto_recorded: When True, tags the outcome as auto-fired by
the terminal-state hook (see
:mod:`kiln.auto_record_hook`). Agents can later refine
the outcome by calling record_print_outcome again with the
same ``job_id`` — the most recent call wins at the
``proven_settings`` level. Default False.
determined_by: Who settled this outcome — ``"observed"`` (a
live process watched the print end), ``"inferred"``
(reconstructed from printer state after the fact), or
``"user_reported"`` (the human said so). Defaults to
``"observed"`` for auto-recorded outcomes and
``"user_reported"`` otherwise — a manual record normally
relays what the user reported about the part in hand.
Recording an outcome for a print that started while Kiln
wasn't watching RESOLVES its pending row in place rather
than duplicating it.
print_error: Optional raw firmware error code the print tripped
(Bambu HMS, e.g. ``50348044``). Stored as EVIDENCE and kept
deliberately separate from ``failure_mode``, which is a
VERDICT: a print the user CANCELLED carries whatever code the
abort tripped and no failure_mode at all, because a deliberate
stop is not a machine failure but the firmware's complaint
still happened and is worth keeping. A single machine cannot
characterise a fault from codes like these — what predicts one
sticking is a question for many printers — so the code is
captured now against the day there are enough of them to ask.
``0`` and unset both store NULL; a backend with no such code
simply omits it.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| job_id | Yes | ||
| outcome | Yes | ||
| settings | No | ||
| file_hash | No | ||
| file_name | No | ||
| environment | No | ||
| print_error | No | ||
| failure_mode | No | ||
| printer_name | No | ||
| auto_classify | No | ||
| auto_recorded | No | ||
| determined_by | No | ||
| material_type | No | ||
| quality_grade | No | ||
| decoration_slug | No | ||
| decoration_settings | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With NO annotations provided, the description carries the full burden and exceeds it: discloses safety validation rejecting dangerous temps, the 0.75 confidence threshold for auto-classification storage, the material_type backfill hierarchy, idempotent re-call semantics, the evidence-vs-verdict distinction for print_error vs failure_mode, and that '0 and unset both store NULL'. Exceptionally rich behavioral disclosure that no annotation set could replace.
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?
Excellent structure: bolded section headers (Safety, Decoration feedback, Auto-classification) and a clean typed Args block that front-loads the core purpose. It is long, but justified by 17 parameters at 0% schema coverage. Only minor deduction for the print_error paragraph's rambling conversational tone ('against the day there are enough of them to ask') that could be tightened without losing meaning.
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 tool with no output schema, no enums, and no annotations, the description is remarkably self-sufficient. Every parameter is documented, return behavior is disclosed (auto_classification echoed in response), storage side-effects are explained (decoration counters), and edge cases are anticipated (material stays unset rather than guessing, lower-confidence guesses not persisted). Nothing meaningful is left to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% — the schema merely gives titles like 'Job Id' and 'Outcome'. The description dramatically compensates by documenting every one of the 17 parameters, including exact enum values for outcome, quality_grade, and determined_by, the material backfill precedence chain, the auto_resolve behavior for printer_name/file_name, and the nuanced print_error semantics. This is precisely what parameter documentation should do when the schema is empty.
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?
Opens with a specific verb+resource statement ('Record the outcome of a print for cross-printer learning') and immediately clarifies its place in the ecosystem ('agent-curated quality data — separate from the auto-populated print history'). Clearly distinguishes from sibling tools like monitor_print and the various analyze_* tools by describing the learning database purpose.
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?
Strongly establishes when to use the tool: manual outcome recording, opt-in auto-classification, and the auto_recorded terminal-state hook path where 'the most recent call wins'. However, it never explicitly names alternative tools (e.g., analyze_print_failure, monitor_print) or gives 'use X instead' guidance, so the when-not-to guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_recovery_checkA
Record a post-recovery monitoring check result.
After recovery execution, monitoring checks verify the print
is proceeding correctly.
Args:
session_id: The session_id being monitored.
passed: Whether this monitoring check passed.
notes: Optional notes about the check result.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| passed | Yes | ||
| session_id | Yes |
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 discloses that a check result is recorded, but does not reveal behavioral traits such as whether multiple checks can be recorded, idempotency, required permissions, side effects on the recovery session, or rate limits. This lack of detail limits the agent's ability to use the tool safely.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and well-structured. The purpose is stated in the first sentence, followed by contextual framing, then a clear docstring-style list of arguments. Every sentence adds value, with no redundant or extraneous 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 no output schema, no annotations, and 0% schema coverage, the description should provide comprehensive guidance. It lacks information about return values, side effects, prerequisites (e.g., existing recovery session), error scenarios, and limitations like call frequency. This makes it incomplete for an agent to confidently invoke the tool without external knowledge.
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?
With 0% schema description coverage, the description adds meaningful context for each parameter: 'session_id' is identified as the monitoring target, 'passed' clarifies boolean interpretation (check success), and 'notes' is marked optional. This goes beyond the schema's type-only information, though additional details (e.g., format of session_id) could enhance clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'record' and the specific resource 'post-recovery monitoring check result'. It provides context that this is done after recovery execution to verify print correctness. Among sibling tools like 'plan_print_recovery' and 'complete_print_recovery', this tool's purpose is distinct and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage after recovery execution, but does not explicitly state when to use this tool versus alternatives like 'start_print_recovery' or 'complete_print_recovery'. No prerequisites, exclusions, or ordering guidance is provided, leaving some ambiguity about the tool's place in the recovery workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_revenueA
Record a revenue event (sale, royalty, tip, or refund).
Args:
model_id: File hash or listing ID of the model.
marketplace: Marketplace name (e.g. ``"thingiverse"``).
amount_usd: Amount in USD.
transaction_type: Type — ``"sale"``, ``"royalty"``,
``"tip"``, or ``"refund"``.
currency: Currency code (default ``"USD"``).
description: Optional description of the transaction.
| Name | Required | Description | Default |
|---|---|---|---|
| currency | No | USD | |
| model_id | Yes | ||
| amount_usd | Yes | ||
| description | No | ||
| marketplace | Yes | ||
| transaction_type | No | sale |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must convey behavioral traits. It only states the action 'record' without disclosing side effects (e.g., database mutation), idempotency, required permissions, or return value. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a clear, well-structured docstring with a concise single-line summary followed by a parameter list. It is not overly verbose, though the parameter list could be slightly more compact. Overall, it is efficiently organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all parameters but omits return value, side effects, defaults (though in schema), and constraints (e.g., amount must be positive). For a 6-parameter tool with no output schema or annotations, this is adequate but leaves gaps in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, but the description fully documents all 6 parameters with examples (e.g., marketplace as 'thingiverse', transaction_type values). It adds meaning beyond the schema by providing allowed values and clarifying the purpose of each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Record a revenue event (sale, royalty, tip, or refund).' It specifies the verb 'record' and the resource 'revenue event', and explicitly lists the allowed transaction types, distinguishing it from siblings like 'record_print_outcome' or 'model_revenue'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., other recording tools or revenue-related tools). It does not specify prerequisites, context, or when not to use it. Given numerous sibling tools, this lack of usage direction hinders correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_printerA
Register a new printer in the fleet.
Registering is free at every tier and always has been — what the fleet
tier sells is running printers in PARALLEL, enforced when a print
starts, not when a machine is added. So owning a second printer and
using them one at a time is a supported setup on Free and Pro: the
registration succeeds and the reply notes the concurrency limit.
Free and Pro run 1 printer at a time. Fleet starts at Business (3
printers included, $15/mo per additional to a cap of 50); Enterprise
is uncapped.
Args:
name: Unique human-readable name (e.g. "voron-350", "bambu-x1c").
printer_type: Backend type -- "octoprint", "moonraker", "bambu",
"creality", "elegoo", "prusalink", "duet", or "usb".
"serial" is accepted as a legacy alias for "usb".
host: Base URL or IP address of the printer. For USB printers,
this is the port path (e.g. "/dev/ttyUSB0", "COM3").
api_key: API key (required for OctoPrint and Bambu, optional for
Moonraker/Creality, unused for USB). For Bambu printers
this is the LAN Access Code.
serial: Printer serial number (required for Bambu printers).
verify_ssl: Whether to verify SSL certificates (default True).
Set to False for printers using self-signed certificates.
For Bambu, True maps to TLS pin mode and False maps to
insecure mode.
printer_model: Optional safety/profile key (e.g. "k1_max").
persist: Save the printer to ``~/.kiln/config.yaml`` so future MCP
sessions load the same printer. Default ``True``.
verify_connection: For Bambu printers, immediately query AMS status
after registration and return a proof summary. Default ``True``.
baudrate: Baud rate for USB printers. Defaults to
``DEFAULT_SERIAL_BAUDRATE``; many Marlin boards are flashed
for 250000 and will not talk at the default.
Once registered the printer can be targeted by name — ``printer_status``,
``monitor_print``, ``cancel_print``, ``pause_print`` and ``resume_print``
all take a ``printer_name`` at every tier, so owning a second machine
never costs you sight of it or control over it. Seeing them together
(``fleet_status``) and driving them together are Business features.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | ||
| name | Yes | ||
| serial | No | ||
| api_key | No | ||
| persist | No | ||
| baudrate | No | ||
| verify_ssl | No | ||
| printer_type | Yes | ||
| printer_model | No | ||
| verify_connection | No |
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 discloses key behaviors: free registration, successful registration even with concurrency limits, printer targeting by name, and tier-based concurrency enforcement. It fails to specify side effects (e.g., connection attempts, failure modes in registration) or return format, which would be valuable given the lack of annotations. The mention of verify_connection providing a 'proof summary' hints at response structure but doesn't fully cover all behaviors.
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 long but densely informative. It front-loads purpose, then explains tier logic in a clear two-paragraph structure, then details args in a bullet-like list. That said, the tier discussion is somewhat verbose — the first two paragraphs could be tightened while preserving key points. The parameter list is efficient with examples and context. Overall, the length is justified by the tool's complexity, but a few sentences could be trimmed.
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 10 parameters with 0% schema coverage, no output schema, and complex tier logic, the description is fairly complete — it covers all parameter semantics, tier implications, and post-registration capabilities. However, it lacks details on failure scenarios (e.g., connection timeout, invalid credentials) and does not explicitly state the return value structure, though verify_connection hints at a summary. For a registration tool, it might also mention whether duplicate names are rejected or how the fleet state is updated. Still, it's stronger than many tool descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all 10 parameters. It does an excellent job: explains host meaning for USB (port path), api_key requirements per type (required for OctoPrint/Bambu, optional for some, unused for USB), serial needs for Bambu, verify_ssl behavior including TLS pin mode mapping, baudrate defaults and caveats (Marlin boards at 250000), and persist semantics. The only minor gap is printer_model's deeper purpose ('safety/profile key') which is a bit vague, but overall it adds substantial meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool registers a printer into a fleet, with a specific verb ('register') and target resource ('printer in the fleet'). It also includes scope details like naming and targeting by printer_name, distinguishing it from sibling tools like set_printer_light, discover_printers, and printer_status. The first line 'Register a new printer in the fleet' is direct and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly addresses when to use this tool versus alternatives, including tier-based rules (Free/Pro run 1 printer at a time, Business starts at 3, Enterprise uncapped) and notes that registration always succeeds even when concurrency limits exist. It also clarifies that targeting by name is available at every tier, while fleet_status is Business+ — providing explicit context for when this tool applies and what alternatives exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_webhookA
Register a webhook endpoint to receive Kiln event notifications.
Args:
url: The HTTPS URL that will receive POST requests with event payloads.
events: Optional list of event types to subscribe to (e.g.
["job.completed", "print.failed"]). If omitted, all events are sent.
secret: Optional shared secret for HMAC-SHA256 payload signing.
description: Human-readable label for this endpoint.
Returns the registered endpoint ID. Use ``list_webhooks`` to see all
endpoints and ``delete_webhook`` to remove one.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| events | No | ||
| secret | No | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions the return value (endpoint ID) but does not disclose side effects (resource creation), idempotency, authorization requirements, or rate limits. This leaves significant gaps for a tool that creates a persistent resource.
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 well-structured with a clear purpose, bullet-like parameter list, and return statement. Every sentence adds value, and it is appropriately concise without extraneous 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 creation tool with no annotations or output schema, the description covers parameters, return value, and related tools. However, it could be improved by specifying behavioral aspects such as idempotency or what happens on duplicate registration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains all four parameters: url (HTTPS URL), events (optional list with examples), secret (optional HMAC secret), description (label). This adds substantial meaning beyond the schema's type definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Register', the resource 'webhook endpoint', and the purpose 'to receive Kiln event notifications'. It distinguishes from siblings by referencing list_webhooks and delete_webhook for other actions.
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 explains the tool's basic usage context and explicitly mentions alternatives for listing and deleting webhooks. However, it does not provide explicit 'when to use' guidance or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
release_printer_lockA
Release an exclusive lock on a printer.
Args:
printer_name: Printer to unlock.
holder: Identifier of the lock holder (must match acquire).
| Name | Required | Description | Default |
|---|---|---|---|
| holder | No | agent | |
| printer_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It explains basic behavior (unlock) and parameter constraint (holder must match acquire), but does not disclose side effects, error handling, or idempotency.
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?
Extremely concise; one-line purpose followed by parameter descriptions. No fluff, all sentences are informative.
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 and no annotations, so description should cover return values, error states, and idempotency. It provides basic functionality but lacks edge case details.
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?
Description adds meaning beyond schema: explains each parameter's purpose and notes that holder must match the acquire call. Schema has 0% description coverage, so this adds necessary context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Release an exclusive lock on a printer', using specific verb and resource. Additionally, it distinguishes from the sibling tool 'acquire_printer_lock' by its opposite action.
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?
Context implies usage after acquiring the lock, but no explicit guidance on when to use or when not, nor mention of alternatives beyond the sibling tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_interception_ruleB
Remove an interception rule from an active session.
Args:
session_id: Target session ID.
rule_id: The rule ID to remove.
| Name | Required | Description | Default |
|---|---|---|---|
| rule_id | Yes | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits. It only states removal without explaining consequences (e.g., permanence, effect on session, error handling). Missing context for a destructive 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?
Two informative sentences plus concise parameter descriptions. Every word is necessary; 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?
Given the complexity of the domain (interception rules), the description lacks information about return values, error cases, or prerequisites. The output schema is present but not described, leaving the agent guessing about success/failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (no parameter descriptions in schema). The description adds minimal but useful semantics: 'Target session ID' and 'The rule ID to remove'. However, it is brief and could be more precise.
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 'Remove an interception rule from an active session' clearly states the action (remove) and the resource (interception rule from an active session). It distinguishes from siblings like 'add_interception_rule'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'add_interception_rule' or 'update_interception_telemetry'. The description does not specify prerequisites or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_mesh_floating_regionsA
Remove small disconnected components (floating geometry).
Downloads and marketplace models often contain support pillars,
internal fragments, or other floating geometry. This tool
identifies connected components and removes the small ones.
:param file_path: Path to the STL file.
:param output_path: Output path (defaults to overwriting input).
:param keep_largest: Keep only the largest component (default True).
:param min_triangle_pct: Min triangle % to keep (when keep_largest=False).
:returns: Dict with removal statistics.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| output_path | No | ||
| keep_largest | No | ||
| min_triangle_pct | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the transparency burden. It discloses side effects (output_path defaults to overwriting input), explains the algorithm (identifies connected components and removes small ones), and states the return type (Dict with removal statistics).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a brief purpose statement, a rationale sentence, and a clear parameter list. There is no redundant or vague wording, and the formatting is easy 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?
The description is complete for a tool of this complexity: it explains what the tool does, why it's needed, how to control behavior via parameters, and the return type. Even without an output schema, the stated return of removal statistics is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful explanations for each parameter beyond the schema: file_path as the STL path, output_path with overwrite default, keep_largest defaulting to true, and min_triangle_pct conditionally applied. All four schema parameters are covered in prose, enriching the schema's bare types and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: removing small disconnected components (floating geometry) from a mesh. The verb 'remove' is specific, and the explanation about support pillars and fragments distinguishes it from other mesh operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case: cleaning up downloads and marketplace models with floating geometry. It implies when to use it, though it does not explicitly compare to alternative mesh-processing tools. The parameter descriptions further clarify usage conditions (e.g., keep_largest vs. min_triangle_pct).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_spoolC
Remove a filament spool from inventory.
Args:
spool_id: The spool's unique identifier.
| Name | Required | Description | Default |
|---|---|---|---|
| spool_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the basic action without indicating if the deletion is permanent, what permissions are required, or what happens on error.
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?
Extremely concise with one sentence and parameter list. Could benefit from a brief note on return value, but for a simple tool it is well-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?
Given no output schema and a single required parameter, the description covers the basic operation but lacks details on return values, error handling, or 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 0%. The description adds no additional meaning beyond the schema's parameter title and type, merely repeating 'spool_id' as unique identifier.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Remove') and the target resource ('a filament spool from inventory'). It distinguishes from sibling tools like add_spool or list_spools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives, no prerequisites, and no mention of when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_model_previewA
DEPRECATED — use visualize_model instead. This renders only 1 angle; visualize_model renders 6 angles with auto-framing, colored 3MF support, and quality scores.
This tool is a thin wrapper around ``visualize_model`` with a single
isometric angle. Prefer ``visualize_model`` directly for multi-angle
previews with proper auto-framing.
Args:
file_path: Path to an ``.stl``, ``.3mf``, ``.obj``, or ``.scad`` file.
width: Image width in pixels (default 800).
height: Image height in pixels (default 600).
color: Hex color for the model (e.g. ``"#F72323"``).
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | ||
| width | No | ||
| height | No | ||
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description discloses deprecation, the single-angle limitation, and the wrapper nature. It could mention return format or error behavior, but overall transparent about its capabilities and shortcomings.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the most critical information (deprecated, recommended alternative) followed by a brief Args section. No redundant sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately covers the tool's purpose, parameters, limitations, and provides clear guidance to avoid it. It does not specify the output format, but given the deprecated status and preference for visualize_model, this is acceptable.
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?
With 0% schema description coverage, the description fully compensates with an Args section explaining each parameter: file_type examples for file_path, default values for width/height, and a hex color example for color.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool renders a model preview, is deprecated, and distinguishes itself from the preferred alternative 'visualize_model' by noting it renders only 1 angle with fewer features.
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 clearly advises against using this tool, recommending 'visualize_model' instead, and provides specific reasons (multi-angle, auto-framing, colored 3MF, quality scores) for preferring the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
repair_meshA
Repair mesh defects: rounding-noise seams, degenerates, holes.
Every pass first welds vertices that are coincident up to a tiny
radius (0.1 µm by default) — scanned and AI-generated meshes
routinely carry float rounding jitter that reads as thousands of
phantom open edges, and welding is the honest fix for those. The
default pass then removes zero-area triangles and recomputes face
normals. Pass ``close_holes=True`` for the deep pass, which
additionally finds boundary edges (edges shared by only one
triangle) and closes small holes via fan triangulation — use it
when the mesh is not watertight.
Hole closing refuses rather than ruins: sewing triangles that
merely re-stamp existing surface are discarded, and a closure
that collapses the enclosed volume is rolled back with the
reason in ``unrepaired``.
The result states the output's actual condition: ``is_watertight``
(which also refuses to certify a sheet-cancelling zero-volume
surface), remaining boundary/pinch edge counts,
``enclosed_volume_mm3`` when the surface closes up, and — when
defects survive the pass — an ``unrepaired`` list saying which
defect classes this tool has no repair for (pinched edges, where
3+ triangles meet along one line, are not holes and cannot be
sewn; they must be fixed where the geometry was made). Read
``unrepaired`` before telling the user the mesh is fixed.
:param file_path: Path to the STL file to repair.
:param output_path: Output path. Defaults to overwriting the input.
:param close_holes: Also close open holes and fix boundary edges
(slower; default False).
:param weld_tolerance: Weld radius in mm. Empty = auto (0.1 µm or
a millionth of the part diagonal); "0" disables welding.
:returns: Dict with repair statistics and residual-defect report.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| close_holes | No | ||
| output_path | No | ||
| weld_tolerance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations provided, the description correctly carries the full behavioral disclosure burden and does so extraordinarily well: it reveals the 0.1 µm weld radius and why ('scanned and AI-generated meshes routinely carry float rounding jitter'), the destructive default of overwriting the input, the rollback-and-report safety mechanism ('a closure that collapses the enclosed volume is rolled back with the reason in unrepaired'), the refusal semantics, and the visible side effect of opening the inline 3D stage. No annotation contradiction exists since no annotations are present; this is a masterclass in honest documentation.
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?
Efficiently front-loaded with a one-line summary followed by a short why-explanation for the welding step, then the algorithmic passes, safety, return contract, and finally the structured param block. Dense but nearly every sentence earns its place; only minor verbosity remains in the parenthetical 'or a millionth of the part diagonal' aside and the 'refuses rather than ruins' framing, though the latter also conveys useful non-guarantee semantics.
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 both file-mutating side effects (default overwrite) and a GUI side effect (3D stage), zero annotations, and no output schema, the description covers everything an agent must know: the exact return-contract keys (is_watertight, enclosed_volume_mm3, unrepaired), the failure domain (pinch edges it refuses to certify), performance characteristics, and error semantics. No meaningful information gap remains for an agent to fill by guessing.
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?
At 0% schema description coverage, the description must document everything — and it does: file_path's STL type, the overwrite-by-default behavior of output_path, close_holes' performance cost, and weld_tolerance's unit, auto-scaling ('a millionth of the part diagonal'), and the "0" disables-welding sentinel. The docstring param block is the only place an agent could learn these semantics since the input schema only contains bare property names; the description more than compensates.
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 opening sentence states a specific verb+resource+defect set ('Repair mesh defects: rounding-noise seams, degenerates, holes'), localizing the tool in seconds. It then distinguishes the standard repair path from diagnostics found in siblings — this is the fixer, while tools like diagnose_mesh / analyze_mesh_geometry are inspection-only, and the explicit defect-class enumeration leaves no ambiguity about the resource being acted on.
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?
Clear contextual guidance is given for pass selection ('use it when the mesh is not watertight') and for what the tool will not do ('pinched edges... must be fixed where the geometry was made'), which constitutes useful when-not guidance. No sibling tool is named explicitly (contrast with a 'use search_calls_extensive for user/workspace filtering' pattern), and with repair_mesh_advanced in the same namespace a one-line pointer would have cinched a 5; nevertheless the deep-vs-default decision rule is explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
repair_mesh_advancedA
Deprecated alias for repair_mesh(close_holes=True).
Kept for one release so existing callers keep working; new callers
should use ``repair_mesh`` with ``close_holes=True``. Behavior is
identical to the original tool.
:param file_path: Path to the STL file.
:param output_path: Output path. Defaults to overwriting the input.
:param close_holes: Whether to attempt closing holes (default True).
:param weld_tolerance: Weld radius in mm. Empty = auto; "0"
disables welding.
:returns: Dict with repair statistics.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| close_holes | No | ||
| output_path | No | ||
| weld_tolerance | No |
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. The description discloses that it is a deprecated alias with identical behavior, mentions defaults for parameters, and describes the return type (dict with repair statistics). It also details the inline 3D stage behavior on success, including automatic decimation for oversized meshes. However, it doesn't disclose side effects like file overwriting by default (though output_path defaults to overwriting input, which is implied) or potential error 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?
The description is compact but includes essential information: the deprecation notice, the parameter list, and the behavior on success. The paragraph on the 3D stage is additional but relevant behavioral context. However, the restructured-text formatting (':param') is a bit dense and might be more readable as plain text. Overall, it avoids 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?
Given the tool's moderate complexity (4 parameters, no output schema), the description covers the core use case (mesh repair with options), the deprecation status, the return type, and the notable side effect of opening the 3D stage. It doesn't explain the statistics dict structure but that may be unnecessary. The 3D stage behavior is a key context that is well-explained. A minor gap is the lack of error handling or edge cases, but it's adequately complete for an agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so all parameter semantics must come from the description. The description provides reasonable explanations for each parameter: file_path (path to STL file), output_path (output path, defaults to overwriting), close_holes (boolean, default True), weld_tolerance (weld radius in mm, with special values for auto and '0' disabling). This adds meaning beyond the schema, but some details like the format of the weld_tolerance string and the exact behavior of close_holes could be more explicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a deprecated alias for repair_mesh(close_holes=True) and explicitly directs new callers to the preferred tool. The purpose is clear (repair mesh files), and the description distinguishes it from its non-deprecated sibling repair_mesh by noting the identical behavior with a specific parameter set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: existing callers can keep using it, but new callers should use repair_mesh with close_holes=True. This is clear guidance on when to use this tool vs. the alternative, though it doesn't elaborate on other alternative tools or broader usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_printer_overageA
Report metered printer usage to Stripe for Enterprise billing.
Enterprise feature. The first 50 printers are included in the base
Enterprise price. This tool **automatically subtracts** the
50 included printers and reports only the overage count to Stripe's
``active_printers`` meter at $15/printer/month.
If *active_printer_count* is omitted, the fleet registry is queried
automatically — no manual counting needed.
Args:
subscription_item_id: The Stripe SubscriptionItem ID (``si_...``) for
the metered printer overage line item on the customer's subscription.
active_printer_count: Total number of active printers. Leave empty
to auto-detect from the fleet registry.
Example:
With 55 registered printers, this reports **5** to Stripe
(55 − 50 included = 5 overage × $15 = $75/mo).
| Name | Required | Description | Default |
|---|---|---|---|
| active_printer_count | No | ||
| subscription_item_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses key behavioral traits: automatic subtraction of included printers, reporting to Stripe's active_printers meter at $15 each, and auto-detection of printer count when omitted. It does not cover error cases or authentication needs, but the core behavior is well explained.
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 well-organized with sections for general description, parameter details, and an example. Every sentence adds value, though the example could be slightly more concise. Overall, it is efficient and front-loaded with 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?
Given the tool's moderate complexity (2 parameters, no output schema, no annotations), the description covers business logic, parameter behavior, and provides an example. It lacks explicit details on return values or error handling, but the effect of the tool (reporting to Stripe) is clearly explained. The description is fairly complete for its context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description includes an 'Args' section that explains both parameters in detail: subscription_item_id (Stripe format si_...) and active_printer_count (optional, auto-detect when empty). Since schema description coverage is 0%, the description fully compensates by adding meaningful context and usage guidance for each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reports metered printer usage to Stripe for Enterprise billing. It uses a specific verb (report) and resource (printer overage), and the automatic subtraction of 50 printers distinguishes it from sibling tools, none of which perform billing reporting.
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 explains the Enterprise context, that the first 50 printers are included, and how the tool automatically subtracts the included quantity. It also provides an example. It does not explicitly state when not to use it, but the use case is clear and no alternative tools are named, which is acceptable given the uniqueness of the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reprint_with_materialA
Reprint a model with a different material — auto-adjusts temperatures, speeds, and retraction for the new material.
One-shot convenience tool: looks up the target material's optimal slicer
settings, merges any extra overrides you provide, reslices the model,
runs a safety check, uploads to the printer, and starts the print.
Use this when you want to reprint an existing model in a different
material (e.g. PLA → PETG for outdoor durability, or PLA → TPU for
flexibility). The tool handles all the slicer parameter changes
automatically.
Example: "Reprint my grip extension in PETG instead of PLA"::
reprint_with_material(
file_path="/path/to/grip_extension.stl",
material_id="petg",
printer_name="my_bambu",
printer_id="bambu_a1",
use_ams=True,
ams_mapping="[1]", # PETG is in AMS slot 1
)
Requires PrusaSlicer or OrcaSlicer installed locally.
Args:
file_path: Path to the model file (STL, 3MF, STEP, OBJ).
material_id: Target material (e.g. ``"petg"``, ``"tpu"``).
printer_name: Registered printer name in fleet. If omitted,
uses the default printer.
printer_id: Printer model ID for profile selection
(e.g. ``"bambu_a1"``, ``"ender3"``).
extra_overrides: Optional JSON string of additional slicer
overrides to merge on top of the material defaults
(e.g. ``'{"fill_density": "30%"}'``).
use_ams: Enable AMS filament feeding (Bambu printers).
ams_mapping: JSON string of AMS slot indices (e.g. ``"[1]"``).
Maps each extruder/filament to an AMS tray position.
| Name | Required | Description | Default |
|---|---|---|---|
| use_ams | No | ||
| file_path | Yes | ||
| printer_id | No | ||
| ams_mapping | No | ||
| material_id | Yes | ||
| printer_name | No | ||
| extra_overrides | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the burden. It explains the entire workflow: looks up settings, merges overrides, reslices, runs a safety check, uploads, and starts the print. It also discloses the local slicer requirement and side effects (starts a print).
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 well-structured with a one-liner, process summary, usage guidance, example, requirement note, and argument list. It is longer than strictly necessary but each section adds value. The example helps understanding.
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?
Considering the tool's complexity (7 parameters, no output schema), the description provides sufficient information for an agent to invoke it correctly. It covers the workflow, parameter semantics, and prerequisites. Minor missing details: error handling if slicer is not installed or material not found.
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?
Although the context signals indicate 0% schema coverage, the description itself documents all 7 parameters with clear explanations and even provides JSON examples for extra_overrides and ams_mapping. This adds significant value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the core action: 'Reprint a model with a different material — auto-adjusts temperatures, speeds, and retraction for the new material.' It distinguishes itself from siblings by specifying it's a one-shot convenience tool for material changes, unlike general reslicing or printing tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool (e.g., reprint in a different material like PLA→PETG) and provides an example. It also mentions a requirement (PrusaSlicer or OrcaSlicer installed locally). However, it does not explicitly state when not to use it or suggest alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rescale_modelA
Rescale an STL model to meet dimensional targets.
Useful when a generated model is the wrong size for the printer's
build volume or doesn't match the desired dimensions.
**Uniform scaling** -- provide exactly ONE of:
- ``target_height_mm``: Scale so Z-axis equals this value.
- ``scale_factor``: Uniform multiplier (2.0 = double size).
- ``max_dimension_mm``: Scale down so largest axis fits this limit.
**Per-axis scaling** -- provide ``scale_x``, ``scale_y``, and/or
``scale_z``. Omitted axes default to 1.0 (no change).
Cannot combine uniform and per-axis options.
Args:
file_path: Path to the STL file to rescale (modified in-place).
target_height_mm: Desired Z-axis height in mm.
scale_factor: Uniform scale multiplier.
max_dimension_mm: Maximum dimension on any axis.
scale_x: Per-axis X scale factor.
scale_y: Per-axis Y scale factor.
scale_z: Per-axis Z scale factor.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| scale_x | No | ||
| scale_y | No | ||
| scale_z | No | ||
| file_path | Yes | ||
| scale_factor | No | ||
| max_dimension_mm | No | ||
| target_height_mm | No |
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. It discloses that the STL is modified in-place, that success also opens an interactive 3D stage, that oversized meshes are decimated for that stage, and that the PNG preview is not the full experience. This prevents surprising side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded, with bolded sections and separation between uniform and per-axis scaling. It is somewhat long, but every section is meaningful given the parameter complexity and the unexpected 3D-stage side effect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers purpose, parameter semantics, in-place mutation, and success side effects. It does not explicitly describe the return value or error conditions, but the side effects are the primary behavioral information the agent needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description provides complete semantics for all seven parameters: target_height_mm means Z-axis height, scale_factor is a uniform multiplier, max_dimension_mm caps the largest axis, and omitted per-axis values default to 1.0. It also encodes the critical cross-parameter rule that uniform and per-axis scaling cannot be combined.
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 clearly states the action: 'Rescale an STL model to meet dimensional targets.' It then specifies the exact scaling modes and target meanings, making the tool's role unmistakable and distinct from siblings like rotate_model or scale_mesh_to_fit.
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 a clear trigger: 'Useful when a generated model is the wrong size for the printer's build volume or doesn't match the desired dimensions.' It also explicitly explains the two scaling modes and forbids combining them, but it doesn't name alternative tools or specify when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reslice_with_overridesA
Reslice a 3D model with custom slicer parameter overrides.
Accepts a base printer profile and a JSON dict of overrides to customize
the slice. Common override keys (PrusaSlicer INI format):
Adhesion: brim_width (mm), skirts (count), skirt_distance (mm)
Temperature: temperature, first_layer_temperature, bed_temperature
Speed: perimeter_speed, infill_speed, external_perimeter_speed, first_layer_speed, travel_speed (mm/s)
Structure: fill_density (e.g. "25%"), fill_pattern (gyroid/grid/honeycomb), layer_height
Support: support_material (0/1), support_material_buildplate_only (0/1)
Retraction: retract_length, retract_speed
Example overrides JSON: {"brim_width": "8", "perimeter_speed": "30", "fill_density": "25%"}
Use this tool when a print failed due to adhesion, wobble, or quality issues
and you need to reslice with adjusted settings. Pair with rotate_model to
also change part orientation before reslicing.
Requires PrusaSlicer or OrcaSlicer installed locally.
Use kiln find-slicer or the find_slicer MCP tool to verify.
Args:
input_path: Path to the input file (STL, 3MF, STEP, OBJ, AMF).
printer_id: Printer model ID for bundled profile selection
(e.g. ``"prusa_mini"``, ``"bambu_a1"``).
overrides: JSON string of key-value pairs to override in the slicer
profile (e.g. ``'{"brim_width": "8", "fill_density": "25%"}'``).
output_dir: Directory for the output G-code. Defaults to the
system temp directory.
slicer_path: Explicit path to the slicer binary. Auto-detected
if omitted.
| Name | Required | Description | Default |
|---|---|---|---|
| overrides | No | ||
| input_path | Yes | ||
| output_dir | No | ||
| printer_id | No | ||
| auto_center | No | ||
| slicer_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the tool accepts a base printer profile and JSON overrides, lists common override keys, provides an example, and notes the output directory for G-code. No annotation contradictions; description adds useful behavioral context beyond 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?
Description is long but well-organized with a clear opening, bullet list, example, usage note, and parameter section. Every sentence contributes value, though slight verbosity prevents a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all essential aspects: input formats, printer selection, overrides format, output directory, slicer path, prerequisites, and usage context. Sufficient for a complex tool with output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description compensates. The tool description explains the overrides format and common keys, and the Args section describes each parameter with file types and defaults, adding significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb 'reslice' and resource '3D model with custom slicer parameter overrides'. Clearly distinguishes from siblings like 'slice_model' and 'run_reslice_and_print' by emphasizing custom overrides.
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?
Explicitly states when to use: print failures due to adhesion, wobble, or quality issues. Recommends pairing with 'rotate_model' and lists prerequisite of installed slicer software, with verification via 'find_slicer'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_filament_profileA
Resolve a material name or brand ID to a unified filament profile.
Accepts EITHER a generic material (``"PLA"``, ``"TPU"``) OR a
specific brand profile ID (``"bambu_pla_basic"``,
``"prusament_tpu_95a"``). Brand profiles return manufacturer-exact
specs (density, temps, drying, nozzle/enclosure requirements).
Generic materials return conservative defaults.
When ``printer_id`` is provided, also checks compatibility and
returns warnings (e.g. "needs hardened nozzle", "needs enclosure",
"not AMS compatible").
Use this BEFORE slicing or printing to get exact filament specs.
Pass the result to ``estimate_before_design`` for brand-accurate
cost/time estimates.
:param material_or_brand: Material name (``"PLA"``) or brand
profile ID (``"bambu_petg_cf"``).
:param printer_id: Optional printer model for compatibility checks.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_id | No | ||
| material_or_brand | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully covers behavioral aspects: it describes that brand profiles return exact specs, generic return defaults, and that providing printer_id triggers compatibility checks and warnings. It does not mention side effects (none expected), and there is no contradiction with annotations. The behavior is well-explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise but not terse, with a clear first-line summary followed by structured parameter explanations. It uses reStructuredText style for parameters, making it easy to parse. Every sentence adds value, and there is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 2 parameters, no output schema, and no annotations, the description does a good job covering purpose, parameters, usage, and return behavior (exact vs default specs, warnings). It mentions specific return fields for brand profiles (density, temps, etc.) and compatibility warnings. It could be slightly improved by noting the return type or structure, but it is largely 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 0%, so the description fully compensates by explaining both parameters in detail: 'material_or_brand' is described with examples ('PLA', 'bambu_petg_cf'), and 'printer_id' is explained as optional for compatibility. This adds significant meaning beyond the schema titles and types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it resolves a material name or brand ID to a unified filament profile, with specific verbs and resource. It distinguishes between generic and brand profiles, and the purpose is unambiguous. Sibling tools like 'get_brand_filament_profile' or 'find_material_match' have different scopes, so this tool's distinct role 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?
The description explicitly says when to use this tool (BEFORE slicing or printing) and suggests passing the result to 'estimate_before_design'. It also explains the two input types (generic vs brand) and the optional printer_id for compatibility checks. However, it does not explicitly list when not to use it or alternative tools, though the context provides reasonable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_model_sourceA
Identify where a .3mf or .gcode.3mf file was downloaded from.
Reads embedded metadata to determine the original marketplace source.
Supports MakerWorld metadata and generic 3MF metadata (Title,
Designer, Application, License, etc.).
Returns the model title, designer, model URL (if available), slicer
application name, and a list of objects on the plate.
Use this when you need to trace a file back to its source — for
example, to find the original STL files on MakerWorld when the
.gcode.3mf only contains pre-sliced G-code without mesh geometry.
:param file_path: Path to the .3mf or .gcode.3mf file.
:returns: Dict with source marketplace, model URL, designer info,
and plate object names.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses behavior: reads embedded metadata, determines source, returns specific fields. It clearly indicates a read-only operation without destructive effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise and well-structured: starts with purpose, then method, then return values. Each sentence is informative and necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter, no output schema, no annotations), the description is complete. It explains what it does, how to use it, and what it returns, leaving no 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 coverage is 0% so description must compensate. It provides ':param file_path: Path to the .3mf or .gcode.3mf file.' This adds meaning beyond the schema's type definition, specifying acceptable file formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description starts with a specific verb+resource: 'Identify where a .3mf or .gcode.3mf file was downloaded from.' It clearly states the tool's purpose and distinguishes it from siblings like extract_model_from_3mf by focusing on source identification.
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?
Description includes explicit use case: 'Use this when you need to trace a file back to its source — for example, to find the original STL files on MakerWorld when the .gcode.3mf only contains pre-sliced G-code without mesh geometry.' It provides context but does not explicitly state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restart_serverA
Restart the Kiln MCP server process.
Replaces the current process with a fresh instance using
``os.execve``. The MCP client (Claude Code, etc.) should detect
the connection drop and automatically reconnect.
WHAT A RESTART REFRESHES depends on how this server was launched,
and the result says which happened. A launcher script that
exported ``KILN_SERVE_WRAPPER`` is re-entered whole, so whatever
that script does before serving — syncing code, healing installs —
runs again. Without it the restart re-execs ``python -m kiln
serve`` in place: a fresh process over however this interpreter
resolves ``kiln``, which picks up edits to those files but runs no
launcher logic. (Measured 2026-08-19: an operator launcher synced
two runtime clones on every start, and a restart through this tool
silently skipped the sync — the served code was two revisions
stale while the restart reported success.)
Use after installing or updating kiln-pro plugins, changing
environment variables, or modifying server code — avoids the
need to fully restart the MCP client application.
:param clean_env: When ``True`` (default), strips ``KILN_PRINTER_*``
environment variables from the child process if
``~/.kiln/config.yaml`` has a printer configured. This defeats
the "ghost env" footgun where a stale ``KILN_PRINTER_API_KEY``
inherited from a past shell session silently shadows config.yaml
edits for the lifetime of the MCP parent process. Without this,
every edit to config.yaml looks like it does nothing and the
printer rejects MQTT auth with no hint why. Set to ``False`` to
preserve the full env (useful for CI or pure env-driven workflows
where config.yaml is absent or deliberately overridden).
:returns: Confirmation that the restart is imminent, plus the list
of env vars that were stripped (for debugging transparency).
The connection will drop within ~0.5 seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| clean_env | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must carry the full burden. It thoroughly explains the restart mechanism, the clean_env parameter behavior, and what the return value indicates, including edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections and parameter documentation, but includes a somewhat tangential measured scenario that adds length without essential value. Still, it's appropriately detailed for a complex tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, behavior, parameter, return value, and usage context, including the client reconnection expectation. It is comprehensive for the tool's complexity.
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 clean_env parameter is explained in detail: its default behavior, the footgun it prevents, and when to set it to False. This adds significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool restarts the Kiln MCP server process and elaborates on the mechanism, making the purpose 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?
Provides specific scenarios for when to use (after plugin updates, env changes, code modifications) and contrasts with a full client restart, offering clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_printA
Resume a paused print job.
The printer must currently be in a paused state. Resuming will return
the nozzle to its previous position and continue extruding.
Kiln checks afterwards that the resume actually took, so a printer that
silently ignored the command reports a failure instead of a cheerful
"Print resumed."
Args:
force: Send the resume even when Kiln believes the printer is not
paused. Use this when the printer's own screen disagrees with
what Kiln reports — a printer can report ``RUNNING`` with
perfectly fresh telemetry while standing still, and without this
the wrong state word would leave you unable to recover the print.
printer_name: Which printer to resume. Omit for the default
printer. Pass the same name you paused with.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and excels: it reveals that resume returns the nozzle and continues extruding, that the printer state is verified afterward, that silently ignored commands are reported as failures, and that force bypasses the internal state check. These are non-obvious behavioral details an agent needs.
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 well-structured and front-loaded: a one-sentence summary, a short prerequisite/behavior paragraph, then per-parameter details. Every sentence contributes meaningful information with 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 two-parameter, no-output-schema tool, the description covers prerequisites, action consequences, edge cases, verification behavior, and parameter semantics. It gives an agent everything needed to decide whether and how to call 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?
The input schema provides no descriptions, yet the Args section thoroughly explains both parameters. force gets context for when and why to use it, and printer_name clearly states the omission default and the requirement to match the name used for pausing.
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 opens with the specific verb-and-resource action, 'Resume a paused print job,' and adds behavioral specificity: 'return the nozzle to its previous position and continue extruding.' This clearly distinguishes it from siblings like pause_print, cancel_print, start_print, and firmware_resume_print.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states the prerequisite that the printer must be in a paused state and explains when to use the force parameter. It does not explicitly name alternative tools or say 'use X instead,' but the context is clear enough to guide correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retrieve_credentialB
Decrypt and return a stored credential.
Args:
credential_id: The credential's unique identifier.
| Name | Required | Description | Default |
|---|---|---|---|
| credential_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, description only says 'decrypt and return', lacks disclosure of security implications, authentication needs, or side effects for a sensitive 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?
Description is short but includes redundant yaml-style Args block; could be streamlined. First sentence is clear and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Missing critical context for a security-sensitive credential retrieval tool, such as usage guidelines and behavioral transparency; overall insufficient for safe usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description adds doc for parameter 'credential_id: The credential's unique identifier', providing basic semantics beyond schema field title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Decrypt and return a stored credential', specific verb and resource, distinguishes from sibling tools like 'store_credential' and 'list_credentials'.
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 vs alternatives, no exclusions or prerequisites provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retry_print_with_fixA
Diagnose the last print failure and re-slice + print with fixes.
When a print fails, call this tool instead of manually chaining
``diagnose_print_failure_live`` → ``slice_and_print``. It:
1. Reads live printer state and analyses the model geometry to
diagnose the failure (unless ``skip_diagnosis`` is True).
2. Auto-detects the loaded material from the AMS when
``material`` is omitted and the printer supports it.
3. Merges diagnosis-recommended slicer overrides with any
``custom_overrides`` you supply (your overrides win on
conflict).
4. Re-validates the mesh's printability before re-slicing. A
retry path that re-sends a broken mesh is the highest-
value place to validate — the previous attempt already
failed, and slicer overrides can't fix mesh-level issues.
Bypass with ``skip_validation=True`` if the caller already
validated.
5. Re-slices the (possibly auto-repaired) mesh with the merged
overrides, uploads the result, and starts the print.
Args:
model_path: Path to the STL/OBJ/3MF that failed.
printer_name: Target printer name. Omit for the default
printer.
material: Filament material (e.g. ``"PLA"``, ``"ABS"``).
Auto-detected from AMS when omitted.
printer_id: Printer model ID for intelligence lookup
(e.g. ``"bambu_a1"``).
custom_overrides: JSON object of additional slicer overrides
to merge on top of the diagnosis recommendations
(e.g. ``'{"brim_width": "8"}'``). Your values win on
conflict.
skip_diagnosis: If True, skip the failure diagnosis step and
re-slice using only ``custom_overrides``.
skip_validation: If True, bypass the pre-print mesh
validation gate. Defaults to False — designs are
pre-tested for printability before the retry reaches
the printer.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | ||
| model_path | Yes | ||
| printer_id | No | ||
| printer_name | No | ||
| preview_token | No | ||
| skip_diagnosis | No | ||
| skip_validation | No | ||
| custom_overrides | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the burden of behavioral disclosure. It details steps: reads live state, analyzes geometry, auto-detects material, merges overrides, re-validates mesh, repairs if needed, re-slices, uploads, and starts print. It even explains the rationale for validation and states custom overrides win on conflict, demonstrating thorough transparency.
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 verbose but well-structured with numbered steps and a clear Args section. While it is longer than necessary, every section adds value, and the key purpose is front-loaded. Some prose could be trimmed without loss, but overall it's organized.
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 tool that initiates a print, the description covers the entire workflow, parameter semantics, bypass options, and even the rationale for mesh validation. It lacks output details but no output schema exists, and the tool's side effects (starting a print) are clear. The preview_token omission is minor but doesn't detract from overall completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains most parameters meaningfully: model_path, printer_name, material (with auto-detection), printer_id, custom_overrides (with JSON example), skip_diagnosis, and skip_validation (with default). However, it omits 'preview_token' entirely, leaving that parameter undocumented. Since schema coverage is 0%, this omission is a notable gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Diagnose the last print failure and re-slice + print with fixes.' It uses specific verbs and resource, and distinguishes from siblings by explicitly mentioning the manual chain of diagnose_print_failure_live → slice_and_print, clarifying it as the preferred retry path.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: 'When a print fails, call this tool instead of manually chaining diagnose_print_failure_live → slice_and_print.' It also explains when to skip diagnosis or validation via parameters, giving context for alternatives and bypass conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revenue_dashboardB
Get aggregate revenue analytics dashboard.
Returns total revenue, sales count, top models, monthly
trends, and marketplace breakdown.
Args:
days: Number of days to include (default 30).
| Name | Required | Description | Default |
|---|---|---|---|
| days | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It does not disclose side effects, caching, or performance characteristics. Merely states it returns analytics, insufficient for behavioral transparency.
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?
Concise and front-loaded: first sentence states purpose, then lists return types, then parameter. 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?
Missing behavioral details like authentication requirements or response format. With no output schema, description should explain return structure; it lists items but lacks format details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds meaning for the 'days' parameter, explaining its purpose and default. This compensates partially, though minimal for a single parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves aggregate revenue analytics, listing specific outputs like total revenue, sales count, top models, etc. This distinguishes it from siblings like community_stats or marketplace_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description does not mention exclusions or context for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rollback_design_versionA
Rollback a design to a previous version.
Creates a *new* version whose source matches the target version,
preserving full history. The new version's notes record the
rollback origin.
Args:
design_id: The design to rollback.
to_version_id: The version number (integer) or
``design_id:N`` ref to restore.
Returns:
The newly created rollback version record.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| design_id | Yes | ||
| to_version_id | Yes |
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 discloses that a new version is created (not destructive), that history is preserved, and that notes record the rollback origin. It also details the 3D stage behavior, including decimation of oversized meshes and the fallback for hosts without MCP Apps panels. This is rich behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear summary, parameter details, and return value. The 3D stage paragraph is additional but relevant context. It's slightly verbose but each sentence adds value. The front-loading of the core purpose is good.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (rollback with history preservation, 3D stage side effect), the description covers the essential aspects: what it does, how parameters work, what it returns, and the side effect. No output schema exists, so the return description is helpful. It could mention error cases or prerequisites, but it's reasonably 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 0%, so the description must compensate. It explains `design_id` as 'The design to rollback' and `to_version_id` as 'The version number (integer) or design_id:N ref to restore.' This adds meaning beyond the bare schema types (string), clarifying the format and semantics. However, it doesn't elaborate on edge cases or validation, so a 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Rollback a design to a previous version.' It specifies the action (rollback), the resource (design), and the key behavior (creates a new version preserving history). It distinguishes itself from siblings like `save_design_version` and `list_design_versions` by explaining the rollback semantics.
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 explains when to use this tool: to rollback a design to a previous version while preserving history. It doesn't explicitly state when not to use it or name alternatives, but the context is clear. The mention of creating a new version rather than overwriting implies a safe operation, which helps the agent decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rollback_firmwareA
Roll back firmware on the default/connected printer (adapter-level, by component).
For fleet setups where you need to rollback a specific printer by name
or target a specific version, use ``rollback_printer_firmware`` instead.
Only supported on Moonraker printers. The component must have a
known rollback version (check ``firmware_status``).
Args:
component: Name of the component to roll back (e.g. ``"klipper"``).
| Name | Required | Description | Default |
|---|---|---|---|
| component | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; the description adds that the operation is by component and requires a known rollback version, but does not explicitly state destructive nature or other side effects. Adequate but not thorough.
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?
Highly concise: front-loaded with purpose, then alternative usage, prerequisites, and parameter description in an Args section. No redundant language.
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 a single required parameter and no output schema, the description covers purpose, alternative, prerequisite, and parameter meaning. Lacks return value details, but adequate for this simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds value by explaining the 'component' parameter and giving an example ('klipper'), which the schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool rolls back firmware on the default/connected printer by component, which is specific and distinct from the sibling tool rollback_printer_firmware for fleet setups.
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?
Explicitly names the alternative tool for fleet setups, states compatibility (Moonraker printers), and requires a known rollback version, guiding correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rollback_printer_firmwareA
Rollback firmware on a specific printer by name (fleet-level, supports version pinning).
Use this in multi-printer setups. For single-printer setups, use ``rollback_firmware`` instead.
Args:
printer_name: Printer to rollback.
target_version: Specific version to rollback to.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_name | Yes | ||
| target_version | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral traits. It fails to disclose destructive nature, required permissions, side effects, or error conditions of a firmware rollback operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the main purpose, and includes a structured Args section with no wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (firmware rollback, multi-printer context) and no output schema, the description is reasonably complete but could detail post-rollback behavior or safety aspects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It lists parameters with brief descriptions ('Printer to rollback', 'Specific version to rollback to'), adding basic meaning but lacking format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool rolls back firmware on a specific printer by name, with fleet-level and version pinning support. It distinguishes from the sibling 'rollback_firmware' tool for single-printer setups.
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?
Explicitly advises to use this tool in multi-printer setups and directs to an alternative (rollback_firmware) for single-printer setups, providing clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rotate_encryption_keyA
Rotate the G-code encryption key by re-encrypting all files.
Scans *directory* recursively for encrypted G-code files, decrypts
with the old passphrase, and re-encrypts with the new one.
**Run with ``dry_run=True`` first** to preview which files would be
affected. Then call again with ``dry_run=False`` to execute.
After rotation, update the ``KILN_ENCRYPTION_KEY`` environment
variable to the new passphrase and restart the server.
Args:
old_passphrase: The current KILN_ENCRYPTION_KEY value.
new_passphrase: The new passphrase to encrypt with.
directory: Root directory to scan for encrypted G-code files.
pattern: Glob pattern for files to process (default ``"*.gcode"``).
dry_run: Preview only — don't modify files (default ``True``).
Requires Enterprise license and admin scope.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| pattern | No | *.gcode | |
| directory | Yes | ||
| new_passphrase | Yes | ||
| old_passphrase | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description fully covers behavior: scans recursively, decrypts with old passphrase, re-encrypts with new, dry-run preview, and required post-rotation actions. Clearly states it modifies files. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured: initial summary, then block with process, then parameter list. Front-loaded with main action. Slightly verbose with repetition (e.g., 'Scans *directory* recursively' and then parameter explanation), but overall clear and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Comprehensive for a 5-param tool with no output schema: covers purpose, process, prerequisites, post-conditions (env variable, restart), and parameter details. No gaps given the complexity and absence of annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description fully documents all 5 parameters. Explains each parameter's role (old_passphrase, new_passphrase, directory, pattern, dry_run), provides defaults, and clarifies dry_run usage. Adds meaning beyond schema field names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool's purpose: 'Rotate the G-code encryption key by re-encrypting all files.' It explains the process (scan, decrypt, re-encrypt) and distinguishes from siblings like encryption_status by focusing on the rotation operation.
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?
Explicitly instructs to run with 'dry_run=True' first to preview, then with 'dry_run=False' to execute. Also provides post-rotation guidance: update environment variable and restart server. Mentions requirements: Enterprise license and admin scope. No alternative tools for rotation, so no need for exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rotate_modelA
Rotate a 3D model file (STL or 3MF) by specified angles before slicing.
Useful for improving print quality — rotating a tall narrow part 45° around
the Z axis can reduce toolhead-induced wobble and ringing artifacts.
Args:
input_path: Path to the STL or 3MF file to rotate.
rotation_z: Rotation around Z axis in degrees (most common — rotates
on the build plate).
rotation_x: Rotation around X axis in degrees.
rotation_y: Rotation around Y axis in degrees.
output_path: Where to save the rotated file. Defaults to
``<input>_rotated.<ext>``.
Returns dict with ``output_path`` (path to rotated file) and
``rotations_applied``.
Pair with ``reslice_with_overrides`` to re-slice the rotated model with
adjusted settings (e.g., stronger brim after rotation).INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| input_path | Yes | ||
| rotation_x | No | ||
| rotation_y | No | ||
| rotation_z | No | ||
| output_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden — and it delivers. It reveals the 3D stage inline viewer side effect, automatic decimation of oversized meshes, the return dict structure (output_path, rotations_applied), and the output_path default naming convention. This goes well beyond minimal disclosure by flagging that the PNG preview is not the whole experience and that a browser stage link is used for hosts without MCP Apps panel support.
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 well-structured with clear sections: purpose, use case, Args, Returns, and pairing recommendation. It's front-loaded with the purpose statement. The 3D stage paragraph is slightly verbose — 'in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't)' could be tightened — but every sentence contributes meaningful 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 5-parameter tool with no annotations and no output schema, the description is remarkably complete: input formats, all parameter semantics, return dict, default behaviors, and side effects are covered. The only minor gap is that it doesn't explicitly confirm the original file is left unmodified (non-destructive), which is implied by 'save the rotated file' but not stated — an important detail for a mutation-adjacent tool with zero annotation safety hints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully compensate — and it does, documenting all 5 parameters. Each rotation axis gets units and context ('rotation_z: ... most common — rotates on the build plate'), input_path specifies valid file types (STL or 3MF), and output_path explains the default naming pattern `<input>_rotated.<ext>`. The description is the complete source of parameter truth.
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 opens with a specific verb+resource: 'Rotate a 3D model file (STL or 3MF) by specified angles before slicing.' It clearly identifies what the tool does and distinguishes it from siblings like auto_orient_model, optimize_print_orientation, and rescale_model by emphasizing manual angle specification. The concrete use case (reducing toolhead-induced wobble by rotating 45° around Z) reinforces purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: 'Useful for improving print quality — rotating a tall narrow part 45° around the Z axis can reduce toolhead-induced wobble and ringing artifacts.' It explicitly names a companion tool to pair with ('Pair with reslice_with_overrides') and explains the scenario for using it. However, it doesn't explicitly state when NOT to use it versus alternatives like auto_orient_model, though the manual-angle specificity implicitly creates that boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
route_print_jobB
Route a print job to the best available printer in the fleet.
Scores each registered printer on material match, availability,
queue depth, and historical success rate, then recommends the
best assignment with scored alternatives.
Args:
file_path: Path to the file to print.
material: Required filament material (e.g. "PLA", "PETG").
quality: Quality preference — "draft", "standard", or "fine".
priority: Job urgency — "low", "normal", or "high".
| Name | Required | Description | Default |
|---|---|---|---|
| quality | No | ||
| material | Yes | ||
| priority | No | ||
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral transparency. It explains that the tool scores printers on material match, availability, queue depth, and historical success rate, and that it recommends the best assignment with scored alternatives. This discloses internal logic but does not mention whether it causes side effects (e.g., does it actually assign the job or just recommend?), or if it requires the printer to be available. It is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and includes a summary of the tool's behavior and an Args section that lists parameters with brief descriptions. It is front-loaded with the main purpose. It could be slightly more structured (e.g., bullets) but is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 4 parameters (2 required) and no output schema. The description explains the inputs well but does not describe what the output looks like (e.g., the recommendation structure), which is crucial. It mentions 'scored alternatives' but not their format. There is no mention of error conditions or side effects. Given the tool's complexity, it is minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All four parameters are described with their purpose: file_path, material, quality, and priority. Since schema description coverage is 0%, the description compensates by providing examples and meaning for each, e.g., material example 'PLA', quality preference values. It adds value beyond the schema's bare definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Route a print job to the best available printer in the fleet.' It identifies the verb (route) and resource (print job) and mentions the scoring criteria. However, it does not explicitly distinguish from siblings like 'suggest_printer_for_job' or 'optimize_fleet_assignment', which may have similar purposes, so it misses 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 does not provide any guidance on when to use this tool versus alternatives. There is no mention of when to use it (e.g., for immediate printing vs. planning) or when not to use it. Siblings like 'suggest_printer_for_job' or 'optimize_fleet_assignment' could be alternatives, but 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.
run_benchmarkA
Prepare a benchmark print: validate → slice → upload → report stats.
Slices a model with the printer's profile and uploads it, then
reports printer stats from history. The print is NOT started
automatically — benchmarks should be manually observed.
Args:
model_path: Path to benchmark model (STL).
printer_name: Registered printer name.
printer_id: Printer model ID for profile selection.
profile_path: Explicit slicer profile path.
skip_validation: Bypass the pre-print mesh validation step.
Defaults to False — user-supplied benchmark meshes are
pre-tested for printability. Set to True for known-good
fixed reference benchmark models.
| Name | Required | Description | Default |
|---|---|---|---|
| model_path | Yes | ||
| printer_id | No | ||
| printer_name | No | ||
| profile_path | No | ||
| skip_validation | No |
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 discloses the workflow (validate, slice, upload, report stats), explicitly states the print is not started automatically, and explains the skip_validation parameter. However, it doesn't describe failure behavior or return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a one-line summary, a paragraph explaining key behavior, and a list of parameters with clear explanations. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, no output schema, no annotations), the description provides enough information to use it correctly. It covers purpose, behavior, and parameters. Missing details about the 'report stats' output, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description includes an Args section that explains all five parameters (model_path, printer_name, printer_id, profile_path, skip_validation) with their purposes and defaults, compensating fully for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Prepare a benchmark print: validate → slice → upload → report stats.' It uses specific verbs and resources, and distinguishes from siblings like 'run_calibrate' or 'run_quick_print' by focusing on benchmark prints.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: 'The print is NOT started automatically — benchmarks should be manually observed.' It implies manual observation is required but doesn't explicitly contrast with alternative tools or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_calibrateA
Full calibration pipeline: home + bed level + printer-specific guidance (recommended).
Higher-level than ``calibrate_direct`` — orchestrates the full sequence and
returns intelligence-based calibration tips. Performs physical calibration
steps (homing, auto bed leveling) and returns printer-specific calibration
guidance from the intelligence database.
Args:
printer_name: Registered printer name.
printer_id: Printer model ID for calibration guidance.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_id | No | ||
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool performs physical calibration steps (homing, auto bed leveling) and returns printer-specific guidance from an intelligence database. However, it does not detail side effects, safety implications, or the state of the printer after execution, leaving some behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear summary paragraph and a separate parameter list. It avoids redundancy and is well-structured, though the parameter listing could be integrated more seamlessly. It earns its place with no wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (full calibration pipeline), no output schema, and 0% schema coverage, the description explains what the tool does and what it returns (intelligence tips). However, it lacks details on return format, error conditions, and prerequisites, making it adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning by labeling 'printer_name' as 'Registered printer name' and 'printer_id' as 'Printer model ID for calibration guidance'. However, both parameters are optional with no clarification on required scenarios or behavior when omitted, partially compensating but not fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Full calibration pipeline: home + bed level + printer-specific guidance (recommended)' and distinguishes from sibling 'calibrate_direct' by noting it is higher-level and orchestrates the full sequence. The specific verb 'run' and resource 'calibrate' with explicit steps (homing, auto bed leveling) make the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description identifies when to use this tool by stating it is 'recommended' and higher-level than 'calibrate_direct'. It provides clear context but does not explicitly state when not to use it or list alternatives beyond the sibling comparison, which is a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_quick_printA
Full print pipeline: validate + slice + safety-check + upload + print (recommended one-shot tool).
Preferred over ``slice_and_print`` — adds mesh-level pre-print
validation, G-code safety validation, and auto-detected bundled
slicer profiles. For custom slicer parameter overrides, use
``run_reslice_and_print`` instead. The full quick-print pipeline:
1. Validate mesh (printability, manifold, walls, bridges, bed-fit)
2. Resolve slicer profile (bundled, by printer_id)
3. Slice the (possibly auto-repaired) mesh to G-code
4. Safety-validate the G-code against printer limits
5. Upload G-code to the printer
6. Run preflight checks (always — cannot be skipped)
7. Start printing
Args:
model_path: Path to input model (STL, 3MF, STEP, OBJ).
printer_name: Registered printer name in fleet.
printer_id: Printer model ID for auto-profile selection
(e.g. ``"ender3"``, ``"bambu_x1c"``, ``"klipper_generic"``).
profile_path: Explicit slicer profile. Overrides printer_id auto-selection.
material: Filament material hint (e.g. ``"PLA"``). When set, AMS
auto-routing prefers a loaded tray whose type matches.
use_ams: AMS feeding mode (Bambu): ``"auto"`` (default — detect and
route to a loaded tray), ``"true"``, or ``"false"``.
ams_mapping: Explicit AMS slot mapping as a JSON array string,
e.g. ``"[0]"`` or ``"[0, 2]"``. Overrides auto-selection.
skip_validation: Bypass the mesh-level pre-print validation step.
Defaults to False — designs are pre-tested for printability
before they reach the printer. Use True for already-validated
inputs or pre-sliced 3MFs the validator can't introspect.
On Bambu AMS printers the response carries ``ams_selection``
(``{slot, type, color}``) naming the tray actually used — routing is
never silent.
| Name | Required | Description | Default |
|---|---|---|---|
| use_ams | No | ||
| material | No | ||
| model_path | Yes | ||
| printer_id | No | ||
| ams_mapping | No | ||
| printer_name | No | ||
| profile_path | No | ||
| skip_validation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description fully discloses behavior: pipeline steps, always-on preflight checks, and AMS selection response for Bambu printers. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with numbered steps and parameter list, front-loaded with purpose. Some redundancy (step list repeats pipeline) but every sentence adds value.
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 tool with 8 parameters and no output schema, description is thorough: covers all inputs, pipeline behavior, and response details (ams_selection). No missing essential context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has no descriptions (0% coverage); description provides detailed explanations for all 8 parameters, including context (e.g., material hint for AMS routing). Minor lack of format validation for ams_mapping.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it's the full print pipeline (validate + slice + safety-check + upload + print) and explicitly distinguishes from siblings like slice_and_print and run_reslice_and_print.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly recommends it as the preferred one-shot tool, explains when to use alternatives (custom slicer overrides → run_reslice_and_print), and highlights added features (validation, auto-detected profiles).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_reslice_and_printA
Reslice with custom slicer overrides + print (use for retries with adjusted settings).
Use this when you need to tweak slicer parameters (speed, brim, infill, temps).
For standard prints without overrides, use ``run_quick_print`` instead.
One-shot pipeline: validate mesh → resolve profile with overrides →
slice → safety check → upload to printer → start print.
The overrides parameter is a JSON string of PrusaSlicer INI key-value pairs:
{"brim_width": "8", "perimeter_speed": "30", "fill_density": "25%"}
Common override keys:
Adhesion: brim_width (mm), skirts (count)
Temperature: temperature, bed_temperature (degrees C)
Speed: perimeter_speed, infill_speed, first_layer_speed (mm/s)
Structure: fill_density (%), fill_pattern, layer_height (mm)
Support: support_material (0/1)
Requires PrusaSlicer or OrcaSlicer installed locally.
The printer must be idle and connected.
Args:
model_path: Path to input model (STL, 3MF, STEP, OBJ).
printer_name: Registered printer name in fleet.
printer_id: Printer model ID for auto-profile selection
(e.g. ``"ender3"``, ``"bambu_x1c"``, ``"klipper_generic"``).
overrides: JSON string of PrusaSlicer INI key-value pairs to override.
profile_path: Explicit slicer profile. Overrides printer_id auto-selection.
slicer_path: Explicit path to the slicer binary.
material: Filament material hint (e.g. ``"PLA"``). For fully-auto
raw-gcode reslices, AMS routing prefers a loaded tray of this
material. (3MF plates carry their own filament map, so routing
defers to the adapter there.)
use_ams: Enable AMS filament feeding (Bambu printers). If omitted,
auto-detected from 3MF metadata.
ams_mapping: JSON string of AMS slot indices (e.g. ``"[0, 2]"``).
Maps each extruder/filament to an AMS tray position.
skip_validation: Bypass the mesh-level pre-print validation step.
Defaults to False — designs are pre-tested for printability
before they reach the printer.
| Name | Required | Description | Default |
|---|---|---|---|
| use_ams | No | ||
| material | No | ||
| overrides | No | ||
| model_path | Yes | ||
| printer_id | No | ||
| ams_mapping | No | ||
| slicer_path | No | ||
| printer_name | No | ||
| profile_path | No | ||
| skip_validation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral transparency. It details the one-shot pipeline (validate mesh → resolve profile → slice → safety check → upload → start print), mentions validation and safety checks, and explains the overrides format. However, it does not disclose failure handling, cancellation behavior, or performance characteristics, leaving minor gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is lengthy but well-structured: a concise intro, usage pivot, pipeline summary, overrides details, prerequisites, and then parameter explanations. Every section adds value, though some details (like all common override keys) could be condensed. Overall, it's efficient for the complexity.
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 10 parameters, no output schema, and no annotations, the description provides near-complete context. It covers the tool's purpose, when to use vs alternatives, the full pipeline, parameter semantics, prerequisites, and safety checks. The only missing element is explicit return value, but that is acceptable since no output schema exists and the tool initiates a print.
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 schema has 0% description coverage, and the description compensates fully by explaining all 10 parameters in detail. It provides the overrides JSON format with examples, lists common override keys organized by category, and describes each argument's purpose, including nuances like AMS auto-detection and validation bypass. This adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Reslice with custom slicer overrides + print (use for retries with adjusted settings)', which clearly states the tool's action and primary use case. It also distinguishes itself from the sibling tool 'run_quick_print' by specifying when to use each, providing strong purpose clarity.
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?
Explicit guidance is given: 'Use this when you need to tweak slicer parameters... For standard prints without overrides, use run_quick_print instead.' It also lists prerequisites (PrusaSlicer/OrcaSlicer installed, printer idle and connected) and outlines the pipeline steps, offering comprehensive usage guidelines.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
safety_auditA
Query the safety audit log.
Returns a record of all safety-relevant operations: tool executions,
blocked attempts, rate-limit violations, and preflight failures.
Args:
action: Filter by action type. Options: ``"executed"``,
``"blocked"``, ``"rate_limited"``, ``"auth_denied"``,
``"preflight_failed"``, ``"dry_run"``. Omit for all.
tool_name: Filter by MCP tool name (e.g. ``"send_gcode"``).
limit: Maximum number of records to return (default 25, max 100).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| action | No | ||
| tool_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. The description indicates a read-like operation ('Query'), but does not explicitly state it is read-only, non-destructive, or whether authentication is required. It lacks safety guarantees or side-effect warnings, which is a gap for a mutation-ambiguous tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description uses a docstring format with a brief summary and an Args section. It is moderately concise but could be shorter without losing clarity. The structure is clear, but there is some redundancy (e.g., 'Returns a record of all safety-relevant operations' followed by examples).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description should provide more details about the return structure, pagination, or error behavior. It lists return categories but not fields or shape of records. For an agent, this lack of completeness could lead to misinterpretation of the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the description must compensate entirely. It fully documents all three parameters: 'action' with enumerated options, 'tool_name' as a filter, and 'limit' with default/max values. This provides essential semantics that the schema alone lacks, enabling correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Query the safety audit log.' It explicitly lists the types of operations returned (tool executions, blocked attempts, rate-limit violations, preflight failures), making the resource and verb specific and unambiguous. Among many sibling tools, none duplicate this exact functionality, so it stands out.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for querying safety-related operations, but provides no explicit comparison to sibling tools like 'export_audit_trail' or 'verify_audit_integrity'. There is no when-to-use or when-not-to-use guidance, so the agent must infer context 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.
safety_settingsA
Show current safety and auto-print settings.
Displays whether auto-print is enabled for marketplace downloads and AI-generated models, along with guidance on how to change them. Call this early in a session to understand what safety protections are active.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It indicates the tool 'shows' and 'displays' settings, implying read-only operation, but does not explicitly state it has no side effects or required permissions. The lack of behavioral details is a gap, though the tool is simple.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: the first sentence states the core purpose, followed by brief details and a usage recommendation. Every sentence serves a clear role without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, no output schema, and a straightforward purpose, the description is reasonably complete. It explains what the tool shows and when to use it. However, it could mention the return format or that it is safe to call, which would slightly enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters and 100% schema description coverage, so no parameter semantics are needed. The description adds no parameter information, which is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Show current safety and auto-print settings' and specifies what it displays (auto-print status for marketplace and AI models). However, it does not differentiate from sibling tools like 'safety_status' which may also show safety settings. A more explicit distinction would improve clarity.
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 suggests 'Call this early in a session to understand what safety protections are active,' which implies when to use it. However, no when-not-to-use guidance or alternative tools are mentioned. Given the large set of sibling tools, explicit exclusions would be beneficial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
safety_statusA
Get a comprehensive snapshot of all active safety measures.
Returns a single summary showing: the active safety profile, temperature
limits, rate-limit configuration, recent blocked actions, authentication
status, and confirmation-mode status. Use this to answer "is my printer
safe right now?" in a single call.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 discloses the return content (active safety profile, temperature limits, etc.) and implies a read-only operation. It could explicitly state no side effects or permissions, but the listed fields are sufficient for understanding 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, front-loaded with purpose, then elaboration. No wasted words. Every sentence serves a clear function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, the description is complete. It covers what the tool returns and when to use it, which is sufficient for an agent to select and invoke this tool correctly among many safety-related siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters, so the baseline is 4. The description adds significant value by listing the specific data returned, which helps the agent understand the tool's output without relying on an output schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it 'Get[s] a comprehensive snapshot of all active safety measures' and lists specific items included, distinguishing it from sibling tools like 'safety_audit' or 'get_safety_profile'.
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 provides a concrete use case: 'Use this to answer "is my printer safe right now?" in a single call.' While it doesn't explicitly exclude other uses or mention alternatives, the context among sibling tools implies this is for quick overview, not detailed audit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_agent_noteA
Save a persistent note or preference that survives across sessions.
Use this to remember printer quirks, calibration findings, material
preferences, or any operational knowledge worth preserving.
Args:
key: Name for this memory (e.g., ``"z_offset_adjustment"``, ``"pla_temp_notes"``).
value: The information to store.
scope: Namespace — ``"global"``, ``"fleet"``, or use *printer_name* for printer-specific.
printer_name: If provided, scope is automatically set to ``"printer:<name>"``.
ttl_seconds: Optional time-to-live in seconds. The note will be
automatically excluded from queries after this duration. Pass
``None`` (default) for notes that should never expire.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| scope | No | global | |
| value | Yes | ||
| ttl_seconds | No | ||
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so description carries full burden. It explains persistence across sessions, TTL auto-expiry, and scope/printer_name interaction. Adequate disclosure for a storage 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?
Docstring format with Args section is well-structured. First sentence conveys purpose. No wasted words; each sentence adds value.
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 5 params, no output schema, and no annotations, description provides complete coverage: purpose, parameter details, behavioral traits. Agent can confidently use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage; description explains all five parameters: key, value, scope, printer_name, ttl_seconds. Adds meaning about scope override and TTL behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool saves persistent notes/settings. Provides specific use cases like printer quirks, calibration findings, distinguishing it from similar tools like delete_agent_note.
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?
Explicitly says when to use it ('remember printer quirks...'), but does not specify when not to use it or alternatives. However, examples imply usage context, and siblings like delete_agent_note exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_decorationA
Save a proven decoration to the library for reuse on future models.
Captures the content file (heightmap, SVG, image), settings
(depth, mode, material), and processing pipeline from the
``.kiln_recipe.json`` sidecar so the exact same decoration can
be applied to new models with ``apply_decoration``.
:param name: Human-readable name (e.g. "Ash Portrait").
:param model_path: Path to the model that was just decorated.
:param content_type: Content type — ``photo``, ``svg``, ``qr``,
``text``, or ``auto`` (detect from file extension).
:param source_path: Path to the original input file (photo, SVG).
:param content_data: For QR: the data string. For text: the text.
:param depth_mm: Decoration depth in mm (0 = auto from recipe).
:param mode: ``emboss`` or ``deboss``.
:param image_style: Image processing style (coin, portrait, etc.).
:param material: Material used (e.g. PLA, PETG).
:param tags: Comma-separated tags for filtering.
:returns: Dict with saved decoration details and library path.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | emboss | |
| name | Yes | ||
| tags | No | ||
| depth_mm | No | ||
| material | No | PLA | |
| model_path | Yes | ||
| image_style | No | auto | |
| source_path | No | ||
| content_data | No | ||
| content_type | No | auto |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavior. It explains what is captured (content file, settings, pipeline) and that it saves to the library for reuse. However, it does not mention potential side effects like overwriting duplicates, permissions needed, or error scenarios (missing .kiln_recipe.json). This leaves some behavioral ambiguity.
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 well-structured with a concise introductory paragraph followed by a clear parameter list. While the parameter list is lengthy (10 items), it is necessary given the complexity and lack of schema descriptions. No superfluous sentences are 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?
Given the tool's complexity (10 parameters, no output schema, no annotations), the description covers key aspects: purpose, what is captured, the workflow with apply_decoration, and return value (dict with details and library path). Missing some details like conflict resolution or prerequisites, but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, but the tool description provides thorough explanations for all 10 parameters. It clarifies each parameter's role, provides example values (e.g., 'mode' options: emboss/deboss, 'content_type' options: photo/svg/qr/text/auto), and explains the default behavior for 'depth_mm' (0 = auto). This fully compensates for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Save a proven decoration to the library for reuse on future models.' It uses a specific verb 'Save' and resource 'decoration to the library'. It also distinguishes itself from the sibling tool 'apply_decoration' by explaining that the saved decoration can later be applied, avoiding confusion.
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 explains when to use: after proving a decoration on a model, to save it for reuse. It mentions using 'apply_decoration' later, providing a clear workflow connection. However, it does not explicitly state when not to use this tool or list alternatives like 'list_decorations' or 'delete_decoration'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_design_versionA
Save a new version of a parametric design.
Automatically computes a unified diff from the previous version,
increments the version number, and persists a versioned recipe
sidecar (``~/.kiln/designs/<design_id>/.kiln_recipe.vN.json``).
**Upgrade to Kiln Pro** for automatic mesh fingerprinting,
regression detection (warns when features are lost between
versions), and ``.kiln.json`` sidecar provenance files that
travel with your STLs.
Args:
design_id: Identifier grouping versions of the same design.
scad_source: Full OpenSCAD source code for this version.
prompt: The natural-language prompt that produced this version.
parameters: Parametric values used for generation.
notes: Free-text notes for this version.
provenance: Context on how this version was created.
Recommended keys: ``tools_used``, ``change_summary``,
``source_files``. (Pro: auto-enriched with mesh
fingerprinting and regression detection.)
stl_path: Path to the output STL file. (Pro: auto-computes
a geometric fingerprint and warns if features were
lost from the parent version.)
parent_version_id: Unused in this implementation; kept for
backward compatibility. The parent is always the most
recent existing version.
brief_id: Optional saved-goal id from ``design_session``.
When supplied, the new version's recipe records the
link so the audit's "matches what you asked for" gate,
the brief failure_history wiring, and the
``compare_design_versions`` intent diff all join back
to the goal. When omitted, an earlier version's
``brief_id`` (read from the parent recipe) is
inherited automatically.
intent_hash: Optional content hash of the brief's derived
intent payload, paired with ``brief_id``. Same
inheritance fall-back as ``brief_id``.
Returns:
The saved version record including version number, diff, and
parent information. Pro users also get provenance,
mesh_fingerprint, and mesh_diff with regression warnings.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| prompt | No | ||
| brief_id | No | ||
| stl_path | No | ||
| design_id | Yes | ||
| parameters | No | ||
| provenance | No | ||
| intent_hash | No | ||
| scad_source | Yes | ||
| parent_version_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses automatic diff computation, version increment, sidecar persistence, inheritance of brief_id/intent_hash, and parent_version_id being unused. Lacks information on required permissions or side effects like overwriting.
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?
Well-structured with sections for description, Args, and Returns. However, includes promotional text about Kiln Pro, which adds length without essential guidance. Still organized and front-loaded with core 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?
Comprehensive for a tool with 10 parameters, no output schema, and no annotations. Explains behavior, inheritance, and file paths. Lacks error handling or prerequisites, but generally complete for agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description's 'Args' section thoroughly explains all 10 parameters, including recommended keys for provenance and inheritance behavior for brief_id and intent_hash. Adds significant meaning beyond the parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'Save a new version of a parametric design' with specific details about diff computation, version increment, and persistence. Distinguishes from siblings like list_design_versions or diff_design_versions through its action of saving a new version.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance. Usage is implied from the purpose, but no alternatives or conditions are stated. The description focuses on functionality rather than decision context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_print_checkpointA
Save a checkpoint during an active print for accurate resume.
The checkpoint is keyed by ``(printer_name, job_id)`` and read
automatically by :func:`detect_print_failure` so that the resulting
:class:`FailureReport` carries known-good Z / layer / temps. The
resume planner uses this for accurate ``resume_z_mm`` instead of
estimating from ``z_per_layer * resume_layer`` — meaningfully more
accurate when the print uses variable-layer-height slicing.
Args:
printer_name: Name of the printer running the job.
job_id: Unique job identifier.
z_height: Current Z height in mm.
layer_number: Current layer number (0-based).
hotend_temp: Hotend temperature at checkpoint time (Celsius).
bed_temp: Bed temperature at checkpoint time (Celsius).
filament_used_mm: Filament consumed so far in mm.
fan_speed_pct: Part-cooling fan speed (0-100).
flow_rate_pct: Flow-rate multiplier (default 100).
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| bed_temp | No | ||
| z_height | No | ||
| hotend_temp | No | ||
| layer_number | No | ||
| printer_name | Yes | ||
| fan_speed_pct | No | ||
| flow_rate_pct | No | ||
| filament_used_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes the checkpoint's purpose and how it's used by other functions, but does not discuss side effects (e.g., overwriting previous checkpoints), error conditions, or authentication requirements. Adds context but lacks some behavioral details.
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 somewhat long due to the parameter list, but it is well-structured: a clear purpose sentence, followed by explanation, then a parameter block. Could be slightly more concise, but overall efficient and well-organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description should explain return values. It does not mention what the tool returns (e.g., success confirmation, checkpoint ID). Given the complexity (9 parameters, no output schema), this is 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 0%, so the description must compensate. It provides a full parameter list with explanations for all 9 parameters, adding meaning beyond the schema (which only has titles and types). This is excellent compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Save a checkpoint during an active print for accurate resume', specifies the resource (checkpoint), and explains the keying mechanism and integration with other functions. This distinguishes it from siblings like 'start_print', 'pause_print', etc.
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 explains the benefit of using this tool (more accurate resume_z_mm) but does not explicitly state when to use it vs alternatives, nor does it provide exclusions or when not to use it. Usage is implied but not clearly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_shipping_profileA
Save a local shipping profile after explicit user consent.
Args:
name: Profile name, e.g. ``"home"`` or ``"office"``.
shipping_address: Full shipping contact/address dict. Keys:
``first_name``, ``last_name``, ``email``, ``phone``,
``street``, ``city``, ``postal_code``, ``country``;
include ``state`` for US addresses.
overwrite: Replace an existing profile with the same name.
set_default: Make this the default shipping profile.
consent_to_store: Must be ``True``. This is the explicit
consent gate for storing personal contact/address data.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| overwrite | No | ||
| set_default | No | ||
| consent_to_store | No | ||
| shipping_address | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It discloses that consent_to_store must be True and describes the shipping_address keys, but does not explain side effects like error handling or what happens when overwrite is false and a profile exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured as a docstring with an Args section. It is front-loaded with the main purpose, and each parameter description is succinct and informative with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (5 params, nested objects, no output schema), the description covers parameter semantics and the consent requirement. However, it lacks information about the return value or success/failure indication, which would be helpful for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description thoroughly explains each parameter: name examples, shipping_address keys with required fields, the role of overwrite and set_default, and the mandatory consent_to_store. This adds significant value beyond the schema's minimal titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Save a local shipping profile' with explicit verb and resource, and emphasizes the consent requirement. It distinguishes from siblings like delete_shipping_profile and list_shipping_profiles.
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 specifies the condition 'after explicit user consent' and details the consent_to_store parameter. It does not explicitly contrast with alternatives but provides clear context for when to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scale_mesh_to_fitA
Auto-scale a mesh to fit within a build volume while maintaining aspect ratio.
Useful when a model is too large for your printer -- this uniformly
shrinks it to the largest size that fits.
:param file_path: Path to mesh file (.stl).
:param max_x_mm: Maximum X dimension of build volume.
:param max_y_mm: Maximum Y dimension of build volume.
:param max_z_mm: Maximum Z dimension of build volume.
:param printer_id: Optional supported printer model id. When
provided, printer intelligence supplies the build volume.
:param output_path: Output path. Defaults to overwriting input.
:returns: Dict with original/new dimensions and scale factor.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| max_x_mm | No | ||
| max_y_mm | No | ||
| max_z_mm | No | ||
| file_path | Yes | ||
| printer_id | No | ||
| output_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It goes above and beyond by detailing the interactive 3D stage side effect, decimation of oversized meshes, and the fallback which behavior, plus the return dict. It does miss some side-effect warnings like the fact that it can overwrite the input file if no output_path is given (only mentioned in the param docstring, not in the main text) and doesn't discuss permission or error cases, but this is rich context for a complex tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by param docs and then a longer side note about the 3D stage. The 3D stage paragraph is thorough but slightly long; it could be condensed while retaining the key points. However, it is well-structured and every sentence adds value, justifying a high score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 6 parameters, a mutating action (potentially overwriting input), and an unusual side effect (opening a 3D stage), the description covers all the bases: parameters, return value, and side effects. It doesn't explain what happens if both printer_id and explicit dimensions are provided (i.e., precedence), but given the complexity is high, the description is impressively complete for an AI agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does. Each parameter is documented in the docstring: file_path (path to mesh), max_*_mm (build volume dimensions), printer_id (optional printer model to supply build volume), and output_path (defaults to overwriting input). It also explains the return value. This is exactly what the agent needs to invoke the tool correctly, especially noting the interaction between printer_id and the explicit dimension parameters.
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 opens with a clear and specific action: 'Auto-scale a mesh to fit within a build volume while maintaining aspect ratio.' It uses a specific verb (auto-scale), resource (mesh), and context (fit within a build volume). It also explains when it's useful ('when a model is too large for your printer') and includes the key behavior ('uniformly shrinks it to the largest size that fits'), which differentiates it from siblings like rescale_model or auto_orient_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?
The description explicitly states when to use the tool ('Useful when a model is too large for your printer') and clarifies that it shrinks the model, implying it's the right choice for size-constrained printing. However, it does not explicitly contrast with alternative tools (e.g., rescale_model or validate_and_prepare_mesh) or provide 'when not to use' guidance. Clear usage context is present, but exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_all_modelsA
Search across all connected 3D model marketplaces simultaneously.
Searches Thingiverse, MyMiniFactory, Cults3D, and MakerWorld in
parallel and returns interleaved results from all sources. Note
that MakerWorld returns a search URL (no direct API access) while
other sources return actual model results.
Args:
query: Search keywords (e.g. "raspberry pi case", "benchy").
page: Page number (1-based, default 1).
per_page: Results per source (default 10).
sort: Sort order — "relevant", "popular", or "newest".
sources: Optional list to restrict search (e.g. ["thingiverse",
"myminifactory"]). Omit to search all connected sources.
Each result includes a ``source`` field identifying the marketplace.
Results also include ``is_free``, ``has_printable_files`` (has G-code),
and ``has_sliceable_files`` (has STL/3MF) hints.
Use ``model_details`` with the ``id`` to inspect, ``model_files``
to see downloadable files, and ``download_model`` to save locally.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| sort | No | relevant | |
| query | Yes | ||
| sources | No | ||
| per_page | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description discloses key behavioral traits: parallel search across sources, interleaved results, and the limitation that MakerWorld returns a search URL due to no direct API access. It also describes result fields (source, is_free, has_printable_files, has_sliceable_files). However, it does not mention rate limits, authorization, or pagination behavior beyond the page/per_page 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 well-structured with clear sections, bullet points, and examples. Every sentence adds value, and it is appropriately sized for the tool's complexity. No unnecessary repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with no output schema, the description effectively covers inputs, behavioral details (parallel search, source differences), output fields, and next steps via related tools. It is sufficiently complete for an AI agent to understand and invoke the tool 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?
The description provides detailed explanations for all 5 parameters, including examples for query ('raspberry pi case', 'benchy') and explanations for sort order and sources. This adds significant meaning beyond the bare schema (which has 0% coverage). The parameter descriptions are thorough and actionable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches across multiple 3D model marketplaces simultaneously, listing specific sources (Thingiverse, MyMiniFactory, Cults3D, MakerWorld) and mentioning interleaved results. It distinguishes from sibling tools like 'browse_models' and 'search_models' by specifying cross-marketplace search and referencing subsequent tools (model_details, model_files, download_model) for further actions.
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 explains when to use the tool (to search across connected marketplaces) and provides usage context: MakerWorld returns a URL rather than models, and the optional 'sources' parameter allows restriction. It also directs users to related tools (model_details, model_files, download_model) for follow-up. While not explicitly stating when not to use it, the guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_cached_modelsB
Search the local model cache by name, source, tags, or prompt text.
Args:
query: Free-text search against file name, prompt, and tags.
source: Filter by source (e.g. ``"thingiverse"``).
tags: Comma-separated tags to filter by.
limit: Maximum results (default 20).
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| limit | No | ||
| query | No | ||
| source | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only states the tool 'searches' the local cache, implying a read-only, safe operation, but does not explicitly confirm non-destructiveness, specify authorization requirements, or mention any side effects. With no annotation support, the description is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with the core purpose in a single sentence followed by a structured argument list. It is front-loaded and easy to scan. No superfluous words. Could be slightly more compact by integrating argument descriptions into the main sentence, but overall it's efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a basic search tool with 4 parameters and no output schema, the description covers input semantics adequately but omits output format, pagination behavior (beyond the limit default), and expected response shape. With no annotations, the agent lacks information about result ordering, total count, or empty result handling. Adequate but has 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 0%, so the description compensates well by explaining parameter semantics. 'query' is clarified as free-text search against file name, prompt, and tags. 'source' has an example ('"thingiverse"'). 'tags' is described as comma-separated. 'limit' notes default 20. These add non-trivial meaning beyond the schema types. Minor gap: no format constraints or valid values for source.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search the local model cache' with specific filter dimensions (name, source, tags, prompt text). This distinguishes it from sibling tools like search_models (broader) and search_all_models (different scope). The verb 'search' and resource 'local model cache' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., search_models, search_all_models). The description does not specify prerequisites, context, or situations where this tool should be avoided. The user must infer usage purely from the tool name and minimal description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_design_templatesA
Search the template library by natural-language description.
Fuzzy keyword matching against template IDs, descriptions, categories,
and tags. Returns scored matches ranked by relevance.
:param query: Natural-language search string (e.g. "phone stand", "hook").
:param max_results: Maximum number of results (default 10).
:param category_filter: Optional category to limit results (e.g. "hardware").
:returns: Dict with matches list, each containing template_id, score,
description, and category.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No | ||
| category_filter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the fuzzy matching behavior, fields searched, and return format. Since annotations are absent, it adequately covers the main behavioral aspects, but does not explicitly state that it is read-only or mention error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. It front-loads the core purpose, then details matching behavior, return format, and parameter descriptions in a clear, efficient manner without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the matching mechanism, parameters, and return format, which is nearly complete for a search tool. However, it does not mention edge cases (e.g., empty results) or explicitly state the read-only nature, leaving minor 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?
With 0% schema description coverage, the description fully explains each parameter: query as a natural-language string, max_results as a default of 10, and category_filter as an optional filter. It provides examples and clarifies the return structure, adding significant value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches the template library using natural-language descriptions and fuzzy matching. It distinguishes from sibling tools like 'list_design_templates' by focusing on search and scoring, but does not explicitly contrast with 'find_design_templates', which may cause confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as 'find_design_templates' or 'list_design_templates_catalog'. The description only explains the search mechanism, not the context of usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_design_versionsA
Search design versions by prompt, notes, or design name.
Scans all design directories under ``~/.kiln/designs/`` for
versioned recipe files whose prompt, notes, or name fields
contain the query string (case-insensitive).
Args:
query: The search term (literal substring, not regex).
limit: Maximum number of results to return (default 10).
Returns:
A list of matching version records, newest first.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that the tool scans all directories under a specific path, performs case-insensitive literal substring matching, and returns results newest first. No side effects or permissions are mentioned, but for a search tool this is standard. The behavior is well-specified.
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 relatively concise, with the purpose front-loaded and details in a structured list. The 'Args' section uses a bullet-like format that aids readability. Minor improvement could remove redundant phrasing or further condense, but it is efficient overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description gives a concise return description ('list of matching version records, newest first'). It covers scanning, matching fields, case-insensitivity, and search behavior. Some might desire more detail about the record format, but for a search tool this is adequate. The complexity is low.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description must compensate. It does so effectively by explaining that query is a literal substring (not regex) and limit is the maximum results with default 10. This adds value beyond the schema's type/default declarations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('search'), the resource ('design versions'), and the fields searched (prompt, notes, or design name). It also details the scanning location and case-insensitive substring matching, distinguishing it from sibling tools like list_design_versions (which lists all) and search_design_templates (which searches templates).
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: use when you need to find design versions by text in prompt, notes, or name. However, no explicit guidance is given on when not to use this tool or how it compares to alternatives like list_design_versions or search_design_templates. The description relies on context from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_material_catalogA
Search the material catalog by brand, type, or keyword.
Performs a case-insensitive multi-token search across vendor
names, material types, and notes. All tokens must match for
an entry to be returned.
Args:
query: Search text (e.g. ``"Hatchbox PLA"``, ``"PETG"``).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must cover behavioral traits. It discloses case-insensitive multi-token matching and required fields, but does not mention return format, pagination, or side effects. The information is somewhat incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with a clear purpose and a structured Args section. Every sentence adds value, and it is well front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description covers the search logic and parameter meaning. It could be more complete by describing the return format, but it is sufficient for basic use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage for the 'query' parameter. The description compensates by explaining the parameter and providing examples, adding significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches the material catalog by brand, type, or keyword. It specifies the matching behavior (case-insensitive multi-token, all tokens must match), which distinguishes it from other search tools like 'search_cached_models' or 'list_material_catalog'.
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 indicates usage for searching the material catalog, but does not explicitly compare with alternatives like 'list_material_catalog' or other search tools. However, the purpose is clear enough that an agent can infer when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_modelsA
Search Thingiverse for 3D-printable models.
Args:
query: Search keywords (e.g. "raspberry pi case", "benchy").
page: Page number for pagination (1-based, default 1).
per_page: Results per page (default 10, max 100).
sort: Sort order — "relevant", "popular", "newest", or "makes".
Returns a list of model summaries including name, creator, thumbnail,
and download/like counts. Use ``model_details`` with the ``id`` to
get full information, and ``model_files`` to see downloadable files.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| sort | No | relevant | |
| query | Yes | ||
| per_page | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses pagination parameters (page, per_page with default and max), sort options, and the return format (list of model summaries with specific fields). It lacks mention of rate limits or authentication, but for a search tool with no annotations, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: one sentence for purpose, a structured argument list, and a one-sentence return description. It is front-loaded and efficient, though slightly verbose with the Args: formatting.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a simple search with 4 parameters and no output schema, the description covers the purpose, parameters, and return format adequately. It also provides related tools for deeper inspection. It is sufficiently complete for an AI agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries full burden. It explains all four parameters: query (keywords with examples), page (1-based), per_page (default 10, max 100), sort (four allowed values). This adds significant meaning beyond the bare schema, enabling correct use.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches Thingiverse for 3D-printable models with a specific verb (Search) and resource (Thingiverse 3D-printable models). It distinguishes itself by referencing sister tools (model_details, model_files) for next steps, and context from sibling names (like search_all_models) implies a focused 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?
The description provides clear context: use for searching Thingiverse models, and then use model_details or model_files for further details. It does not explicitly exclude alternatives like browse_models or search_all_models, but the guidance is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
select_printer_variantA
Declare which curated hardware variant your machine actually is.
This is how an operator with a modified printer gets an accurate
ceiling WITHOUT typing one. You say which hardware you have; Kiln
supplies the limit from curated, manufacturer-sourced data. There
is no argument here that accepts a temperature, which is the point:
a limit Kiln enforces is always a limit Kiln verified.
Check ``requires`` on the variant first — a ceiling is only true if
its preconditions are met. Several variants need a firmware change
as well as the part, and selecting the variant is your statement
that you have done both. Kiln cannot check your hardware remotely.
The declaration stays on this machine. It is never uploaded or
pooled, and it is ignored entirely on hosted multi-tenant
deployments, where "this machine" has no single owner.
Args:
printer_model: Printer identifier (e.g. ``"ender3"``).
variant_id: Variant to declare, from ``list_printer_variants``.
Pass ``""`` to go back to the as-shipped profile.
| Name | Required | Description | Default |
|---|---|---|---|
| variant_id | No | ||
| printer_model | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it excels: it discloses that the declaration is local-only, never uploaded or pooled, ignored on multi-tenant deployments, and that Kiln cannot remotely verify the hardware. It also explains that selecting a variant asserts firmware/part prerequisites have been satisfied.
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 long but front-loaded with the core purpose and each paragraph adds substantive caveats or behavioral details. Some phrasing could be tightened, but every section earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a tool with no annotations or output schema: it covers when to use it, prerequisites, side effects, persistence, multi-tenant behavior, parameter meaning, and how to reset. The return behavior is sufficiently implied by 'Kiln supplies the limit.'
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?
Despite 0% schema description coverage, the description fully explains both parameters: printer_model is a printer identifier with an example, and variant_id comes from list_printer_variants with '' meaning return to the as-shipped profile. This adds real semantic meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb and resource: 'Declare which curated hardware variant your machine actually is.' It further explains that Kiln supplies an enforced ceiling from curated data and explicitly distinguishes itself from a tool that accepts a temperature value.
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 strong usage context: an operator with a modified printer uses this to get an accurate ceiling without typing one, and should check the variant's 'requires' first. It points to list_printer_variants for valid variant IDs and warns that selection is a statement that preconditions are met, though it does not explicitly name alternative tools besides that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_gcodeA
Send raw G-code commands directly to the printer.
Args:
commands: One or more G-code commands separated by newlines or spaces.
Examples: ``"G28"`` (home all axes), ``"G28\nG1 Z10 F300"``
(home then move Z up 10mm), ``"M104 S200"`` (set hotend to 200C).
dry_run: When ``True``, run the full validation pipeline (auth,
rate-limit, G-code safety) but do **not** actually send commands
to the printer. Returns what *would* have been sent.
The commands are sent sequentially in order. The printer must be
connected (unless ``dry_run`` is ``True``).
G-code is validated before sending. Commands that exceed temperature
limits or modify firmware settings are blocked. Use ``validate_gcode``
to preview what would be allowed without actually sending.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| commands | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses validation, blocking of unsafe commands, sequential sending, and dry_run behavior. Missing explicit return value for actual send, but otherwise transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise and well-structured: front-loaded purpose, then Args with examples. No wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers essential behavioral aspects and usage context. No output schema, so description should explain return values; it only specifies dry_run return. Minor gap but overall complete for agent selection.
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?
Adds significant meaning beyond schema: explains commands format with examples, describes dry_run effect. Schema coverage is 0%, so description fully compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it sends raw G-code commands directly to the printer, with a specific verb and resource. It distinguishes from sibling tool 'validate_gcode' by explicitly mentioning it as an alternative for preview.
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?
Provides clear guidance: use 'validate_gcode' for preview, mentions dry_run for testing, and states printer must be connected unless dry_run. Could be more explicit about when not to use, but adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_autonomy_levelA
Set the autonomy tier (0, 1, or 2).
Level 0 (Confirm All): Every confirm-level tool requires approval.
Level 1 (Pre-screened): Confirm-level tools allowed if constraints pass.
Level 2 (Full Trust): All tools allowed except emergency-level.
Changing this updates the config file. Requires human confirmation
because it affects how much control the agent has.
| Name | Required | Description | Default |
|---|---|---|---|
| level | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses that it modifies a config file and requires human confirmation. The three-level explanation adds behavioral context. However, it could note side effects or permanence.
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?
Every sentence is informative: purpose, level definitions, behavioral impact. No redundant or missing elements. Front-loaded with the core action.
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 set tool with one parameter, it covers main aspects. Lacks return value or error info, but the behavioral note (requires confirmation) is valuable. Could reference 'get_autonomy_level' for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description compensates for 0% schema coverage by fully explaining the 'level' parameter's allowed values (0,1,2) and their meanings. This adds essential semantics beyond the schema's integer type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Set the autonomy tier' and enumerates the three levels with clear definitions. This distinguishes it from its sibling 'get_autonomy_level' and related tools like 'check_autonomy'.
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 explains the impact (updates config, requires human confirmation) and level behaviors. It does not explicitly mention when not to use it, but the context is clear enough for an agent to infer appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_fanA
Set the speed of a printer fan.
Supported on Bambu Lab, OctoPrint, Moonraker/Klipper printers, and
Elegoo's Centauri Carbon (FDM). Prusa Link has no raw G-code endpoint, so
fan control isn't available there
(https://github.com/prusa3d/Prusa-Link/issues/832). Elegoo's resin/MSLA
printers (Saturn, Mars) have no part-cooling fan and are refused.
Args:
node: Which fan to set. ``"part"`` (part-cooling / model fan, the
one that cools each layer) works on every supported printer.
``"aux"`` (auxiliary / big fan) and ``"chamber"`` (chamber /
exhaust fan) are Bambu-only — generic Marlin/Klipper firmware has
no standard auxiliary or chamber fan Kiln can address without
knowing that machine's own G-code macros. Defaults to ``"part"``.
percent: Fan speed 0-100. ``0`` turns the fan off, ``100`` is full
speed. Defaults to ``100``.
Use this to add cooling for bridges and overhangs (part fan), or — on
Bambu — pull heat with the auxiliary fan or run the chamber/exhaust fan
for materials like ABS/ASA. The Bambu chamber fan only exists on
enclosed models — X1 Carbon, X1E, P1S, P2S, H2S — not on open-frame
models (A1, A1 Mini, A2L, P1P), where a chamber command is a no-op. The
printer's own thermal management may override a manual fan speed during
a print.
| Name | Required | Description | Default |
|---|---|---|---|
| node | No | part | |
| percent | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses supported/unsupported printers, default values, node-specific behavior, and thermal management override. However, could mention idempotency or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured: purpose, supported printers, parameter details, usage guidance. No wasted sentences; each part adds value.
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 only 2 parameters and no output schema, description covers all necessary aspects: purpose, parameters, usage, constraints, and edge cases (thermal override, model-specific limitations).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 0% coverage, but description fully explains node values ('part','aux','chamber'), their applicability, and percent range 0-100 with defaults. Adds meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Set the speed of a printer fan' and lists supported printer types. Among sibling tools like set_temperature or set_printer_light, this is uniquely for fan control.
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?
Explicitly says when to use: for cooling bridges/overhangs (part fan) or on Bambu for auxiliary/chamber fans. Also states when not to use: Prusa Link, Elegoo resin printers, open-frame Bambu for chamber fan.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_leveling_policyA
Configure automatic bed leveling policy for a printer.
Args:
enabled: Enable/disable auto-leveling checks.
max_prints: Trigger leveling after this many prints.
max_hours: Trigger leveling after this many hours.
gcode_command: G-code command to send (G29 or BED_MESH_CALIBRATE).
printer_name: Target printer. Omit for the default printer.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | No | ||
| max_hours | No | ||
| max_prints | No | ||
| printer_name | No | ||
| gcode_command | No | G29 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as side effects (e.g., overwriting existing policy), authorization needs, or whether the printer must be idle. Only parameter defaults are listed, leaving significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, starting with a clear purpose sentence followed by a bullet list of parameters. It is front-loaded and efficient, though the parameter list could be slightly more integrated into the prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters, no required fields, and no output schema, the description covers parameter meanings but fails to explain the outcome of the configuration (e.g., whether it returns success/failure) or how it interacts with other leveling-related tools. Adequate but missing return value context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates well by explaining each parameter in the docstring, including values like G29 or BED_MESH_CALIBRATE for gcode_command. Some parameters, like printer_name, are clearer due to the hint about default printer.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it configures an automatic bed leveling policy for a printer, using a specific verb and resource. It distinguishes from siblings like 'trigger_bed_level' by focusing on policy configuration rather than immediate leveling.
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 suggests when to use by defining parameters, but provides no explicit context regarding when to use this tool versus alternatives like 'trigger_bed_level' or prerequisites. Usage is implied but not clearly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_materialA
Record which filament material is loaded in a printer.
This writes down a CLAIM, not a measurement: nothing verifies the spool,
and the record keeps saying the same thing after a filament swap. Kiln
stamps it ``determined_by: user_reported`` and every reader says so, so
never report the recorded material back as confirmed or sensed.
Args:
printer_name: Target printer name.
material: Material type (PLA, PETG, ABS, etc.).
color: Optional filament color.
spool_id: Optional ID of a tracked spool.
tool_index: Extruder index for multi-tool printers (default 0).
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | ||
| material | Yes | ||
| spool_id | No | ||
| tool_index | No | ||
| printer_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It goes beyond a simple 'set' by explaining the semantic nuance: the record is a claim, not verified; nothing checks the spool; the value persists even after a swap; and Kiln marks it as determined_by: user_reported. This transparency is critical for the agent to correctly interpret the tool's output and avoid misreporting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. It leads with a clear one-line purpose, followed by a short explanatory paragraph about the claim semantics, then an Args list. Every sentence adds value, and there is no fluff. The formatting is clean and easy 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?
Given the tool's simplicity (no output schema, no nested objects, 5 simple parameters), the description covers the essential aspects: what it does, the behavioral nuance, and parameter meanings. It is slightly incomplete in that it does not mention what happens after the record is set (e.g., whether other tools will reflect the change immediately) or any error conditions, but these are not critical for an operation of this nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain parameters. It does list all five parameters with brief meanings: printer_name, material (with examples PLA, PETG, ABS), color (optional), spool_id (optional), and tool_index (default 0). This provides basic semantics, but it lacks detail on constraints, formats, or when to use optional parameters. It is adequate but not enriched beyond the schema's titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Record which filament material is loaded in a printer.' It uses a specific verb (record) and resource (material for a printer), and distinguishes itself from read-only sibling tools like get_material or list_materials by emphasizing it writes a claim rather than reports a measurement.
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 tool's intended use (recording a user-reported claim) and warns against misreporting the value as confirmed or sensed. However, it does not explicitly state when to use this tool over alternatives (e.g., get_material, check_material_match) or provide exclusions for when not to use it. The usage context is implied but not fully spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_printer_lightA
Control the printer's LED lights (Bambu Lab printers only).
Args:
node: Which light to control — ``"chamber_light"`` (main
illumination) or ``"work_light"`` (nozzle area).
Defaults to ``"chamber_light"``.
mode: Light mode — ``"on"``, ``"off"``, or ``"flashing"``.
Defaults to ``"on"``.
Use this to improve camera visibility, signal print completion
(flashing), or turn lights off for overnight prints.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | on | |
| node | No | chamber_light |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses the tool's effect (turning lights on/off/flashing) and the printer brand constraint. No hidden behaviors or side effects are omitted; the tool is simple and transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise yet complete: one sentence for purpose, an Args section with clear formatting and defaults, and a usage sentence. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks an explicit return value, but for a light control tool, the outcome is obvious (success/failure). Given no output schema, it is minimally adequate but could mention response content.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description provides all parameter meaning: 'node' lists two valid values with defaults, 'mode' lists three values with defaults. This fully compensates for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool controls 'the printer's LED lights' and restricts to 'Bambu Lab printers only'. It clearly distinguishes from sibling tools like 'set_temperature' or 'set_leveling_policy' by targeting a specific hardware component.
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?
Three concrete use cases are provided: improving camera visibility, signaling print completion via flashing, and turning lights off for overnight prints. While no explicit 'when not to use' is given, the context is sufficient for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_speed_profileA
Set the printer speed profile (Bambu Lab printers only).
Args:
profile: Speed profile name — one of ``"silent"`` (50% speed,
quiet), ``"standard"`` (100%, default), ``"sport"`` (124%,
faster), or ``"ludicrous"`` (166%, maximum speed).
Sport and Ludicrous modes automatically increase nozzle temperature
to prevent under-extrusion at higher flow rates.
Use ``printer_status()`` to see the current speed profile in the
response's ``printer.speed_profile`` field.
| Name | Required | Description | Default |
|---|---|---|---|
| profile | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that Sport and Ludicrous modes increase nozzle temperature, which is a useful behavioral trait. However, it does not mention other potential side effects, permissions required, or return value, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four well-structured sentences with a clear args block. No unnecessary words; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema or annotations, the description covers purpose, parameter, and a behavioral note. Missing information on return value or error handling, but still adequate for a simple setter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description provides detailed parameter semantics: lists all four valid values with their speed percentages and descriptions. This adds significant meaning beyond the schema's minimal 'Profile' title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Set' and the resource 'printer speed profile', and restricts to Bambu Lab printers for specificity. Differentiates from siblings like get_speed_profile and printer_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly limits usage to Bambu Lab printers and suggests using printer_status() to check current profile. Lacks explicit 'when not to use' but the restriction is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_temperatureA
Set the target temperature for the hotend (tool) and/or heated bed.
Args:
tool_temp: Target hotend temperature in Celsius. Pass ``0`` to turn
the heater off. Omit or pass ``null`` to leave unchanged.
bed_temp: Target bed temperature in Celsius. Pass ``0`` to turn
the heater off. Omit or pass ``null`` to leave unchanged.
printer_name: Which printer to heat. Omit for the default printer,
which is what this did before it could be aimed — so asking to
preheat a second machine heated the default one instead. The
safety ceiling follows the named machine: a printer with no
declared model is held to the unknown-printer limit rather than
to the default printer's, which may be the more permissive of
the two.
At least one of ``tool_temp`` or ``bed_temp`` must be provided.
Common PLA temperatures: tool 200-210C, bed 60C.
Common PETG temperatures: tool 230-250C, bed 80-85C.
Common ABS temperatures: tool 240-260C, bed 100-110C.
| Name | Required | Description | Default |
|---|---|---|---|
| bed_temp | No | ||
| tool_temp | No | ||
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does an excellent job. It discloses the off-by-zero behavior, the leave-unchanged on null, the historical default-printer pitfall, and the safety-ceiling rule based on the named printer's declared model. This goes far beyond a typical setter and gives the agent crucial behavioral expectations.
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 well-structured with a clear purpose statement, Args section, and common temperature ranges. Every sentence provides useful information, and the length is justified by the complexity of the tool's safety and multi-printer behavior. There is no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, parameters, edge cases, and even includes practical temperature guides. However, it does not mention the return value or failure/error behavior, and since there is no output schema, the agent might not know what to expect as a result. Still, for a setter tool, this is a minor gap given the strong behavioral coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description compensates fully. Each parameter is explained in detail: tool_temp and bed_temp semantics (0 turns off, null leaves unchanged), and printer_name's role in targeting and safety calculations. The 'at least one' constraint is also explicitly stated, adding meaning that the schema alone does not provide.
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 opens with a clear, specific verb and resource: 'Set the target temperature for the hotend (tool) and/or heated bed.' This unambiguously distinguishes it from sibling tools like set_fan or set_speed_profile, and clearly states both the hotend and bed as targets.
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 explains when to use the tool (to set hotend/bed temperatures) and provides critical usage context: the requirement that at least one temperature be provided, the 0-to-turn-off behavior, and the multi-printer behavior with the default printer and safety-ceiling gotcha. It does not explicitly name alternative tools for exclusions, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
simplify_mesh_modelA
Reduce mesh triangle count for faster preview or smaller files.
Uses vertex-clustering decimation to merge nearby vertices.
The result is a lower-resolution version of the same shape.
:param file_path: Path to the STL file.
:param target_ratio: Target fraction of original triangles (0.01-1.0).
:param output_path: Output path (defaults to ``<name>_simplified.stl``).
:returns: Dict with original/simplified triangle counts and reduction percentage.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| output_path | No | ||
| target_ratio | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries behavioral disclosure: it states the algorithm (vertex-clustering decimation), the output nature (lower-resolution same shape), return values, output file default, and the interactive 3D stage behavior including automatic decimation of oversized meshes. This is richly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and then provides structured param docs and a separate behavioral note. It is longer than minimal but every sentence adds value; the inline 3D stage paragraph could be tightened but is informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a 3-parameter tool, the description covers all essential context: purpose, algorithm, parameter semantics, return contract, output path behavior, and the unusual interactive stage side effect. It is sufficiently complete for an agent to invoke 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?
Despite 0% schema description coverage, the description documents all three parameters with meaningful detail: file_path is the STL path, target_ratio is a 0.01–1.0 fraction, and output_path defaults to `<name>_simplified.stl`. It also describes the return dict, fully compensating for the sparse schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Reduce mesh triangle count for faster preview or smaller files,' clearly distinguishing this from the many mesh-related sibling tools. It also identifies the decimation technique and the resulting lower-resolution version of the same shape.
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 clear usage context: use when you need faster previews or smaller files. It does not explicitly name alternatives or exclusion conditions, but among the large sibling set, the stated goal sufficiently implies when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
skip_print_objectsA
Abandon one or more failed objects on a multi-object plate, mid-print.
When one part on a full plate fails — spaghetti, a knocked-loose object, a
detached corner — this tells the printer to stop printing just those
objects and finish the rest of the plate. One bad part no longer scraps
the whole run. A Kiln Pro feature.
The identifier is backend-specific — pass it as a string, Kiln routes it:
* **Bambu** — the ``label_id`` from ``list_plate_objects`` (e.g. ``"757"``).
* **Klipper / Moonraker / Creality** — the object NAME the slicer labelled
(e.g. ``"Part1"``); the file must have been sliced with object labelling.
* **OctoPrint** — the zero-based ``M486`` object index (needs firmware
M486 support).
Discover Bambu ids first::
list_plate_objects("my_plate.gcode.3mf") # -> objects[].label_id
Printer support (honest): Bambu and any Klipper/Moonraker printer can skip
(Voron, RatRig, Qidi, and Klipper-based Creality and Elegoo Neptune /
OrangeStorm); Marlin printers via OctoPrint or direct USB can if the
firmware speaks M486. Prusa via Prusa Link can't be skipped remotely — an
API limitation, not the printer (it can cancel objects from its own
screen). The Elegoo SDCP protocol (e.g. Centauri Carbon) has no skip
command. A Klipper printer on a non-Klipper connection just needs
reconnecting as Moonraker.
AGENT DISPLAY CONTRACT: skipping is IRREVERSIBLE for the objects named —
confirm the exact objects with the user before calling, and only while a
multi-object plate is actively printing. Skips are cumulative: an object
already skipped stays skipped.
Args:
object_ids: Backend-specific object identifiers to abandon (see above).
plate_number: Which plate the ids came from (1-based, default 1).
Recorded for context; the ids are what the printer acts on.
Returns:
Dict with the skipped objects and a confirmation message, or an error
dict if no print is active or the printer can't skip objects.
| Name | Required | Description | Default |
|---|---|---|---|
| object_ids | Yes | ||
| plate_number | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description fully discloses behavior: 'skipping is IRREVERSIBLE', 'skips are cumulative', 'only while a multi-object plate is actively printing', backend-specific ID handling, and printer support matrix. It also describes the return value shape. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-organized: general purpose, benefits, identifier details, printer support, agent contract, then args and returns. It is front-loaded with the core purpose. However, some details could be more compact without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of multi-backend support and irreversible actions, the description is very complete. It covers all necessary context: prerequisites, printer compatibility, identifier formats, behavior during print, and return value. Without output schema, it still describes return dict structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description compensates by detailing what object_ids are with backend-specific examples (Bambu, Klipper, OctoPrint) and explaining plate_number as 'which plate the ids came from (1-based, default 1) recorded for context'. This adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Abandon one or more failed objects on a multi-object plate, mid-print.' which clearly states the verb (abandon/skip) and resource (objects on a plate). It distinguishes itself from sibling tools like cancel_print (full cancel) and pause_print by specifying partial object skipping. The title also aligns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly explains when to use: 'when one part on a full plate fails' and provides when-not-to-use: 'Prusa via Prusa Link can't be skipped remotely', 'Elegoo SDCP protocol... has no skip command'. It also references sibling list_plate_objects for discovering IDs and includes an agent display contract with usage conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
slice_and_estimateA
Primary estimation tool — slice a 3D model and return time, filament, cost, and printability analysis.
For G-code files (already sliced), use ``estimate_cost`` instead.
For quick volume-based estimates without slicing, use ``estimate_material_cost``.
Slices the model using PrusaSlicer or OrcaSlicer, parses the
output G-code for time and filament metadata, runs printability
analysis (for STL/OBJ/3MF inputs), and returns adhesion
recommendations — all without uploading or starting a print.
Use this tool to answer "how long will this take?" or "how much
filament will I use?" before committing to a print job.
Args:
input_path: Path to the input file (STL, OBJ, 3MF, STEP, AMF).
printer_id: Optional printer model ID for bundled profile
auto-selection (e.g. ``"bambu_a1"``, ``"prusa_mini"``).
profile: Path to a slicer profile/config file (.ini or .json).
Takes precedence over ``printer_id`` auto-selection.
material: Filament material for weight and adhesion estimates
(e.g. ``"PLA"``, ``"PETG"``, ``"ABS"``). Default is
``"PLA"``.
| Name | Required | Description | Default |
|---|---|---|---|
| profile | No | ||
| material | No | PLA | |
| input_path | Yes | ||
| printer_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses key behaviors: slicing with PrusaSlicer or OrcaSlicer, parsing G-code, printability analysis, adhesion recommendations, and that it does not upload or start a print. However, it does not detail output format or error handling.
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 well-structured with a clear initial paragraph and bullet arguments. It is slightly verbose but every sentence adds value. Front-loaded with key differentiators.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and no output schema, the description covers core functionality but lacks detail on output format, error scenarios, or edge cases. It mentions return types but not structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds extensive meaning: it explains supported file formats for input_path, printer_id with examples, profile precedence, and material with default and examples. This fully compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is the primary estimation tool for slicing 3D models and returning time, filament, cost, and printability analysis. It differentiates itself from 'estimate_cost' and 'estimate_material_cost' by specifying input types and use cases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use this tool (before committing to a print job) and when not to (for G-code files use 'estimate_cost', for quick volume estimates use 'estimate_material_cost'). It provides context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
slice_and_printA
Slice a 3D model (STL/3MF) + upload + print in one step (basic pipeline).
For a more comprehensive pipeline with validation and profile auto-detection,
use ``run_quick_print``. For custom slicer overrides, use ``run_reslice_and_print``.
Automatically analyzes bed adhesion and adds brim/raft when needed
based on model geometry, material warp tendency, and printer type.
This adhesion intelligence only activates when no custom profile is
supplied.
Pre-print validation gate: mesh inputs (.stl/.obj/.3mf/.step/.glb)
run through Kiln's full validation pipeline before slicing —
format check, watertight check, auto-repair, printability scoring
(0-100), bed-fit, and material checks. Designs that fail the gate
are blocked before reaching the printer; auto-repaired meshes are
sliced from the repaired path. Pass ``skip_validation=True`` to
bypass (e.g. for already-validated meshes or pre-sliced 3MFs).
Args:
input_path: Path to the 3D model file (STL, 3MF, STEP, etc.).
printer_name: Target printer name. Omit for the default printer.
profile: Path to a slicer profile/config file.
printer_id: Optional printer model ID for bundled profile
auto-selection (e.g. ``"prusa_mini"``).
material: Filament material (e.g. ``"PLA"``, ``"ABS"``). Affects
automatic brim/raft decisions.
metadata: Optional dict of pass-through fields. When
kiln-pro (https://kiln3d.com) is installed it
consumes keys here to generate a printable
assembly manual alongside the print, surfacing it
under ``response["assembly_manual"]``. Without
kiln-pro the metadata is silently ignored.
Recognised keys (all optional):
``assembly_json``, ``manual_output_dir``,
``manual_design_name``, ``manual_branding``,
``manual_co_brand_name``, ``manual_languages``,
``manual_cover_language``. Multi-language and
co-brand are kiln-pro Business+ features
(https://kiln3d.com/pricing).
skip_validation: Bypass the pre-print validation gate.
Defaults to False — designs are pre-tested for
printability before they reach the printer. Set to
True only when the caller has already validated the
mesh (e.g. ``validate_and_prepare`` was just called)
or when the input is a pre-sliced 3MF the validator
can't introspect.
Combines ``slice_model``, ``upload_file``, and ``start_print`` into
a single action.
Branch on ``print_start`` — one field, three values, and the
nested ``print`` block carries the identical pair so the two
halves cannot disagree:
- ``"started"``: the printer, asked after the command, is printing.
- ``"accepted"``: the command was sent and not refused, and the
machine has not confirmed it is running. Normal during the
start-up transient (homing, AMS load, calibration). Call
``printer_status()`` to watch it start.
- ``"failed"``: the printer, asked after the command, is idle or
errored — it did not take the job.
``success`` is ``False`` only for ``"failed"``.
| Name | Required | Description | Default |
|---|---|---|---|
| profile | No | ||
| material | No | ||
| metadata | No | ||
| input_path | Yes | ||
| printer_id | No | ||
| auto_center | No | ||
| printer_name | No | ||
| preview_token | No | ||
| skip_validation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior. It details the combined actions, the automatic brim/raft behavior, the validation gate and skip_validation, and the print_start outcome values ('started', 'accepted', 'failed') with their meanings and when success is false. This is comprehensive and transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is lengthy but well-structured with clear sections (overview, alternatives, adhesion, validation, parameters, print_start branching). While detailed, it avoids redundancy and each part serves a purpose. It is appropriately sized for a tool combining three actions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides extensive context, including behavior, parameter semantics, and return outcomes via print_start and success. It lacks explanations for auto_center and preview_token, and there is no output schema, but the description compensates well for most aspects. It feels nearly complete but not fully exhaustive.
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 description explains most parameters: input_path, printer_name, profile, printer_id, material, metadata (including recognized keys), and skip_validation. However, it omits explanations for auto_center and preview_token, leaving these parameters undefined in the text. Coverage is strong but not complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Slice a 3D model (STL/3MF) + upload + print in one step' and explicitly mentions it combines slice_model, upload_file, and start_print. It also differentiates from siblings by recommending run_quick_print for comprehensive pipelines and run_reslice_and_print for custom overrides.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use alternatives: 'For a more comprehensive pipeline... use run_quick_print. For custom slicer overrides, use run_reslice_and_print.' It also explains conditions for adhesion analysis and validation bypass, giving clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
slice_modelA
Slice a 3D model (STL/3MF/STEP) to G-code using PrusaSlicer or OrcaSlicer.
Args:
input_path: Path to the input file (STL, 3MF, STEP, OBJ, AMF).
output_dir: Directory for the output G-code. Defaults to
the system temp directory.
profile: Path to a slicer profile/config file (.ini or .json).
printer_id: Optional printer model ID for bundled profile
auto-selection (e.g. ``"prusa_mini"``).
slicer_path: Explicit path to the slicer binary. Auto-detected
if omitted.
auto_center: When True (default), off-bed STLs are translated
to a bed-centered copy before slicing. This prevents the
class of crash where origin-centered meshes (common from
compose_part_from_primitives / OpenSCAD output) produce
sliced gcode with negative X/Y moves that drive the
nozzle into the printer frame. Set False only if you've
verified the input is already correctly positioned.
Returns a JSON object with the output G-code path. The output file
can then be uploaded to a printer with ``upload_file`` and printed
with ``start_print``.
| Name | Required | Description | Default |
|---|---|---|---|
| profile | No | ||
| input_path | Yes | ||
| output_dir | No | ||
| printer_id | No | ||
| auto_center | No | ||
| slicer_path | No |
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 discloses key behaviors: slicer auto-detection, auto_center crash prevention, and return format. However, it omits side effects, file modifications, or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a brief intro and an Args section. The auto_center explanation is longer but justified. Overall concise, though slightly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (6 params, 1 required, no output schema), the description covers most aspects: input, outputs, and follow-up tools. It lacks error handling or permission details, but is adequate for a slicing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning to all 6 parameters beyond the schema (which has 0% coverage). It explains defaults, auto-detection, and the auto_center crash mechanism in detail, fully compensating for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool slices 3D models (STL/3MF/STEP) to G-code using specific slicers. It is specific about the verb and resource but does not differentiate from sibling tools like slice_and_estimate or reslice_with_overrides.
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. The description implies it is for general slicing, but given many sibling tools also slice, it fails to provide context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
smart_generate_from_templateA
Generate from template + structural analysis + print settings (recommended for functional parts).
Higher-level than ``generate_from_template`` — adds structural risk analysis
and auto-reinforcement. This is the **one-step design-to-print-ready** pipeline:
1. Generates STL from a parametric template (like ``generate_from_template``)
2. Runs structural risk analysis (thin necks, cantilevers, sharp corners)
3. Optionally auto-applies reinforcements (fillets, wall thickening, etc.)
4. Infers optimal slicer settings tuned to the design's structural profile
5. Returns the STL path + recommended settings ready for slicing
The agent can take the output and directly call ``reslice_with_overrides``
or ``run_reslice_and_print`` with the recommended settings.
:param template_id: Template ID from ``list_design_templates``.
:param parameters: Parameter overrides (e.g., ``{"phone_width": 80}``).
:param material: Filament type for settings inference (PLA, PETG, ABS, etc.).
:param auto_reinforce: If True, auto-apply structural reinforcements.
:returns: Dict with STL path, structural grade, reinforcements, and print settings.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | PLA | |
| parameters | No | ||
| template_id | Yes | ||
| auto_reinforce | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the key behavioral steps: structural risk analysis, optional auto-reinforcement, and inference of slicer settings. However, with no annotations, it does not mention potential side effects, latency, or any destructive actions (e.g., if it modifies files or requires locks). The description focuses on positive capabilities without noting risks or limitations, which is a moderate 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?
The description is detailed and well-structured with a numbered list of steps, making it easy to follow. It is somewhat verbose but necessary for conveying the multi-step pipeline. No redundancy or filler is present, so it earns a high score for clarity despite length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the lack of an output schema, the description explains the return (STL path and recommended settings) and how to chain with subsequent tools. It does not cover edge cases like failure during structural analysis or behavior when auto_reinforce is false, but these are self-explanatory from the description. Overall, it is sufficiently complete for an agent to use effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero descriptive text, so the description carries full burden. It thoroughly covers all four parameters: 'template_id' (from list_design_templates), 'parameters' (with JSON example), 'material' (with example PLA), and 'auto_reinforce' (explains the boolean effect). Each parameter's purpose is clarified beyond the schema, earning full credit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's primary function: generating STL from a template, adding structural analysis and print settings. It explicitly differentiates itself from the simpler 'generate_from_template' by being higher-level and describes the complete pipeline in numbered steps, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides guidance on when to use this tool: it is 'recommended for functional parts' and is a one-step design-to-print-ready pipeline. It also mentions that after using it, the agent can call 'reslice_with_overrides' or 'run_reslice_and_print', but it does not explicitly state when to use simpler alternatives like 'generate_from_template' (e.g., for non-functional parts). This is a minor gap in explicit exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
smart_reprintA
Smart one-shot material-switch reprint — finds the model, detects the right AMS slot, adjusts slicer settings, and prints.
This is the highest-level reprinting tool. Give it a file name (or
partial name) and a target material, and it handles everything:
1. **Find the model**: Searches print history for the file name, then
searches common local directories for the source STL/3MF/STEP file.
2. **Check AMS**: Reads AMS tray status to find which slot has the
target material loaded. Auto-selects the matching slot.
3. **Build overrides**: Generates material-specific slicer overrides
(temperature, speed, retraction) for the target material.
4. **Reslice + print**: Reslices the model with new settings and
starts the print with the correct AMS mapping.
Example: "Reprint my grip extension in PETG"::
smart_reprint(
file_name="grip_extension",
material_id="petg",
printer_name="my_bambu",
printer_id="bambu_a1",
)
The tool will find ``grip_extension.stl`` on disk, detect that PETG
is loaded in AMS slot 1, adjust temps/speeds for PETG, reslice, and
start printing — all in one call.
Saved-goal carry-forward: when the source model on disk has a
``<file>.intent.json`` sidecar tagged with a saved goal, that
goal's id is auto-recovered and surfaced as ``brief_id`` in the
result so downstream ``record_print_outcome`` correctly links the
reprint back to the goal. Pass ``brief_id="..."`` explicitly to
override the sidecar derivation (rare — useful for one-off
re-attributions).
Args:
file_name: Full or partial file name to search for (e.g.
``"grip_extension"`` or ``"grip_extension.stl"``).
Searched in print history first, then in local directories.
material_id: Target material (e.g. ``"petg"``, ``"tpu"``).
printer_name: Registered printer name in fleet.
printer_id: Printer model ID for profile selection.
search_dirs: Optional JSON array of extra directories to search
for the model file (e.g. ``'["/home/user/models"]'``).
extra_overrides: Optional JSON string of additional slicer
overrides (e.g. ``'{"fill_density": "30%"}'``).
auto_ams: If ``True`` (default), automatically detect AMS slot
for the target material. Set to ``False`` to skip AMS
detection (useful for non-Bambu printers).
brief_id: Optional saved-goal id from ``design_session``. When
omitted, the source model's intent sidecar (if any) is read
and the saved goal's id is derived from its ``generator``
field — so a reprint of a brief-attached design keeps the
goal link automatically. Best-effort: missing kiln-pro or
missing sidecar silently skips.
| Name | Required | Description | Default |
|---|---|---|---|
| auto_ams | No | ||
| brief_id | No | ||
| file_name | Yes | ||
| printer_id | No | ||
| material_id | Yes | ||
| search_dirs | No | ||
| printer_name | No | ||
| extra_overrides | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully describes the tool's internal logic: searching print history and local directories, auto-detecting AMS slot, generating slicer overrides, and saved-goal carry-forward. It explains best-effort behavior for brief_id derivation, providing good transparency.
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 comprehensively structured with a summary, numbered steps, an example, and parameter details. While slightly verbose, it is front-loaded with the core purpose and well-organized, making it easy 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?
Given the tool's complexity (8 parameters, no output schema), the description covers the full workflow, parameter semantics, and edge cases like saved-goal carry-forward. It provides sufficient context for an AI agent to understand when and how to invoke the tool 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?
Despite 0% schema description coverage, the description includes a detailed Args section explaining each parameter's purpose, default behavior, and optional use cases (e.g., 'brief_id' derivation from sidecar, 'auto_ams' for non-Bambu printers). This adds substantial meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly defines the tool as a 'Smart one-shot material-switch reprint' and lists its four-step process: find model, check AMS, build overrides, reslice+print. It distinguishes itself as the highest-level reprinting tool, differentiating from simpler sibling tools like 'reprint_with_material' or 'run_reslice_and_print'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a realistic example and states it handles everything given file name and material. However, it does not explicitly caution when to use a simpler tool or when not to use this one, leaving some ambiguity about trade-offs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solve_template_constraintsA
Solve parametric constraints to find valid template parameters.
Given a template and constraints (min/max/equals/ratio), iteratively
adjusts parameters to satisfy all constraints while staying within
the template's declared parameter ranges.
:param template_id: Template identifier (e.g., "shelf_bracket").
:param constraints: JSON object mapping param names to constraint dicts.
Example: ``{"width": {"min": 20, "max": 50}, "height": {"equals": 30}}``
Supported keys: min, max, equals, ratio (e.g. ``{"ratio": ["width", 0.5]}``).
:returns: Dict with solved_params, satisfied/violated constraints.
| Name | Required | Description | Default |
|---|---|---|---|
| constraints | Yes | ||
| template_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description reveals that the tool 'iteratively adjusts parameters' and returns solved/violated constraints. It does not disclose potential side effects, performance limits, or error handling, but covers the core behavior adequately for a solver tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with a one-line summary followed by detailed explanation and parameter definitions. It is slightly verbose but every sentence adds value. Could be more concise without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (solving constraints), the description explains the iterative algorithm, constraint format, and return structure. It does not cover unsolvable cases or timeout behavior, but covers the essential aspects well for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is 0%, but the description provides detailed semantics for both parameters: template_id with an example ('shelf_bracket'), and constraints with a full JSON example and supported keys (min, max, equals, ratio). This compensates fully for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb 'Solve' and resource 'parametric constraints' with a clear goal 'to find valid template parameters'. It immediately conveys the tool's purpose and distinguishes it from other tools like 'generate_template_variations' or 'optimize_template_params' by focusing on constraint solving.
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 does not provide any guidance on when to use this tool versus alternatives, nor does it mention prerequisites or when not to use it. Without explicit usage context, the agent may struggle to select the correct tool among siblings like 'optimize_template_params'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
splice_mesh_at_zA
Splice two meshes at a z-plane: top from one STL, bottom from another.
Takes geometry ABOVE *z_plane* from *top_path* and geometry BELOW
*z_plane* from *bottom_path*. Triangles crossing the boundary are
clipped cleanly. No boolean ops -- works on non-manifold meshes.
**Use case:** Combine a body with the correct top (e.g. logo from
v5.3) with a body that has the correct bottom (e.g. larger pocket
from v5.4) to create the next design iteration.
:param top_path: STL providing geometry above z_plane.
:param bottom_path: STL providing geometry below z_plane.
:param z_plane: Z height (mm) where the splice happens.
:param output_path: Output STL path. Auto-generated if empty.
:returns: Dict with splice stats and output path.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| z_plane | Yes | ||
| top_path | Yes | ||
| bottom_path | Yes | ||
| output_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries behavioral disclosure. It explains the top/bottom geometry selection, clean clipping of crossing triangles, non-boolean behavior, auto-generated output path, returned dictionary content, inline 3D stage behavior, oversized-mesh decimation, and preview limitations. This is rich, specific behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description uses short labeled sections and every sentence adds distinct value: what the tool does, how clipping works, use case, parameter definitions, return contract, and the 3D stage behavior. It is thorough without being bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete: it documents all four parameters, return value shape, non-manifold support, clipping behavior, and the side-effect of opening the interactive 3D stage. Since no output schema exists, including the return dictionary and stage behavior is essential and well-handled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description fully compensates by documenting every parameter: top_path, bottom_path, z_plane (with mm unit), and output_path (with auto-generation semantics). This adds meaning far beyond the schema's bare titles like 'Top Path' and 'Z Plane'.
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 opens with a precise action and resource: 'Splice two meshes at a z-plane', then clarifies top from one STL and bottom from another. It distinguishes from sibling tools like boolean_mesh_op and merge_stl by explicitly stating 'No boolean ops' and 'works on non-manifold meshes', making the tool's unique role 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?
The description provides a concrete named use case: combine a body with the correct top (logo from v5.3) with one having the correct bottom (larger pocket from v5.4). It also implies when NOT to use boolean alternatives with 'No boolean ops -- works on non-manifold meshes', but it doesn't name alternative tools explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
split_mesh_by_componentA
Split a multi-component mesh into separate STL files.
Identifies disconnected bodies (components) using shared-edge
analysis and writes each as a separate file.
:param file_path: Path to mesh file (.stl).
:param output_dir: Directory for output files. Defaults to input directory.
:returns: Dict with component count and file paths.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| output_dir | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description includes useful behavioral details beyond the schema, such as the connected-component analysis mechanism, default output location, and the return value structure (dict with count and file paths). It also transparently notes the 3D stage integration and fallback behavior for hosts without MCP Apps panel support. However, it does not mention side effects like file overwriting or cleanup of the original file.
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 somewhat front-loaded with the main action in the first sentencevie, but then provides technical details (connected-component analysis, 3D stage) that may be less critical for an agent. The inline parameter documentation is helpful but could be more 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?
The description covers the function, parameters, return value, and a dependency (3D stage support). It is generally complete for a file-splitting utility. It could mention error cases (e.g., file without multiple components) or edge cases (non-STL formats), but overall gives an agent enough to proceed.
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 description explains 'file_path' as the path to the mesh file, but does not mention supported formats (e.g., .stl, .obj) or file size limits. 'output_dir' is explained with a default behavior ('input directory'). Schema coverage is 0% so these explanations are valuable, but parameter details beyond 'output directory' are thin.
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 ('Split') and clearly identifies the resource ('a multi-component mesh') and the outcome ('into separate STL files'). It also explains the mechanism ('identifies disconnected bodies via connected-component analysis'), which provides clear functional understanding and differentiates it from vague sibling tools like 'merge_stl' or 'arrange_parts_on_plate'.
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 explains what the tool does but does not explicitly state when to use it versus alternatives. There is no mention of alternatives like 'merge_stl' or 'extract_plate_object'. The context is implied (when you need separate files per component) but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
split_plan_statusB
Check the progress of a split plan.
Args:
plan_id: The plan ID returned by submitting a split plan.
| Name | Required | Description | Default |
|---|---|---|---|
| plan_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only says 'check the progress' without disclosing if it is read-only, what side effects exist, or what constitutes progress (e.g., status string, percentage).
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?
Very concise (two lines) but includes an 'Args:' section that is somewhat redundant for a single parameter. Still efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description does not explain what the return value represents (e.g., status, percentage). For a simple tool, this is 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 coverage is 0%, so parameter details rely on description. It adds 'The plan ID returned by submitting a split plan,' which tells where to get the ID but lacks format or constraints. Baseline 3 for one parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Check the progress of a split plan,' which is a specific verb+resource. It distinguishes from siblings like cancel_split_plan and plan_assembly_split.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. It implies use after submitting a split plan, but does not explicitly state prerequisites or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sso_exchange_codeA
Exchange an SSO authorization code for user identity and role.
Enterprise feature. After the user completes IdP login, exchange
the auth code to get their identity, email, groups, and mapped
Kiln role.
Args:
code: The authorization code from the IdP callback.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes |
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 discloses the output (identity, email, groups, role) and the action, but does not mention any side effects, authentication requirements, or state changes, leaving gaps in behavioral understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with the purpose stated first, followed by context (enterprise feature) and a brief parameter explanation. Every sentence adds value, and the structure is easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description adequately explains the return values (identity, email, groups, role). It also notes enterprise feature and the parameter source. It could mention prerequisites like SSO being configured, but overall it is fairly complete for a simple exchange tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the schema only provides the parameter name and type. The description adds crucial meaning by explaining that 'code' is the authorization code from the IdP callback, which is essential for correct usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Exchange an SSO authorization code for user identity and role'), specifies it's an enterprise feature, and distinguishes it from related tools like sso_login_url and sso_status by focusing on the code exchange step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use after IdP login to exchange the auth code. It does not explicitly state when not to use or name alternatives, but the context is sufficient for a specific tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sso_login_urlA
Get the SSO login URL to redirect users to the identity provider.
Enterprise feature. Returns the IdP authorization URL for OIDC or
the SAML AuthnRequest redirect URL.
Args:
state: Optional opaque state parameter for CSRF protection.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It clearly states the output (IdP authorization URL or SAML redirect) and mentions the optional state parameter for CSRF protection. It does not mention side effects or authentication requirements beyond enterprise feature, but the read-only nature is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (three lines) and well-structured: primary action first, context ('Enterprise feature'), output explanation, then parameter description. 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 tool with one parameter and no output schema, the description covers input and output sufficiently. It explains what is returned but could mention prerequisite setup or error conditions, though not critical.
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 schema has 0% description coverage, so the description must compensate. It fully explains the 'state' parameter's purpose ('optional opaque state parameter for CSRF protection'), adding meaning beyond the schema's name and type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets the SSO login URL for redirecting users to the identity provider, and specifies it returns OIDC or SAML URLs. This distinguishes it from sibling tools like sso_exchange_code and sso_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions it's an 'Enterprise feature,' giving context, but does not explicitly state when to use it vs alternatives or provide exclusions. It implies usage for initiating SSO login but lacks clear guidelines.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sso_statusA
Check current SSO configuration status.
Enterprise feature. Returns whether SSO is configured, the protocol, issuer, allowed domains, and role mapping.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 discloses what information is returned but does not explicitly state that the operation is read-only or has no side effects. The 'Enterprise feature' hint adds some transparency about access restrictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences. The first sentence clearly states the purpose, and the second lists the return fields. Efficient use of words without unnecessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description adequately explains what the tool returns. However, it does not explicitly mention that this is a read-only operation, which would enhance completeness for an enterprise admin tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description need not add parameter information. Baseline score of 4 is appropriate as there is no schema information to supplement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Check' and the resource 'SSO configuration status', and lists specific return fields (configured, protocol, issuer, allowed domains, role mapping). This distinguishes it from related sibling tools like configure_sso, sso_exchange_code, and sso_login_url.
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 notes 'Enterprise feature', which implies intended audience but lacks explicit guidance on when to use this tool versus alternatives like configure_sso. No when-not-to-use or context about prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_gcode_interceptionA
Start a real-time G-code interception session for a printer.
Automatically loads safety-profile-based rules (temperature limits,
feedrate caps, blocked commands) for the printer. Use
``add_interception_rule`` to add custom rules after starting.
Args:
printer_name: Target printer name (e.g. "ender3", "voron-350").
Returns a session ID and initial rule set.
AGENT CONTRACT: when ``coverage_warnings`` is non-empty this session
is running with reduced protection (generic temperature limits, or no
bed-fit rules because the build volume is unknown). Relay those
warnings to the user verbatim -- do not present the session as fully
protected. Passing the printer's model key (e.g. "bambu_a1") instead
of a nickname resolves the gap.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and excels: it discloses automatic loading of safety rules, reduced protection when coverage_warnings is non-empty, and the importance of specifying the printer model key. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear first sentence, followed by details and a useful AGENT CONTRACT. It is slightly long but every sentence adds value, maintaining efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the presence of an output schema (not shown), the description is complete: it covers purpose, behavior, return values, and common caveats (coverage_warnings). It addresses key usage scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter (printer_name) has 0% schema coverage, but the description adds value with examples (e.g., 'ender3', 'voron-350') and explains its purpose. This significantly aids parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it starts a real-time G-code interception session for a printer, specifying the resource (printer) and action (start session). It distinguishes from sibling tools like stop_gcode_interception and add_interception_rule.
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?
Description provides clear context: it mentions using add_interception_rule for custom rules after starting, and includes an AGENT CONTRACT that guides when to relay warnings. However, it does not explicitly state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_monitored_printA
Start a print and automatically monitor the first layer.
This is the recommended way to start prints autonomously. It combines
start_print with first-layer monitoring in a single operation:
1. Starts the print
2. Waits for the configured delay (default 2 minutes)
3. Captures snapshots during first layers
4. Returns snapshots for you to visually inspect
5. Optionally auto-pauses if you report a failure
Use this instead of start_print when operating autonomously (Level 1/2)
to satisfy the first-layer monitoring safety requirement.
Args:
file_name: Name of the file to print (must exist on printer).
printer_name: Target printer. Omit for default.
first_layer_delay: Seconds to wait before first snapshot (default 120).
first_layer_checks: Number of first-layer snapshots to capture (default 3).
first_layer_interval: Seconds between snapshots (default 60).
auto_pause: Auto-pause if snapshot analysis detects failure (default True).
| Name | Required | Description | Default |
|---|---|---|---|
| file_name | Yes | ||
| auto_pause | No | ||
| printer_name | No | ||
| preview_token | No | ||
| first_layer_delay | No | ||
| first_layer_checks | No | ||
| first_layer_interval | No |
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 a clear step-by-step workflow (starts print, waits, captures snapshots, returns them, optionally auto-pauses). It also mentions the auto_pause behavior driven by failure reports. It could go further by describing what happens after monitoring ends or stopping behavior, but for a print start tool, this is thorough.
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 longer than average, but every part earns its place: a one-line summary, a short rationale, a numbered workflow, and a compact parameter list. It is front-loaded with the purpose. The only criticism is minor redundancy (e.g., 'first layer' repeated multiple times) and the aspirational 'optionally auto-pauses if you report a failure' could be more precise about how the reporting happens.
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 an output schema and complex workflow, the description covers the start-to-finish behavior, all key parameters, and the safety context. It omits any mention of the preview_token parameter and doesn't describe error conditions or what happens if the printer is not available. However, given the sibling ecosystem and the tool's purpose, it is largely self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description provides meaningful, human-readable semantics for 6 of 7 parameters, including required status for file_name, the default-printer behavior for printer_name, and the units (seconds) and defaults for the first_layer_* parameters. Only preview_token is left undocumented, but its purpose is somewhat inferable from the name.
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 opens with a clear, specific verb+resource: 'Start a print and automatically monitor the first layer.' It immediately differentiates itself from the sibling tool start_print by stating it is the recommended way to start prints autonomously, and references the specific Level 1/2 autonomy requirement.
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?
Explicitly states when to use this tool: 'Use this instead of start_print when operating autonomously (Level 1/2) to satisfy the first-layer monitoring safety requirement.' This directly contrasts with an alternative and gives a concrete condition for selection. The tool's position as the recommended autonomous path is unambiguous.
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 file already uploaded to the printer (file must exist on printer).
Use ``upload_file`` first, or use ``slice_and_print`` / ``run_quick_print``
to slice + upload + print in one step. Automatically runs pre-flight safety
checks before starting. If any check fails the print is blocked and the
check results are returned so the agent can diagnose and fix the issue.
Args:
file_name: Name or path of the file as shown by ``printer_files()``.
use_ams: AMS filament feeding mode (Bambu only). Tri-state:
- ``"auto"`` (default): auto-detect AMS by probing the printer.
If an AMS is connected with loaded trays, enables AMS
automatically and selects the first loaded slot if no
``ams_mapping`` is provided. Falls back to external spool
if no AMS is detected.
- ``"true"`` / ``True``: Force AMS on. Use when you know AMS
is connected.
- ``"false"`` / ``False``: Force AMS off. Use external spool.
ams_mapping: Slot mapping per extruder (Bambu only). Defaults to
``[0]`` when AMS feeding is on and ``[]`` (external spool) when
it is off. Use ``-1`` for unused positions. Check
``ams_status()`` to see which slots have filament.
timelapse: Record a timelapse video (Bambu only). Default ``False``.
bed_leveling: Run automatic bed leveling before print (Bambu only).
Default ``True``. Set ``False`` to skip for reprints (~2 min saved).
flow_cali: Run flow calibration (Bambu only). Default ``True``.
vibration_cali: Run vibration/resonance calibration (Bambu only).
Default ``True``.
layer_inspect: Enable first-layer lidar inspection pause (Bambu only).
Default ``False``.
nozzle_clog_detect: Enable nozzle clumping / blob detection by
probing (Bambu only). Default ``True``. Set ``False`` to
bypass HMS 0300-8014 errors on models that trigger false
positives (thin first-layer geometry, certain grip/case models).
Disables the A1/A1-mini eddy-current clump probe (first after
the layer-3 walls, then once per ~8 g of filament; A1 series only).
bed_type: Bed surface type (Bambu only). Default ``"auto"``.
plate_number: Plate index in multi-plate 3MF files (Bambu only).
Default ``1``.
resume_from_paused: When ``True``, the pre-flight ``printer_idle``
check accepts ``paused`` as a valid state. Use this when
starting a resume-mode 3MF (mid-print decoration swap):
the printer is paused, you upload the resume 3MF, and then
``start_print`` it with this flag. The file is treated as
a fresh print from the firmware's POV — the resume gcode
carries its own preamble (heat → safety lift → home X/Y →
travel → descend to resume Z). Default ``False``.
Auto-detected for files whose name contains ``_resume_``
(case-insensitive) or starts with ``transformed_resume`` /
``original_resume`` — these are the conventional names
produced by ``decorate_during_print`` and ``revert_mid_print``.
skip_preheat_reassert: When the file is a resume-mode 3MF, the
tool re-asserts the printer's pre-start hotend + bed targets
immediately after the MQTT start command, because Bambu's
resume 3MFs strip the M140/M190 pre-heat block (the original
print already heated the bed) and the firmware's
cool-on-new-job policy will otherwise drop the bed to 0
before the resume preamble executes. Set ``True`` to
disable this safety net. Default ``False``.
printer_name: Which printer to start the job on. Omit to start
on the default printer, which is what this did before it
could be aimed. Everything the start decides — the pre-flight
verdict, the preview token's printer, the emergency latch,
the nozzle-wear consult, the watchdog that will be watching —
follows the named machine, so upload the file to that same
printer first (``upload_file(..., printer_name=...)``).
Listed last so existing positional calls keep their meaning.
Branch on ``print_start`` — one field, three values:
- ``"started"``: the printer, asked after the command, is printing.
- ``"accepted"``: the command was sent and not refused, and the machine
has not confirmed it is running. Normal during the start-up transient
(homing, AMS load, calibration). Call ``printer_status()`` to watch.
- ``"failed"``: the printer, asked after the command, is idle or errored
— it did not take the job.
``success`` is ``False`` only for ``"failed"``.
| Name | Required | Description | Default |
|---|---|---|---|
| use_ams | No | auto | |
| bed_type | No | auto | |
| file_name | Yes | ||
| flow_cali | No | ||
| timelapse | No | ||
| ams_mapping | No | ||
| bed_leveling | No | ||
| plate_number | No | ||
| printer_name | No | ||
| layer_inspect | No | ||
| preview_token | No | ||
| vibration_cali | No | ||
| nozzle_clog_detect | No | ||
| resume_from_paused | No | ||
| skip_preheat_reassert | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden and exceeds it. It discloses automatic pre-flight safety checks and the blocking behavior on failure, the three-value print_start branch with diagnostic guidance, the firmware's cool-on-new-job policy and the preheat reassert safety net, and false-positive bypass behavior for nozzle_clog_detect — all beyond the literal 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?
The description is long but every sentence adds value — no filler or restatement. It is front-loaded with the core action and alternatives, then organized as a clear parameter-by-parameter reference with bolded defaults and rationale. The detail is proportionate to the 15-parameter complexity (many only relevant to Bambu printers), and the structure keeps it scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers all essential context: preconditions (file already on printer), automatic safety checks, return branch semantics (started/accepted/failed), success flag meaning, multi-printer routing (printer_name affects pre-flight, preview token, emergency latch, nozzle-wear consult, watchdog), and resume-mode subtleties. This is a complete operational picture for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates richly for every parameter. Each parameter gets a purpose, default, and in most cases behavioral consequences (e.g., use_ams tri-state fallback, ams_mapping defaults based on AMS state, bed_leveling saving ~2 min, resume_from_paused auto-detection by file name). This is exemplary compensation for a sparse schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first line states "Start printing a file already uploaded to the printer" — a specific verb and resource with a clear precondition. It further distinguishes itself from siblings by explicitly referencing upload_file, slice_and_print, and run_quick_print, making the tool's role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when to use this tool vs alternatives: "Use upload_file first, or use slice_and_print / run_quick_print to slice + upload + print in one step." It also provides conditional guidance for params like resume_from_paused (for resume-mode 3MF) and printer_name ("upload the file to that same printer first"), forming a complete usage model.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_printer_health_monitoringA
Start continuous background health monitoring for a printer.
Runs periodic checks covering connectivity, temperature stability,
print job health (layer progress stalls, error codes), and active
error detection. Alerts are generated when anomalies are found.
Kiln keeps a live watch on as many machines at once as your plan
runs — one on Free and Pro. Checking a printer yourself is not a
watch and is never limited: ``printer_status``, ``monitor_print``
and ``printer_snapshot`` answer for any machine at any tier, and so
does stopping one.
:param printer_name: Printer to monitor.
:param interval_seconds: Seconds between health checks (default 30).
See also: ``stop_printer_health_monitoring()``,
``check_printer_health()``, ``printer_status()``.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_name | Yes | ||
| interval_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that checks run periodically, alerts are generated on anomalies, and that the number of concurrent watches depends on the plan. Additional context about manual checks not being limited adds transparency. It does not elaborate on alert delivery or error handling, but the coverage is strong.
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 well-structured and front-loaded with the primary purpose, followed by supporting details. It includes plan limitations and parameter documentation, with a 'See also' section for related tools. While a bit long, every sentence contributes value and there is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (continuous background process with plan limits), the description is complete. It explains what it does, when to use it, its limitations, parameters, and related tools. No output schema is needed for a start-monitoring action, and the description covers all necessary context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description explicitly documents both parameters: 'printer_name: Printer to monitor' and 'interval_seconds: Seconds between health checks (default 30).' This adds meaning beyond the bare schema and fully compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Start continuous background health monitoring for a printer.' It details what the monitoring covers (connectivity, temperature stability, print job health, error detection) and distinguishes it from manual checks and sibling tools like check_printer_health and stop_printer_health_monitoring.
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?
Provides explicit usage guidance: explains plan limits (one watch on Free and Pro), clarifies that manual checks (printer_status, monitor_print, printer_snapshot) are never limited, and recommends alternatives. It also points out how to stop monitoring via the sibling tool, making the decision context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_print_recoveryA
Begin executing a recovery plan.
Creates a recovery session that tracks the recovery lifecycle.
Args:
plan_id: The plan_id from a plan_failure_recovery result.
failure_id: The failure_id this recovery addresses.
| Name | Required | Description | Default |
|---|---|---|---|
| plan_id | Yes | ||
| failure_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so description carries full burden. It mentions creating a recovery session and tracking lifecycle but omits critical behavioral traits such as idempotency, required permissions, whether multiple sessions can exist, or what happens on re-call. This leaves ambiguity for the agent.
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?
Description is concise: three sentences that front-load the purpose and then succinctly describe parameters. No redundant information, every sentence adds value.
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?
As a tool initiating a recovery workflow, the description does not mention what the tool returns (expected to be a session ID), which is a significant gap given no output schema. Preconditions (must have a recovery plan) are implied but not explicit, leaving the agent without full context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (no parameter descriptions in schema). The description adds meaning by explaining the source of plan_id (a plan_failure_recovery result) and the role of failure_id. This provides context beyond the schema's type and title, but lacks format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states it begins executing a recovery plan and creates a recovery session. The verb 'start' plus 'print_recovery' clearly identifies the action and distinguishes from sibling tools like 'plan_failure_recovery' and 'complete_print_recovery'.
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?
Description specifies that plan_id must come from a plan_failure_recovery result and failure_id is the addressed failure, providing clear context for when to use this tool. However, it does not explicitly state when not to use or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
step_file_infoA
Extract metadata from a STEP file without converting it.
Parses the STEP ASCII header to extract product names, estimated
body count, file schema, and other metadata. This is fast and
requires no external backend.
Use this to inspect a STEP file before deciding whether to
import it.
Args:
file_path: Path to the STEP/STP file.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions that it parses the STEP ASCII header, is fast, and requires no external backend. With no annotations provided, it adequately discloses the tool's behavior for a simple metadata extraction tool, though it omits error handling details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three clear parts: main action, details, and usage recommendation. Every sentence adds value, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers what the tool does, what metadata it returns, and why to use it. It is complete and leaves no major 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?
The description adds meaning to the single parameter 'file_path' by specifying it expects '.step' or '.stp' files, which is not in the schema. This fully compensates for the 0% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Extract metadata from a STEP file' and lists specific metadata like product names, body count, and file schema. It distinguishes from sibling 'import_step_file' as it does not convert the 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 explicitly advises to use this tool to inspect a file before deciding to import it, providing clear usage context. It does not explicitly name an alternative but implies the alternative is to use 'import_step_file' for conversion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_gcode_interceptionB
Stop a G-code interception session.
Args:
session_id: The session ID returned by ``start_gcode_interception``.
Returns the final session stats.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It states it stops a session and returns stats, but does not mention side effects (e.g., ending interception, releasing resources) or whether it is destructive. This is insufficient for an AI agent to understand consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with no wasted words. It uses a clear 'Args:' section to document the parameter and a separate sentence for the return value. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one parameter and an output schema (not shown but implied), the description is minimally complete. It lacks prerequisites, error conditions, or behavioral notes. For a simple stop action, it's adequate but not thorough.
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 description explains the single parameter 'session_id' as the one returned by 'start_gcode_interception', providing crucial context beyond the schema (which has 0% coverage). This tells the agent where to obtain the ID. A minor improvement would be to specify the expected format or type.
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 the tool stops a G-code interception session, which is a specific verb and resource. It clearly differentiates from 'start_gcode_interception' by using the opposite verb. However, it does not elaborate on what stopping entails beyond ending the session.
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 use this tool, such as prerequisites (e.g., an active session) or when not to use it. No alternatives are mentioned, though the sibling list includes related tools like 'get_interception_status' or 'list_interception_sessions'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_printer_health_monitoringA
Stop background health monitoring for a printer.
Cancels the periodic health-check loop started by
``start_printer_health_monitoring()``. Active alerts are cleared.
Monitoring can be restarted at any time by calling
``start_printer_health_monitoring()`` again.
:param printer_name: Printer to stop monitoring.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description provides some behavioral details: it clears active alerts and is reversible. Lacks information about permissions, idempotency, or side effects on ongoing operations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences plus a param docstring. No wasted words, front-loaded with purpose. Every sentence adds value.
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 simplicity (1 param, no output schema, no annotations), the description covers purpose, reversal, and alert clearing. Could mention error states or behavior if called when not started, but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The param docstring 'Printer to stop monitoring' adds semantic meaning beyond the schema's 'Printer Name'. With 0% schema coverage, the description compensates adequately for the single parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it stops background health monitoring for a printer. Distinguishes from sibling start_printer_health_monitoring by describing the inverse operation.
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?
Explicitly says to cancel the health-check loop started by start_printer_health_monitoring and mentions it can be restarted. Does not explicitly state when not to use, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_watch_printA
Stop a background print watcher and return its final state.
Signals the watcher thread to exit and removes it from the
active watchers registry.
Args:
watch_id: The watcher ID returned by ``watch_print``.
| Name | Required | Description | Default |
|---|---|---|---|
| watch_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses basic behavior (signals exit, removes from registry) but misses important details such as whether the operation is idempotent, what happens if the watcher ID is invalid, or any required permissions. With no annotations, the burden is on the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with two sentences. The main action is front-loaded, and every sentence adds value with no repetition or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple lifecycle tool with one parameter and no output schema, the description provides adequate purpose and parameter context, but lacks details on return state format and idempotency, leaving some ambiguity.
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 schema provides no description for the 'watch_id' parameter (0% coverage). The description adds context by specifying that it is the ID returned by 'watch_print', but does not elaborate on format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool stops a background print watcher and returns its final state. It mentions the key resource (watcher) and action (stop), distinguishing it from sibling tools like 'watch_print' which starts a watcher.
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 this tool is used after starting a watcher with 'watch_print', but it does not explicitly state when to use it, nor does it contrast with alternatives or mention any preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
store_credentialA
Encrypt and store a credential (API key, webhook secret, etc.).
The value is encrypted at rest using PBKDF2 + XOR stream encryption.
Only metadata is returned — the plaintext is never exposed.
Args:
credential_type: Type of credential (api_key, webhook_secret,
stripe_key, marketplace_token, printer_password).
value: The plaintext secret to store.
label: Human-readable description.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | ||
| value | Yes | ||
| credential_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses encryption method (PBKDF2 + XOR), at-rest encryption, and that only metadata is returned (plaintext never exposed). This goes beyond basic 'store' 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?
The description is concise and front-loaded with the main action. The Args section is well-structured. Minor redundancy ('Encrypt and store' then repeating encryption) but 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?
Given the tool's simplicity (3 params, no output schema), the description adequately explains the core behavior and parameters. It mentions the return behavior (only metadata) and encryption, making it complete for a credential storage operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description's 'Args' section adds meaning for all three parameters, including examples for credential_type and clarity for value and label. This compensates well for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool encrypts and stores a credential, distinguishing it from siblings like 'retrieve_credential' and 'list_credentials'. The verb 'store' paired with the resource 'credential' makes the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for storing sensitive secrets but does not explicitly state when to use this tool versus alternatives like 'retrieve_credential' or 'list_credentials'. No condition or exclusion is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_jobA
Submit a print job to the queue.
Free tier allows up to 10 queued jobs for single-printer use.
Pro tier unlocks unlimited queue depth with multi-printer scheduling.
Args:
file_name: G-code file name (must already exist on the printer).
printer_name: Target printer name, or omit to let the scheduler
pick any idle printer.
priority: Higher values are scheduled first (default 0).
idempotency_key: Optional opaque key (e.g. a UUID you generate)
naming this one submission. If your call fails in a way
where you cannot tell whether the job was queued — a timeout,
a dropped connection — retry with the SAME key: you will get
the original job back (``submission: "replayed"``) instead of
queuing a duplicate print. Use a NEW key for each job you
genuinely want printed; reusing a key with different
parameters is refused.
Jobs are executed in priority order, with FIFO tie-breaking.
Use ``job_status`` to check progress and ``queue_summary`` for an overview.
| Name | Required | Description | Default |
|---|---|---|---|
| priority | No | ||
| file_name | Yes | ||
| printer_name | No | ||
| idempotency_key | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral disclosure. It covers queue depth limits, scheduling behavior, priority ordering with FIFO tie-breaking, idempotency semantics including replay responses and rejection on key misuse, and the requirement that the file must already exist.
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 well structured: use-case summary first, then tier constraints, per-argument semantics, scheduling order, and related tools. Every sentence adds useful information without unnecessary filler, and the idempotency explanation is detailed but necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description compensates well by explaining job queue behavior, ordering, retry semantics, and follow-up tooling. However, it never describes what a normal successful submission returns (e.g., whether a job ID is issued), so an agent may lack some clarity about the direct response shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description gives detailed meaning to each of the four parameters: file_name prerequisite, printer_name selection behavior, priority ordering semantics, and the crucial idempotency_key retry/replay contract.
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 opens with a direct verb-object statement: "Submit a print job to the queue." It specifies the resource (print job queue), the action (submit), and clearly separates this submission tool from follow-up tools like job_status and queue_summary.
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 concrete context about tier limits, single vs multi-printer scheduling, retry behavior, and points the agent to job_status for progress and queue_summary for overview. It does not explicitly exclude alternative submission tools like fleet_submit_job or route_print_job, but it describes the queued-job context well enough for most selection decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_provider_jobA
Submit a print job through a connected provider integration.
Args:
file_url: Public URL of the model file to print.
material: Material to print with (e.g. "PLA", "PETG").
printer_id: Optional target printer ID. If omitted, provider
auto-assigns the best available printer.
Returns a provider-managed job reference. Use
``provider_job_status`` to track progress.
| Name | Required | Description | Default |
|---|---|---|---|
| file_url | Yes | ||
| material | Yes | ||
| printer_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey all behavioral traits. It mentions that the job is 'provider-managed' and returns a reference, implying asynchronous behavior, but does not disclose specifics like authentication requirements, rate limits, failure modes, or side effects (e.g., costs). This minimal disclosure is insufficient for a tool that integrates with external services.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. It begins with a clear purpose statement, followed by a bulleted list of arguments with explanations, and ends with the return value and follow-up suggestion. Every sentence adds value; there is no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with no output schema, the description covers the input parameters and the return value (a job reference). It mentions a follow-up tool for tracking. However, it does not address prerequisites (e.g., need a connected provider account), error conditions, or the async nature of the operation. These omissions leave some contextual 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?
The description adds value beyond the schema by explaining each parameter's purpose: 'file_url' as a public URL, 'material' with examples, and 'printer_id' with the auto-assignment behavior. With 0% schema coverage, the description compensates adequately. However, it lacks details on valid URL formats, material list restrictions, or printer ID format, preventing a perfect score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Submit a print job') and the context ('through a connected provider integration'). It distinguishes this tool from siblings by specifying that it works with a provider integration, as opposed to direct submission. The verb 'submit' and resource 'print job' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context for the optional printer_id parameter ('If omitted, provider auto-assigns'), giving some guidance on when to use it. It also directs users to use 'provider_job_status' for tracking, indicating a follow-up step. However, it does not explicitly state when to use this tool versus alternatives like 'submit_job', nor does it mention prerequisites (e.g., having a connected provider account). There is no exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_material_for_orderA
Suggest a material when ordering a print from a fulfillment provider.
Use this when routing a print job to a fulfillment provider
and need to pick the right material + technology for the order.
**Which material tool to use:**
- Ordering a print from a service? → ``suggest_material_for_order`` (this tool)
- Designing a part and need engineering specs? → ``recommend_design_material``
- Quick intent-based pick for your own printer? → ``recommend_material``
Args:
use_case: What the part is for. Options: decorative, functional,
mechanical, prototype, miniature, jewelry, enclosure, wearable,
outdoor, food_safe.
budget: Price preference: "budget", "mid", or "premium". Empty = any.
need_weather_resistant: Only recommend weather-resistant materials.
need_food_safe: Only recommend food-safe materials.
need_high_detail: Prefer high-detail materials (SLA/MJF).
need_high_strength: Prefer high-strength materials (SLS/MJF).
Returns ranked material recommendations with technology, reasoning,
price tier, and which fulfillment provider to use.
| Name | Required | Description | Default |
|---|---|---|---|
| budget | No | ||
| use_case | Yes | ||
| need_food_safe | No | ||
| need_high_detail | No | ||
| need_high_strength | No | ||
| need_weather_resistant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description fully bears the burden. It discloses that the tool returns ranked recommendations with technology, reasoning, price tier, and provider. However, it does not mention any edge cases (e.g., no matching material) or permission requirements. Still, the behavior is sufficiently clear for a suggestion tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear heading, usage instructions, a bulleted parameter list, and a return description. It is concise with no wasted words, every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 6 parameters, 1 required, and no output schema. The description covers all parameters, explains the return value (ranked recommendations with technology, reasoning, price tier, provider), and distinguishes from sibling tools. It is complete for the intended usage.
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 schema has 0% description coverage, but the description adds detailed semantics for all parameters: use_case with enumerated options, budget with three values, and boolean flags. This goes well beyond the schema's minimal titles and types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool suggests a material when ordering a print from a fulfillment provider. It uses specific verbs and resources and distinguishes itself from sibling tools like 'recommend_design_material' and 'recommend_material' by specifying the ordering context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this when routing a print job to a fulfillment provider' and provides a table clarifying which material tool to use for different scenarios, offering clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_printer_for_jobA
Suggest the best printer for a job based on historical outcomes.
Rankings are based on success rates from previously recorded outcomes,
optionally filtered by file hash or material type. Cross-references
the printer registry for current availability.
**Note**: Suggestions are advisory. They do NOT override safety limits
or preflight checks. Always run preflight validation before starting
a print regardless of learning data.
Args:
file_hash: Optional hash of the file to match previous prints.
material_type: Optional material type to filter by (e.g. ``"PLA"``).
file_name: Optional file name (informational, not used for matching).
| Name | Required | Description | Default |
|---|---|---|---|
| file_hash | No | ||
| file_name | No | ||
| material_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states the tool is advisory, does not override safety limits, and cross-references current printer availability. It also notes that rankings are based on success rates from historical outcomes. However, it does not detail how suggestions are computed when no historical data exists or how conflicts are resolved, which prevents a higher score.
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 well-structured with a concise main line, followed by a note, then a parameters block. It front-loads the primary purpose. The Args block is somewhat redundant with the schema but provides extra commentary. Overall, it is focused and not verbose, earning a score of 4.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool lacks an output schema, so the description should clarify the return value. It mentions 'suggest the best printer' and 'rankings', which is ambiguous (single vs. multiple results). Given the complexity and the many sibling printer tools, more detail on the output format (e.g., list of printers with scores) would improve completeness. Nonetheless, it covers inputs and core behavior adequately.
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 schema has 0% description coverage, so the description must compensate. It does so effectively by explaining each parameter: file_hash is for matching previous prints, material_type filters by material (with example 'PLA'), and file_name is informational only. This adds significant meaning beyond the schema's bare titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Suggest the best printer for a job based on historical outcomes.' It specifies a distinct verb ('suggest') and resource ('printer for a job'), differentiating it from siblings like 'discover_printers' (which lists printers) and 'find_printers_with_material' (which filters by material). The mention of ranking based on historical outcomes sets it apart.
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 explains when to use the tool: to get an advisory suggestion based on historical outcomes, optionally filtered by file hash or material type. It explicitly warns that suggestions are advisory and do not override safety limits, advising to run preflight validation. While it doesn't explicitly state when not to use it, the advisory note and context relative to siblings (e.g., 'discover_printers' for listing all printers) provide sufficient guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_spool_swapsA
Suggest minimal spool swaps to run all queued jobs.
Analyses which jobs need which materials, compares against
what is currently loaded on each printer, and suggests the
fewest physical spool changes needed.
Args:
jobs: List of job dicts with ``material_type`` and ``required_grams``.
| Name | Required | Description | Default |
|---|---|---|---|
| jobs | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral traits. It implies read-only behavior by stating it 'analyses' and 'suggests,' but does not explicitly confirm non-destructiveness, permission requirements, or other behavioral aspects like impact on system state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: a short paragraph with a clear summary sentence, explanatory detail, and an 'Args' section for the parameter. Every sentence adds value, and the structure is front-loaded with the core 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?
Given the tool has 1 parameter (complex object) and no output schema, the description adequately covers the input requirements but lacks description of the output format (e.g., structure of swap suggestions). It is fairly complete but could be improved by specifying what the tool returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the schema by specifying that each job dict should contain 'material_type' and 'required_grams'. Since schema coverage is 0%, this provides essential guidance that the raw schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb+resource: 'Suggest minimal spool swaps to run all queued jobs.' It explains the analysis and distinguishes from siblings like 'suggest_material_for_order' or 'suggest_printer_for_job' by focusing on physical spool changes for queued jobs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you have queued jobs and want to minimize spool swaps, but it does not explicitly state when to use this tool versus alternatives (e.g., 'suggest_material_for_order'), nor does it mention prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
supported_shipping_countriesA
List all countries supported for fulfillment shipping.
Returns ISO country codes and full names for all 23+ countries where Kiln fulfillment providers can ship manufactured parts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior. It accurately describes a safe read operation returning country codes and names, with no hidden side effects. The description is transparent about what the tool does, though it could mention if the list is static or dynamic.
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 two concise sentences, front-loaded with the action and followed by specifics. No extraneous text; every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, no output schema, and no annotations, the description is fairly complete: it states the purpose, return values, and context. It does not mention prerequisites or dynamic behavior, but for a simple list tool this is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so schema coverage is 100%. The description adds no parameter info (unnecessary) and meets the baseline of 4 for parameter-less tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists countries supported for fulfillment shipping, specifies returned data (ISO codes, full names) and scope (23+ countries, Kiln fulfillment). It distinguishes well from sibling tools by focusing on shipping countries.
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 makes the tool's use obvious but lacks explicit guidance on when to use versus alternatives. However, no similar sibling exists that could be confused, so the lack of explicit exclusions is acceptable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sync_provider_capacityB
Sync local printer capacity/availability to the provider integration.
Args:
printer_id: Optional ID of a registered provider printer.
available: Optional availability update for ``printer_id``.
If ``printer_id`` and ``available`` are provided, updates that
listing first, then returns the current provider-side capacity view.
| Name | Required | Description | Default |
|---|---|---|---|
| available | No | ||
| printer_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only partially covers behavior. It mentions updating and returning capacity view, but omits security requirements, idempotency, or what happens when parameters are omitted. The conditional behavior is described but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear purpose upfront followed by parameter explanations. It avoids unnecessary words, though the Args block formatting adds a bit of verbosity. Still efficient for the content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has two optional parameters and no output schema. The description covers the conditional update case but doesn't specify behavior when neither parameter is provided. For a simple tool, it's mostly adequate but leaves gaps in expected behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description compensates by explaining each parameter's role ('Optional ID' and 'Optional availability update'). It adds meaningful context beyond the schema's titles and types, though it could clarify the update condition more precisely.
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+resource: 'Sync local printer capacity/availability to the provider integration.' It distinguishes from sibling tools like 'list_provider_capacity' by specifying an update action, making its purpose distinct and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'list_provider_capacity' or 'find_provider_capacity'. The description does not provide context on prerequisites or scenarios where this is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tax_estimateA
Preview the complete price breakdown — including tax — before placing an order.
Terms §7 contract: "Preview the tax for any order with the
``tax_estimate`` tool before placing it. We display the full
fee + tax breakdown before charging. No hidden fees."
This tool fulfills that contract by returning the same line
items the order will commit to at charge time. Per Terms §7
tax is computed on the orchestration fee ONLY — never on
the manufacturer's quoted total. The manufacturer is
responsible for any taxes on their own charges.
Two calling shapes are supported:
1. **Canonical preview** (recommended): pass
``manufacturer_quote_usd`` and the tool returns the
full breakdown — ``manufacturer_quote``,
``orchestration_fee``, ``tax_on_fee``, ``total`` — so
the agent can show the user the exact line items that
match the eventual charge. This is the shape Terms §7
commits to.
2. **Tax-only legacy** (compatibility): pass ``fee_amount``
with no ``manufacturer_quote_usd`` and the tool returns
the older ``{tax: {...}}`` shape, useful for callers
that already know the fee and only want the tax line.
Args:
fee_amount: Legacy — the platform fee amount (from the
quote's ``kiln_fee``). Used only when
``manufacturer_quote_usd`` is omitted.
jurisdiction: Where the buyer is located (e.g.
``"US-CA"``, ``"DE"``, ``"AU"``). Use
``tax_jurisdictions`` to see all supported codes.
When empty in canonical-preview mode, no tax is
applied (preview shows manuf + fee only).
business_tax_id: If the buyer is a business, their tax
ID (e.g. EU VAT number). In the EU, UK, Australia,
and Japan, businesses are exempt — the tax line
shows $0.00 with a note that reverse charge
applies.
manufacturer_quote_usd: Provider's quoted price (e.g.
from ``fulfillment_quote``). When non-zero,
triggers canonical-preview mode.
currency: Currency of the manufacturer quote (default
USD). Tax rates are applied at the standard
jurisdiction rate regardless.
user_email: Buyer's email — affects the free-tier
waiver (first 3 fulfillment orders/month per user
are fee-free). Available in canonical mode only.
Returns:
Canonical mode (``manufacturer_quote_usd > 0``):
``{success, manufacturer_quote, orchestration_fee,
tax_on_fee, total, currency, fee_waived,
fee_waiver_reason, tax_jurisdiction,
tax_rate_percent, tax_reverse_charge, note}``.
Legacy mode (``manufacturer_quote_usd == 0``):
``{success, tax: {...}}``.
Read-only — charges no card, contacts no provider.
| Name | Required | Description | Default |
|---|---|---|---|
| currency | No | USD | |
| fee_amount | No | ||
| user_email | No | ||
| jurisdiction | No | ||
| business_tax_id | No | ||
| manufacturer_quote_usd | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description thoroughly discloses behavior: read-only, no side effects, tax computed only on orchestration fee, reverse charge for business in certain regions, and the effect of user_email on fee waiver. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with summary, terms reference, calling shapes, Args, and Returns sections. Front-loaded with purpose. Slightly verbose due to legal reference but every sentence adds value. Appropriate length given complexity.
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?
Comprehensive for a 6-parameter tool with no output schema and 0% schema coverage. Describes both return shapes, free-tier waiver, reverse charge, and references sibling tools. Covers behavior, parameters, and return values adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description compensates fully by detailing each parameter: fee_amount as legacy, jurisdiction with reference to tax_jurisdictions, business_tax_id for exemptions, manufacturer_quote_usd triggering canonical mode, currency default, and user_email for free-tier. Adds significant meaning beyond schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool previews a complete price breakdown including tax before an order, distinguishing between canonical preview and legacy tax-only modes. It references sibling tools like tax_jurisdictions and tax_jurisdiction_lookup for finding supported codes, differentiating itself.
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?
Provides explicit guidance on when to use each mode: canonical preview recommended when manufacturer_quote_usd is provided, legacy mode for compatibility. Also states it is read-only and does not charge or contact providers, and explains the free-tier waiver context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tax_jurisdiction_lookupA
Look up tax details for a specific region (rate, type, B2B exemptions).
Args:
code: Jurisdiction code (e.g. "US-CA", "DE", "GB", "AU").
Use ``tax_jurisdictions`` to browse all codes.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It only says 'look up', implying a read operation, but does not explicitly state it is read-only, nor mention authentication, rate limits, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence for purpose followed by a formatted Args section. Every sentence is essential and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (single parameter, no output schema), the description covers purpose, parameter usage, and a sibling tool hint. It does not describe the return format or error handling, but for a basic lookup the agent can infer the output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no description for the parameter, but the description provides example codes (e.g., 'US-CA', 'DE') and a hint to use 'tax_jurisdictions' to browse codes. This adds significant contextual meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Look up tax details for a specific region (rate, type, B2B exemptions)', which is a specific verb and resource. It distinguishes itself from siblings like 'tax_jurisdictions' (browse codes) and 'tax_estimate' (estimate tax).
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 instructs to use 'tax_jurisdictions' to browse all codes, providing clear context for obtaining the parameter. It implies the tool is for looking up details after obtaining a code, though it doesn't explicitly state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tax_jurisdictionsA
List all 22 supported regions so the agent can match the user's location.
Returns jurisdiction codes, tax types, and rates for the US (8 states),
EU (7 countries), UK, Canada (4 provinces), Australia, and Japan.
Pass the matching code to ``fulfillment_order`` or ``tax_estimate``
to include tax in the price breakdown.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool returns jurisdiction codes, tax types, and rates for 22 regions. However, it doesn't explicitly state it's a read-only operation or any other behavioral aspects, though that is implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: three sentences, each serving a distinct purpose. It front-loads the primary action and efficiently adds context about regions and downstream use.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately explains what is returned (jurisdiction codes, tax types, rates) and how many regions. It could be more explicit about the output structure, but it is sufficient for a simple list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is complete. The description does not need to add parameter details, and the baseline for no parameters is high. The description adds value by explaining what the output contains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'List all 22 supported regions', using a specific verb and resource. It distinguishes itself from sibling tools like tax_jurisdiction_lookup and tax_estimate by specifying it lists all jurisdictions.
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 tells the agent to use this tool to match the user's location and pass the resulting code to fulfillment_order or tax_estimate. While it doesn't explicitly mention when not to use, the context is clear and provides practical guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
thicken_mesh_wallsA
Thicken thin walls in a mesh by offsetting vertices outward.
Detects thin-wall regions and pushes vertices outward along their
averaged normals. This is a **geometry-level fix** -- the mesh is
surgically modified instead of regenerating from scratch.
Use after ``predict_print_failures()`` detects ``thin_walls`` or
after ``design_scorecard()`` flags wall thickness issues.
:param file_path: Path to the STL file.
:param amount_mm: Offset distance in mm (default 0.5).
:param output_path: Output path (defaults to ``<name>_thickened.stl``).
:returns: Dict with number of vertices modified, amounts, and output path.INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| amount_mm | No | ||
| file_path | Yes | ||
| output_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. It discloses geometry-level modification, vertex offsetting along averaged normals, automatic decimation for the viewer, and the inline 3D stage side effect. It does not explicitly state whether the original STL file is left untouched, though the output_path default implies a new file is written.
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 front-loaded with a one-sentence purpose, followed by concise method, usage, parameter, and return details. The inline 3D stage block is long but earns its place as important behavioral context. It is slightly verbose in the stage explanation but remains well 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?
With no annotations and no output schema, the description robustly covers params, return values, usage timing, and side effects. It is strong for a geometry-editing tool, but minor gaps remain around input file preservation and failure/error behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, but the description fully documents all three parameters: file_path, amount_mm with default and unit, and output_path with default behavior. It also summarizes the return dict contents, adding meaning well beyond the bare input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Thicken thin walls in a mesh by offsetting vertices outward.' This clearly distinguishes it from sibling mesh operations like repair_mesh, hollow_mesh_model, or add_mesh_fillet. The phrase 'geometry-level fix' further reinforces the tool's specific role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'Use after predict_print_failures() detects thin_walls or after design_scorecard() flags wall thickness issues.' This gives clear context and names upstream tools, though it does not enumerate exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trigger_bed_levelA
Trigger a bed leveling / mesh probe on the printer.
Sends the configured G-code command (G29 or BED_MESH_CALIBRATE)
to the printer.
Args:
printer_name: Target printer. Omit for the default printer.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It discloses that the tool sends a G-code command, which is a key behavioral trait. However, it omits details such as whether the operation is synchronous, whether it requires the printer to be idle, or what the response/return value indicates.
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 short and front-loaded, with three sentences covering purpose, behavior, and parameters without redundancy. Every sentence adds value.
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 tool with one optional parameter and no output schema, the description adequately covers basic usage. However, it lacks details on return values, side effects (e.g., printer movement), or prerequisites (e.g., printer homing), which would make it more 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?
The input schema has 0% description coverage, but the description adds meaningful information for the only parameter ('printer_name: Target printer. Omit for the default printer.'), compensating for the schema gap and providing clear semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool triggers a bed leveling/mesh probe and specifies the G-code commands (G29 or BED_MESH_CALIBRATE), distinguishing it from related sibling tools like bed_level_status (which reports status) and set_leveling_policy (which configures settings).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use the tool (triggering leveling) but does not explicitly advise against using alternatives like bed_level_status or set_leveling_policy. It implies usage for performing the action but lacks explicit when-not or exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trim_serve_processesA
Close leftover Kiln servers left behind by closed sessions.
Every agent session spawns its own background Kiln server;
client apps don't reliably close them when a session ends, so
they accumulate and quietly hold memory. This is the cleanup
the pile-up warning (health_check / kiln_health / get_started)
offers.
WHY THIS IS SAFE: closing a server never stops a physical
print — the printer keeps going regardless. What a close can
end is MONITORING (a running watch loop). So this refuses to
act while any printer has a job in flight, and otherwise the
worst case is that a still-open session reconnects. This
session's own server is never closed.
AGENT CONTRACT (important):
* ASK THE USER how many agent sessions they actually have
open right now and pass it as open_sessions — they are
the one source of truth for that, and it beats guessing
from process age. Never ask them for a PID.
* Confirm before acting. Called without confirm, this
returns the plan (how many would close, how many stay)
to show the user; pass confirm=True once they agree.
* If it comes back blocked because something is printing,
tell the user what's printing and leave it alone — offer
to clean up after the print finishes rather than
reaching for force.
Args:
confirm: Set True to actually close the leftovers.
open_sessions: The user's own count of agent sessions
currently open. Keeps that many most-recently-started
servers and proposes the rest.
force: Proceed even though a printer has a job in flight.
Only when the user explicitly insists, knowing that
monitoring for that job may stop.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| confirm | No | ||
| open_sessions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It thoroughly explains safety (doesn't stop physical prints), what can be affected (monitoring may stop), refusal conditions (job in flight), and the two-phase action (plan then confirm). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections and bullet points, though it is lengthy. Every sentence contributes value; however, it could be slightly more concise while retaining all necessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and 3 parameters, the description covers all behavioral aspects: return format (plan vs. action), edge cases (printing, force), and user interaction flow. It is fully complete for an agent to use 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 0%, but the description expounds each parameter: confirm (returns plan vs acts), open_sessions (user's count of active sessions), force (override print protection). This compensates fully for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: 'Close leftover Kiln servers left behind by closed sessions.' It provides specific context and positions itself as the cleanup tool, distinguishing it from sibling tools like troubleshooting or monitoring.
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 includes an 'AGENT CONTRACT' with explicit when-to-use (cleanup after sessions), when-not-to-use (while printing), and alternatives (offer to clean up after print, not force). It also instructs to ask the user for open_sessions rather than guessing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
troubleshoot_printerA
Diagnose a printer issue by searching the known failure modes database.
Describe the symptom (e.g. ``"under-extrusion"``, ``"layer shifting"``,
``"stringing"``) and get possible causes and fixes specific to your
printer model.
On Bambu Lab printers you can also pass ``hms_code`` — the HMS error code
the printer's screen or app shows (e.g. ``"0300_1A00_0002_0001"``, in any
separator or case). The response echoes the normalized code and a link to
Bambu's HMS wiki page for it. With Kiln Pro (https://kiln3d.com/pricing)
the response also carries a decoded cause, fix, and severity for the code.
Args:
printer_id: Printer model identifier.
symptom: Description of the problem. Optional when ``hms_code`` is
given.
hms_code: Optional Bambu HMS error code to look up.
| Name | Required | Description | Default |
|---|---|---|---|
| symptom | No | ||
| hms_code | No | ||
| printer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool searches a database, returns causes/fixes, and for Bambu HMS codes echoes the code with a link and optionally a decoded cause with Kiln Pro. It implies read-only behavior but does not explicitly state it has no side effects. With no annotations to rely on, the description provides moderate transparency but could be more explicit about traits like non-destructiveness.
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 well-structured with clear sections, examples, and argument explanations. It is front-loaded with the tool's purpose and avoids unnecessary information. However, it is somewhat verbose with multiple examples, earning a score of 4 rather than 5 for perfect conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers the input parameters well and hints at the output (echoed code, link, decoded cause). However, it lacks details about the overall response structure, error handling, or additional context for non-Bambu printers. It is functional but could be more 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?
The input schema has 3 parameters but no descriptions. The tool description explains each parameter: printer_id as model identifier, symptom as problem description (optional if hms_code given), and hms_code as optional Bambu error code. This adds significant meaning beyond the bare schema, clarifying usage and optionality.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Diagnose a printer issue by searching the known failure modes database.' It specifies the action (diagnose), the resource (failure modes database), and provides concrete examples of symptoms and HMS codes, distinguishing it from sibling tools like 'troubleshoot_print_issue' which may have a different 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?
The description gives usage instructions: describe the symptom or pass an HMS code for Bambu printers. However, it does not explicitly state when to use this tool versus alternatives (e.g., other diagnostic tools in the sibling list) or when not to use it. The guidance is present but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
troubleshoot_print_issueA
Diagnose a 3D printing problem by material and symptom.
Searches the troubleshooting knowledge base for matching issues
and returns root causes, prioritised fixes, prevention tips, and
storage/drying requirements for that specific symptom.
Use this when a user reports a print failure, quality issue, or
asks "why is my print doing X?"
Examples:
material="pla", symptom="stringing"
material="petg", symptom="poor layer adhesion"
material="abs", symptom="warping"
Args:
material: Material ID (e.g. "pla", "petg", "abs", "tpu",
"nylon", "polycarbonate", "asa", "cf_nylon").
symptom: Symptom keywords to search for (e.g.
"stringing", "warping", "clog", "brittle").
| Name | Required | Description | Default |
|---|---|---|---|
| symptom | Yes | ||
| material | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must handle transparency. It lists what is returned (root causes, fixes, prevention tips, storage/drying requirements) but does not mention behavior for no matches, invalid inputs, or whether the tool is read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a one-line summary, a detailed explanation of functionality, usage context, examples, and parameter definitions. 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?
Given no output schema, the description explains the return format. It covers both parameters with examples. However, it does not address error handling or empty results, leaving minor 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 coverage is 0%, but the description adds value by explaining each parameter: material is a Material ID with examples, symptom is keywords with examples. This compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to diagnose a 3D printing problem by material and symptom, searching a knowledge base and returning root causes, fixes, and tips. It provides specific examples and distinguishes from siblings like 'diagnose_print_failure_live' by focusing on material-symptom pairs.
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 says 'Use this when a user reports a print failure, quality issue, or asks why my print is doing X.' This provides clear context, but it does not explicitly exclude cases like printer hardware failures or suggest alternative tools like 'get_print_diagnostic'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trust_printerB
Add a printer hostname/IP to the trusted whitelist.
Trusted printers are flagged during network discovery. Connecting
to an untrusted printer should raise a warning.
Args:
host: The hostname or IP address to trust.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It mentions that trusted printers are flagged during discovery, but lacks details on side effects (e.g., overwriting, limits, permissions), reversibility, or error conditions. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief with two sentences and an Args line, front-loading the main action. No unnecessary words; efficient for a simple tool.
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 one parameter and no output schema, the description covers purpose and parameter meaning. However, it does not indicate return values or failure modes, leaving gaps for an agent to fully understand behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for the 'host' parameter, but the description adds 'The hostname or IP address to trust,' providing basic meaning beyond the schema's title. However, it does not include format constraints or examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds a printer hostname/IP to a trusted whitelist, using a specific verb and resource. It distinguishes from sibling tools like untrust_printer and list_trusted_printers, even without explicit comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (to avoid warnings when connecting to a trusted printer) but does not explicitly state when not to use it or mention alternatives like untrust_printer, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tweak_and_compile_scadA
Update a parameter in OpenSCAD code and recompile to STL.
The complete parametric tweaking workflow: changes a dimension
variable, validates against material limits, and compiles a new
STL — all in one step. Perfect for "make it 5mm wider" requests.
Args:
scad_code: OpenSCAD source code.
parameter_name: Variable name to update (e.g. "wall_thickness").
new_value: New numeric value.
material: Optional material for limit validation (e.g. "pla").INLINE 3D STAGE: on success this tool also opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | ||
| new_value | Yes | ||
| scad_code | Yes | ||
| parameter_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behaviors: it validates against material limits, compiles a new STL, and opens an interactive 3D stage with mesh decimation. It clarifies that the PNG preview is not the full experience, which is critical side-effect information not inferable from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: opening action, workflow summary, concise argument list, then a note about the inline 3D stage. Each sentence adds value, and the key use case is front-loaded. No filler or redundant statements, making it appropriately sized for the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the purpose, parameters, and side effects (3D stage). It also mentions material validation, which is important. However, it does not explicitly state the return value or output format (e.g., whether it returns an STL file or a link), which could be inferred from the stage mention but is not explicit. Given no output schema, a bit more on the return would make it 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?
The schema has 0% coverage (no descriptions), but the description includes an Args section explaining each parameter: scad_code (OpenSCAD source), parameter_name (variable name with example), new_value (numeric), material (optional with example). This fully compensates for the schema's lack of detail, exceeding the baseline by providing concrete examples and purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update a parameter in OpenSCAD code and recompile to STL' with a specific verb and resource. It also emphasizes the combined workflow of changing a dimension, validating material limits, and compiling, which distinguishes it from sibling tools like update_scad_parameter or compile_scad that perform only one of these steps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context with 'Perfect for "make it 5mm wider" requests,' indicating when to use it. However, it does not explicitly mention when NOT to use it vs. alternatives (e.g., 'if you only need to update without compiling, use update_scad_parameter'), so there is some implicit guidance but no exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unlock_safety_profileB
Unlock a previously locked safety profile.
Enterprise feature. Allows community profile modifications for
this printer model again.
Args:
printer_model: Profile identifier to unlock.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_model | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It says 'unlock' but does not explain what this entails (e.g., reversibility, side effects), required permissions, or error handling. The enterprise flag is a prerequisite, not a 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?
Three sentences, concise and front-loaded with the action. Each sentence adds distinct information (purpose, enterprise, effect). Could be slightly more structured, but efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and lack of annotations/output schema, the description is incomplete. It does not cover prerequisites, expected behavior if already unlocked, or any consequences. More details are needed for full usability.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It specifies 'printer_model' as a 'Profile identifier', adding context beyond the schema title, but lacks details on format or source. Parameter semantics are minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'unlock' and the resource 'safety profile', and distinguishes from siblings like 'lock_safety_profile' and 'get_safety_profile'. It also mentions the enterprise nature and purpose of allowing community profile modifications.
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 use when a safety profile is locked and modifications are needed. It notes 'Enterprise feature', indicating a prerequisite, but does not explicitly state when not to use or provide alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
untrust_printerA
Remove a printer hostname/IP from the trusted whitelist.
Args:
host: The hostname or IP address to untrust.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states the action itself without disclosing potential side effects, destructiveness, reversibility, authentication needs, or error behavior (e.g., untrusting an untrusted host). This is insufficient for an agent to fully understand the impact.
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 brief (one sentence) and front-loaded with the action. It is concise but could benefit from slight expansion to cover usage guidelines and return behavior without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema, no annotations), the description adequately covers core purpose but lacks details on error handling, success/failure indicators, or prerequisite conditions. It is minimally viable but not 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?
The input schema has a single 'host' parameter with no description. The tool description adds 'hostname/IP', clarifying what the parameter accepts. This provides meaningful semantic context beyond the schema, though further specificity (e.g., IPv4/v6, hostname format) would improve.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Remove a printer hostname/IP from the trusted whitelist', specifying the verb (Remove) and resource (printer hostname/IP from whitelist). It effectively distinguishes from the sibling tool 'trust_printer', which adds to the whitelist.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (when you want to remove a trusted printer), but it does not explicitly state when to use it versus alternatives like 'trust_printer' or 'list_trusted_printers'. No prerequisites or exclusion criteria are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_firmwareA
Start a firmware update on the default/connected printer (adapter-level, by component).
For fleet setups where you need to update a specific printer by name
or pin a target version, use ``update_printer_firmware`` instead.
For Moonraker printers, this triggers the Klipper update manager.
For OctoPrint printers, this uses the Software Update plugin.
Args:
component: Optional component name to update (e.g. ``"klipper"``,
``"moonraker"``). If omitted, all components with available
updates will be upgraded.
The printer must not be actively printing. Check ``firmware_status``
first to see which updates are available.
| Name | Required | Description | Default |
|---|---|---|---|
| component | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the transparency burden. It explains behavior for different printer types (Moonraker triggers Klipper update manager, OctoPrint uses Software Update plugin), describes the optional component parameter, and notes that all components with updates are upgraded if omitted. It lacks explicit detail on whether the update is asynchronous or blocks, but overall provides solid behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using only a few sentences. It starts with a clear statement of purpose, then provides usage alternatives, parameter clarification, and a prerequisite. No extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input (one optional param, no output schema) and missing annotations, the description covers all essentials: purpose, usage guidelines, parameter semantics, and behavioral notes. It does not describe return values, but for a command tool this is acceptable. It is complete enough for an agent to use effectively.
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 schema has one parameter with no description (0% coverage). The description adds meaning: 'Optional component name to update (e.g. 'klipper', 'moonraker'). If omitted, all components with available updates will be upgraded.' This explains both the value and the default behavior, going beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Start a firmware update on the default/connected printer (adapter-level, by component).' It distinguishes itself from the sibling 'update_printer_firmware' by specifying it is for the default/connected printer rather than fleet-specific updates with printer name or version pinning.
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?
Explicit guidance is provided: 'For fleet setups where you need to update a specific printer by name or pin a target version, use update_printer_firmware instead.' It also states the prerequisite 'The printer must not be actively printing' and recommends checking firmware_status first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_interception_telemetryA
Push a telemetry snapshot to an active interception session.
Telemetry is used by rules that evaluate live device state
(temperature thresholds, thermal runaway detection, flow anomalies).
Call this periodically during printing (e.g. every few seconds).
Args:
session_id: Active session ID.
hotend_temp: Current hotend temperature (C).
hotend_target: Target hotend temperature (C).
bed_temp: Current bed temperature (C).
bed_target: Target bed temperature (C).
position_x: Current X position (mm).
position_y: Current Y position (mm).
position_z: Current Z position (mm).
feedrate: Current feedrate (mm/min).
flow_rate_pct: Flow rate percentage (100 = normal).
fan_speed_pct: Fan speed percentage.
current_layer: Current layer number.
elapsed_seconds: Elapsed print time (seconds).
filament_used_mm: Filament consumed (mm).
| Name | Required | Description | Default |
|---|---|---|---|
| bed_temp | No | ||
| feedrate | No | ||
| bed_target | No | ||
| position_x | No | ||
| position_y | No | ||
| position_z | No | ||
| session_id | Yes | ||
| hotend_temp | No | ||
| current_layer | No | ||
| fan_speed_pct | No | ||
| flow_rate_pct | No | ||
| hotend_target | No | ||
| elapsed_seconds | No | ||
| filament_used_mm | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses action and purpose, and implies session must be active, but does not discuss side effects, validation, or failure modes. Lacks depth on what happens if session is invalid.
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?
Very concise and well-structured: action statement, purpose explanation, usage guidance, then parameter list. No wasted words, information front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 14 parameters and no annotation coverage, the description provides complete parameter details and usage context. Does not describe output schema or prerequisites beyond active session, but the presence of output schema reduces need for return value explanation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description compensates by listing all 14 parameters with explicit units and context (e.g., 'Current hotend temperature (C)'). Adds meaning beyond type/name, though some parameters could have more detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool pushes a telemetry snapshot to an active interception session, using specific verbs ('Push') and resource ('telemetry snapshot'). It distinguishes from siblings like intercept_gcode_command by focusing on telemetry data for rule evaluation.
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?
Explicitly advises periodic calls during printing with example frequency ('every few seconds'), and explains why telemetry is needed (for rules evaluating device state). Does not mention when not to use or alternatives, but provides sufficient context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_printer_firmwareA
Start a firmware update on a specific printer by name (fleet-level, supports version pinning).
Use this in multi-printer setups. For single-printer setups, use ``update_firmware`` instead.
Args:
printer_name: Printer to update.
target_version: Specific version to update to (latest if None).
| Name | Required | Description | Default |
|---|---|---|---|
| printer_name | Yes | ||
| target_version | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only says 'Start a firmware update' with no details on prerequisites, side effects (e.g., printer restart, downtime), destructive potential, or required permissions. For a potentially destructive action, far more behavioral context is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one line for purpose, one line for usage guidance, and a two-line Args block. Every sentence adds value with no repetition or fluff. Front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity and potential impact of a firmware update tool (no output schema, 2 parameters), the description lacks completeness. It does not explain what happens after the update is started, how to monitor progress, or how to handle errors. An agent needs more context to use this tool safely and effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds clear, concise descriptions for both parameters: 'Printer to update' for printer_name and 'Specific version to update to (latest if None)' for target_version. This adds meaningful guidance 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?
Description clearly states the action ('Start a firmware update'), the resource ('on a specific printer by name'), and distinguishes from sibling tools ('fleet-level'). It explicitly mentions version pinning, making the purpose specific and actionable.
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?
Provides explicit when-to-use ('Use this in multi-printer setups') and when-not-to-use ('For single-printer setups, use update_firmware instead'), directly naming an alternative tool. This is exemplary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_printer_siteA
Assign a printer to a physical site/location with optional tags.
Args:
name: Registered printer name.
site: Physical site or location label (e.g. ``"nyc-lab"``,
``"chicago-floor-2"``).
tags: Comma-separated key=value pairs for metadata
(e.g. ``"building=A,floor=3,owner=team-alpha"``).
Requires Enterprise license.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| site | Yes | ||
| tags | No |
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 discloses the action (assign printer to site) and the license requirement, but does not explain behavioral details such as whether the operation is destructive (overwrites existing site), idempotent, or what the result looks like. For a mutation tool, more transparency about side effects is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core purpose in the first sentence. The following 'Args' section is well-structured, listing each parameter with examples. Every sentence adds value, though the format could be slightly more streamlined (e.g., removing the colon after 'site' in the example). No extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 parameters, no output schema), the description covers the essential aspects: purpose, parameters, and license requirement. However, it lacks information about return values (e.g., success indication), error conditions, and potential side effects. For a basic assignment tool, this is adequate but not 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 0%, meaning the schema lacks parameter descriptions. The description compensates by explaining each parameter: 'name' is the registered printer name, 'site' is a physical location label with clear examples ('nyc-lab', 'chicago-floor-2'), and 'tags' are comma-separated key=value pairs with an example. This adds significant meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Assign a printer to a physical site/location with optional tags,' providing a specific verb (assign) and resource (printer to site). The tool's name 'update_printer_site' reinforces this, and among siblings there is no other tool that specifically performs this site assignment, making it easily distinguishable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when assigning a printer to a site) and notes a prerequisite ('Requires Enterprise license'), but does not provide explicit guidance on when not to use it or suggest alternative tools (e.g., register_printer if the printer is not yet registered). The usage context is clear but lacks comparative advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_scad_parameterB
Update a parameter value in OpenSCAD code.
Finds the named variable declaration and replaces its value,
preserving comments and formatting. Use this to tweak dimensions
without regenerating the entire model.
Args:
scad_code: OpenSCAD source code string.
parameter_name: Name of the variable to update.
new_value: New numeric value for the parameter.
| Name | Required | Description | Default |
|---|---|---|---|
| new_value | Yes | ||
| scad_code | Yes | ||
| parameter_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions preserving comments and formatting and that it finds the named variable declaration. With no annotations, it partially describes behavior but lacks details on return value, side effects, or error handling, which are important for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a concise introductory summary followed by an Args list. Every sentence adds value, and the most important information is front-loaded. It is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no output schema and no annotations, the description should cover return values and potential errors. It omits what the tool returns (e.g., modified code string) and does not mention validation or failure modes, leaving context incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage, the description includes an Args section that explains each parameter (scad_code, parameter_name, new_value) beyond their types and titles, providing clear meaning and usage context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update a parameter value in OpenSCAD code', identifying a specific verb and resource. It distinguishes from siblings like 'modify_scad_module' by focusing on parameter value replacement, but does not explicitly differentiate from other parameter-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'Use this to tweak dimensions without regenerating the entire model', implying when to use it. However, it does not specify when not to use or provide alternatives, such as when a full regeneration is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upgrade_kilnA
Update the Kiln package to the latest version — for the user.
The Apple-grade upgrade path. When a newer Kiln is available (or a
hosted call returns an upgrade-required signal), OFFER to handle it:
ask "want me to update Kiln for you now?" and call this with
confirm=True once they agree. Don't make the user run a pip command.
AGENT CONTRACT (important):
* NEVER call this while a print is active — wait until it finishes.
Swapping Kiln mid-print is unsafe.
* Confirm with the user first; this changes their installed
software. Pass confirm=True only after they say yes.
* On success the new version is on disk but the running Kiln still
has the old code loaded — relay the restart instruction from the
result so the user applies it at a safe moment (not mid-print).
Args:
confirm: Set True to actually perform the update. Called without
it, this returns the offer to show the user and changes
nothing.
force: Override the mid-print safety defer — only when the user
explicitly insists.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| confirm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but the description fully discloses behavioral traits: it changes installed software, is safe to call without confirm (returns offer only), swapping mid-print is unsafe, force override exists, and after success the old code remains loaded requiring a restart.
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 well-structured with clear sections (purpose, agent contract, args), but contains somewhat verbose marketing language ('Apple-grade upgrade path') that adds little value. Still, every sentence earns its place overall.
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 no output schema, the description covers preconditions (no active print), user confirmation, side effects, and what to do with the result (relay restart instruction). No gaps remain for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, but the description adds full meaning: confirm=True performs update, confirm=False returns offer; force overrides mid-print safety defer. This compensates completely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Update' and resource 'Kiln package to the latest version', and distinguishes from sibling tools like 'get_upgrade_url' or 'kiln_health' by specifying the user-facing upgrade process.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to call (when newer Kiln available), user confirmation, avoiding mid-print calls, and how to handle success (restart instruction). It also instructs to offer the upgrade rather than making the user run a command.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_fileA
Upload a local G-code file to the printer.
Handles FTPS (Bambu), REST multipart upload (OctoPrint/Moonraker), and
serial file transfer automatically.
Args:
file_path: Absolute path to the print file on the local filesystem.
The file must exist and be readable. Accepted extensions follow
the TARGET PRINTER, not one fixed list — ``printer_status()``
reports them per machine, and a Bambu declares ``.3mf`` FIRST
because that is the only thing it will start a print from.
Bare ``.gcode`` / ``.gco`` / ``.g`` is right for OctoPrint,
Moonraker, PrusaLink and Duet; on a Bambu it has no start block
and is refused by the homing gate below.
When ``slice_model`` produced the file, upload the path it names
in ``recommended_upload_path`` and do not choose between its
outputs by hand — it already knows the printer. (This docstring
used to say the extension had to be ``.gcode``, ``.gco`` or
``.g``, which is narrower than this function's own behaviour and
sent at least one caller to the one file its printer could not
print.)
printer_name: Which printer to upload to. Omit to upload to the
default printer, which is what this did before it could be
aimed. The G-code dialect scan and the bed-fit gate follow the
named machine too, so the bytes are checked against the bed
they are actually going to.
After a successful upload the file will appear in ``printer_files()`` and
can be started with ``start_print()``.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states the outcome: 'After a successful upload the file will appear in printer_files() and can be started with start_print().' It does not mention potential side effects like overwriting existing files, but the expected behavior is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is excessively verbose and highly repetitive. The same sentences about extensions and recommended paths are repeated multiple times with slight rewording, making it unnecessarily long for a simple upload operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all necessary context: protocol handling, file validity, extension rules, printer selection, and post-upload effects. It lacks explicit failure handling details, but overall it is complete for the tool's scope.
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?
Both parameters are well described: file_path requires existence and readability, with extensions depending on printer; printer_name allows omission for default. This adds substantial value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence clearly states 'Upload a local G-code file to the printer.', which is a direct and specific purpose. The description also mentions automatic protocol handling, reinforcing the core function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage guidance by indicating when to use this tool (e.g., after slicing, using the recommended path) and clarifies that file extensions depend on the target printer. However, it does not explicitly compare with alternative upload tools like upload_file_confirm.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_file_confirmA
Confirm and execute a pending file upload.
When ``KILN_CONFIRM_UPLOAD`` is enabled, ``upload_file()`` returns a
confirmation token instead of uploading immediately. Pass that token
here to proceed with the upload.
Args:
token: The confirmation token returned by ``upload_file()``.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes |
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 discloses the confirmation step and that the upload is executed upon calling this tool. However, it does not mention any side effects, whether the operation is irreversible, permissions required, or what happens on success/failure. For a mutation tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of three short, clear sentences. It is well-structured: first sentence states purpose, second explains the mechanism, third describes the parameter. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation tool with one parameter and no output schema, the description covers the essential flow. However, it omits return value/status, error cases, and prerequisite that upload_file must be called first. While the token explanation is good, the lack of post-call behavior details leaves the agent guessing about outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage for its single required parameter 'token'. The description adds meaning by stating: 'The confirmation token returned by upload_file().' This clarifies the parameter's source and purpose, compensating for the schema's lack of detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Confirm and execute a pending file upload.' It specifies the two-step flow where upload_file returns a token when KILN_CONFIRM_UPLOAD is enabled, and this tool uses that token. This effectively distinguishes it from the sibling tool upload_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 when to use this tool (when a token from upload_file is available) and mentions the enabling condition (KILN_CONFIRM_UPLOAD). However, it does not explicitly state when NOT to use it, nor does it mention alternatives like direct upload without confirmation. The guidance is implied but not comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uptime_reportA
Get rolling uptime statistics and SLA status.
Enterprise feature. Shows uptime percentages for 1h, 24h, 7d, and 30d windows, average response times, and whether the 99.9% SLA target is being met.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 implies a read-only operation ('Get rolling uptime statistics') but does not explicitly state that it has no side effects or what permissions are required. The absence of behavioral disclosure is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences. The first sentence states the purpose, the second lists the included metrics. No extraneous words, exactly as it should be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description adequately covers return values by listing uptime percentages, response times, and SLA status. However, it does not specify data units or refresh frequency, leaving minor gaps for a tool with no parameters and no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters (0 params, 100% schema coverage). The description does not need to add parameter detail, and it correctly omits such information, achieving the baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: retrieving rolling uptime statistics and SLA status. It specifies the exact metrics provided (uptime percentages for 1h, 24h, 7d, 30d windows, average response times, SLA target status), making it distinct from other reporting tools like cost or printer usage reports.
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 notes it is an 'Enterprise feature,' providing some usage context. While it does not explicitly state when to use versus alternatives, the purpose is narrow and self-explanatory, so an agent can infer when to invoke it for uptime and SLA queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_and_prepareA
Comprehensive validation pipeline for any 3D model before printing.
Runs format check, mesh analysis, watertight check, auto-repair,
printability analysis, structural assessment, bed-fit check, and
(optionally) material-specific checks.
Returns a detailed pass/fail report with actionable recommendations
plus a numeric printability score (0-100).
Works with any model — AI-generated, downloaded from marketplaces,
or created in CAD. Every model passes Kiln's engineering review
before it touches your printer.
Each step is resilient — if a step's underlying module is unavailable
the step is skipped and the pipeline continues.
:param input_path: Path to a 3D model file (.stl, .3mf, .obj, .step, .glb).
:param printer_id: Optional printer model ID (e.g. "bambu_a1") for
bed-fit checking. If empty, bed-fit check is skipped.
:param material: Optional material name (e.g. "pla", "petg", "abs",
"asa", "tpu"). When provided, adds a material-specific check
for known print-quality risks. If empty, material check is skipped.
:returns: Dict with pass/fail status, per-check details, recommendations,
``printability_score`` (0-100), and ``score_breakdown``.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | ||
| input_path | Yes | ||
| printer_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses resilience (steps skipped if module unavailable) and return format (pass/fail report, printability score). It does not mention permissions or side effects, but the tool is read-only validation, so no destructive actions are expected.
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 organized with bullet points and parameter descriptions, making it easy to scan. It is slightly lengthy but front-loaded with the main 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?
Given the complexity (8-step pipeline) and presence of an output schema, the description covers all necessary aspects: steps performed, optionality, resilience, return values, and scope of checks.
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 description explains each parameter in detail despite 0% schema coverage: input_path as file path, printer_id for bed-fit (optional, skipped if empty), material for material-specific checks (optional). This adds significant value over the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Comprehensive validation pipeline for any 3D model before printing' and lists specific checks (format, mesh, watertight, etc.), clearly distinguishing it from siblings like 'validate_and_prepare_mesh' or 'validate_assembly'.
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 indicates when to use ('before printing') and explains optional parameters (printer_id, material) for additional checks, but does not explicitly state when NOT to use this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_and_prepare_meshA
Full validation pipeline: validate, repair, analyze, and prepare a mesh for printing.
**See also:** ``validate_and_prepare`` for a more comprehensive
10-step pipeline (format, mesh, scale, repair, printability,
structural, bed-fit, material, and cost estimation).
Runs every AI-generated mesh through Kiln's engineering review before
it reaches the slicer or printer. Chains validation → auto-repair →
printability analysis → build volume check into a single quality gate.
**Use this instead of ``validate_generated_mesh`` when you want the
full pipeline** — repair, printability scoring, build volume checks,
and actionable recommendations.
The mesh file may be modified in place if ``auto_repair`` or
``auto_scale`` is enabled. The response includes the final file
path (which may differ from the input if repairs created a new file).
Args:
file_path: Path to an STL, OBJ, GLB, or STEP/STP file.
STEP is converted to a mesh on the way in; if no
converter is installed the call returns ``NO_BACKEND``
with a ``remedy`` — read it rather than guessing whether
the user can fix this (``kiln install-step-backend``) or
is on a hosted server with nothing to install.
material: Filament material for printability analysis (default PLA).
nozzle_diameter: Printer nozzle diameter in mm (default 0.4).
layer_height: Print layer height in mm (default 0.2).
build_volume_x: Optional X build dimension (mm).
build_volume_y: Optional Y build dimension (mm).
build_volume_z: Optional Z build dimension (mm).
printer_id: Optional supported printer model id. When
provided, printer intelligence supplies the build volume.
auto_repair: Auto-repair non-manifold meshes (default True).
auto_scale: Auto-scale if mesh exceeds build volume (default False).
min_printability_score: Minimum score (0-100) to pass (default 40).
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | PLA | |
| file_path | Yes | ||
| auto_scale | No | ||
| printer_id | No | ||
| auto_repair | No | ||
| layer_height | No | ||
| build_volume_x | No | ||
| build_volume_y | No | ||
| build_volume_z | No | ||
| nozzle_diameter | No | ||
| min_printability_score | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Although annotations are absent, the description thoroughly discloses behavioral traits: mesh may be modified in place if auto_repair or auto_scale is enabled, the response includes the final file path (which may differ if repairs created a new file), and STEP/STP conversion may return NO_BACKEND with a remedy. This exceeds the minimal disclosure needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with bold headers, bullet points, and emphasized sections. Despite being long, every sentence adds value and is front-loaded with the core purpose. No redundancy or 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?
Given the tool's complexity (11 parameters, no output schema, no annotations), the description provides complete context: the pipeline steps, parameter details, behavior under different conditions (e.g., auto-repair, auto-scale), and handling of unsupported conversions. It equips an agent with all necessary information.
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?
With 0% schema description coverage, the description compensates fully by explaining each of the 11 parameters, including accepted file types for file_path, the meaning of material, default values, and special notes like the STEP conversion behavior. This adds significant value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as a full validation pipeline: validate, repair, analyze, and prepare a mesh for printing. It differentiates from sibling tools like 'validate_and_prepare' (a more comprehensive 10-step pipeline) and 'validate_generated_mesh' by specifying that this tool provides the full pipeline including repair, printability scoring, and build volume checks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: 'Use this instead of validate_generated_mesh when you want the full pipeline' and 'See also: validate_and_prepare for a more comprehensive 10-step pipeline'. It clearly states the context for selecting this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_assemblyA
Validate an assembly for correctness and printability.
Runs clearance checks and joint validations on the assembly,
returning the validated assembly state with results populated.
Args:
assembly_json: JSON string of the current assembly state.
printer_id: Optional printer identifier (e.g.
``"bambu_a1"``). When supplied AND kiln-pro is
installed, each joint that drives a screw into a
printed part gains a ``screw_hole`` block with the
compensated hole diameter, thread engagement,
install-torque ceiling, and lead-in chamfer
(Bambu-calibrated on Bambu X1/P1/A1 + PLA/PETG; a
generic starting point otherwise). Omit it to keep
the historic behaviour.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_id | No | ||
| assembly_json | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must fully disclose behavior. Describes validation and return of validated state, with extra details on printer_id effect. Does not explicitly state read-only nature or side effects, leaving some ambiguity.
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?
Description is concise, front-loaded with purpose, then structured Args block. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Inputs are well-described, but output is vague ('validated assembly state with results populated'). Without output schema, more detail on return structure (e.g., list of warnings/errors) would enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description adds rich meaning: explains assembly_json as JSON string of current state, printer_id with detailed effect including screw_hole block specifics. Goes far beyond schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'validate' with resource 'assembly', detailing exact checks (clearance, joint validations) and outcome (validated assembly state). Clearly distinguishes from generic validation 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?
Provides clear when-to-use guidance for the optional printer_id parameter, including conditions for its effect and historic behavior. Lacks explicit comparison with sibling tools like check_assembly_clearances.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_design_for_requirementsA
Validate a 3D model against functional design requirements.
Checks that a generated STL/OBJ model meets the structural,
dimensional, and manufacturability constraints implied by the
requirements. Returns pass/fail per check with specific fix
suggestions for any failures.
Call this AFTER generating a model and BEFORE printing it.
If validation fails, use the fix suggestions to improve the
generation prompt and regenerate.
Args:
file_path: Path to STL or OBJ file.
requirements: Same requirements text used for analyze_design_requirements.
material: Optional material (e.g. "petg").
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | ||
| file_path | Yes | ||
| requirements | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool performs checks and returns pass/fail with suggestions, but it does not mention whether it is read-only, authentication needs, or response format details. It partially covers behavioral traits but lacks completeness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with each sentence adding value. However, it lacks a structured front-loaded summary; it is presented as a single paragraph with line breaks. Still, no redundant information 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?
The description covers core functionality, usage context, and next steps. However, it omits details on return format (e.g., list of checks, pass/fail structure), error handling, and what happens with invalid inputs. Without an output schema, these gaps reduce completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description compensates by explaining file_path (STL/OBJ), requirements (same as another tool), and material (optional with example). This adds significant value beyond the schema's bare titles, though it omits validation rules or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool validates a 3D model against functional design requirements, specifying it checks structural, dimensional, and manufacturability constraints. It distinguishes itself from sibling tools like analyze_design_requirements and analyze_mesh_geometry by focusing on post-generation validation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'Call this AFTER generating a model and BEFORE printing it' and provides guidance to use fix suggestions for regeneration. However, it does not mention when not to use it or contrast with other validation tools like validate_gcode or validate_mesh.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_gcodeA
Validate G-code syntax and basic safety (generic, no printer-specific limits).
For printer-specific safety validation (PTFE temp caps, speed limits),
use ``validate_gcode_safe`` with a ``printer_id`` instead.
Args:
commands: One or more G-code commands separated by newlines.
Returns a JSON object with:
- ``valid``: whether all commands passed safety checks
- ``commands``: the parsed command list
- ``errors``: blocking issues (temperature limits, firmware commands)
- ``warnings``: non-blocking advisories (Z below bed, high feedrate)
- ``blocked_commands``: specific commands that were blocked
Use this to preview what ``send_gcode`` would accept or reject.
| Name | Required | Description | Default |
|---|---|---|---|
| commands | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes return format (JSON with valid, commands, errors, warnings, blocked_commands) and states it performs generic safety checks. No annotations provided, but description adequately covers behavior for a validation tool. Could mention if it has side effects (likely none), but that's implied.
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 clear paragraphs: first explains purpose and sibling differentiation, second details parameters and return values. Every sentence adds value, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only one parameter and no output schema, the description fully explains what the tool does, what input it expects, what output it produces, and how it relates to other tools (send_gcode, validate_gcode_safe). Complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 0% description coverage, but description explains the single parameter 'commands' as G-code commands separated by newlines, adding meaning beyond the schema type string.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it validates G-code syntax and basic safety, and distinguishes from sister tool validate_gcode_safe for printer-specific validation. The verb 'validate' and resource 'G-code' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says use for generic validation, and for printer-specific safety use validate_gcode_safe. Also advises to preview what send_gcode would accept/reject, providing clear usage context and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_gcode_safeA
Validate G-code with printer-specific safety limits (PTFE temp caps, speed limits).
Preferred over ``validate_gcode`` when you know the target printer — uses
that printer's safety profile for accurate limits. Without a printer_id,
falls back to conservative generic defaults.
Args:
commands: G-code commands separated by newlines.
printer_id: Optional printer model ID for profile-aware validation.
| Name | Required | Description | Default |
|---|---|---|---|
| commands | Yes | ||
| printer_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains that validation uses printer-specific safety profiles and falls back to generic defaults. However, it does not disclose whether the tool is read-only (e.g., does it alter any state?) or what happens on validation failure (e.g., throws error, returns list of issues). Without annotations, more detail would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with the purpose stated upfront followed by usage guidance and parameter details. It avoids unnecessary verbosity while covering key points, though the Args section slightly repeats schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and annotations, the description covers the core functionality, usage, and parameter semantics. However, it does not explain the return value (e.g., validation errors or pass/fail) or edge cases like empty commands. For a validation tool, this is adequate but could be more comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for parameters, but the description adds meaning by stating that 'commands' are G-code separated by newlines and 'printer_id' is an optional model ID for profile-aware validation. This provides necessary context beyond the schema's type and title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool validates G-code with printer-specific safety limits like PTFE temp caps and speed limits. It explicitly distinguishes itself from the sibling validate_gcode by being preferred when the target printer is known, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: it is preferred over validate_gcode when you know the target printer, and it falls back to conservative generic defaults if printer_id is omitted. This clearly indicates when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_generated_meshB
Validate a 3D mesh file for printing readiness.
Checks that the file is a valid STL, OBJ, or GLB, has reasonable
dimensions, an acceptable polygon count, and is manifold
(watertight).
Args:
file_path: Path to an STL, OBJ, or GLB file.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description mentions validation checks but does not disclose if the tool modifies the file, whether it is read-only, or what the response format is. Without annotations, the description should provide more behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear opening sentence, a bulleted list of checks, and an Args section. The Args section slightly duplicates the schema but overall is well-structured and not verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is provided, and the description does not explain what the validation returns (e.g., pass/fail, detailed errors). It also omits prerequisites like file existence. For a single-parameter tool, more detail on outcomes is expected.
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 description explains that file_path is a path to an STL, OBJ, or GLB file, adding value beyond the schema's simple string type. With 0% schema description coverage, the description effectively compensates for the missing parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool validates a 3D mesh for printing readiness, listing specific checks (file format, dimensions, polygon count, manifold). This is a specific verb+resource combination, but it does not explicitly distinguish from sibling tools like 'validate_and_prepare_mesh' or 'analyze_mesh_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?
No guidance on when to use this tool versus alternatives (e.g., 'repair_mesh', 'validate_and_prepare_mesh'). The description lacks context about prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_openscad_codeA
Validate OpenSCAD code without generating geometry.
Compiles the code and returns structured error/warning information
with line numbers. Use this to check code before calling
generate_model with OpenSCAD.
:param code: OpenSCAD source code to validate.
:returns: Dict with ``valid``, ``errors``, and ``warnings``.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It states the tool compiles code without generating geometry and returns structured error/warning information with line numbers. This adequately discloses the behavior for a validation tool, though it omits potential side effects (likely none) or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences in the main part followed by a docstring. Every sentence adds value, and the purpose is front-loaded. No redundant or missing 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 validation tool with no output schema, the description adequately covers input (code) and output (dict with valid, errors, warnings). It lacks details on edge cases or performance, but the core information is present.
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 schema has 0% description coverage, but the description includes a docstring for the 'code' parameter, specifying it is OpenSCAD source code to validate. This adds meaning beyond the schema's type-only definition, though it lacks details on format or length constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool validates OpenSCAD code without generating geometry, with a specific verb (validate) and resource (OpenSCAD code). It distinguishes itself from the sibling tool generate_model by suggesting its use before calling that function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use the tool: 'Use this to check code before calling generate_model with OpenSCAD.' It does not provide explicit when-not-to-use or alternatives, but the context is clear enough for an AI agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_print_qualityA
Validate print quality after a completed print job.
Captures a webcam snapshot (if available), examines the job record and
events, and produces a quality assessment with recommendations.
Args:
job_id: The completed job's ID. If omitted, uses the most recent
completed job.
printer_name: Target printer name (omit for default printer).
save_snapshot: Optional file path to save the post-print snapshot.
Returns a quality report with snapshot data, job metrics, and any
detected issues.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | No | ||
| printer_name | No | ||
| save_snapshot | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must fully disclose behavior. It mentions capturing a snapshot and examining job records, but does not state whether the tool is read-only, modifies data, or requires specific permissions. This leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: a single sentence of purpose followed by a bullet-style argument list. No superfluous 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 no output schema, the description reasonably covers inputs, behavior, and output (quality report with snapshot data, metrics, issues). It could detail the report structure or include usage guidance versus siblings, but is adequate for typical use.
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?
With 0% schema coverage, the description adds essential meaning for all three parameters: explains job_id defaulting, printer_name defaulting, and save_snapshot as an optional file path. This is clear and helpful.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool validates print quality after a completed job, distinguishing it from real-time failure analysis tools. However, it doesn't explicitly differentiate from sibling tools like analyze_print_failure, limiting precision.
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 specifies 'after a completed print job', giving clear context for when to use. But it provides no guidance on when not to use or mentions alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_scad_parametersB
Validate OpenSCAD parameters against material design limits.
Checks if parameter values (wall thickness, hole diameter, etc.)
violate the design limits for the specified material. Catches
issues before compilation and printing.
Args:
scad_code: OpenSCAD source code string.
material: Optional material ID (e.g. "pla", "petg") to check
against material-specific limits.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | ||
| scad_code | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description mentions validation but does not disclose return format, side effects (e.g., read-only), error behavior, or required permissions. For a mutation-free validation, this gap is significant.
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?
Description is relatively concise but includes an 'Args' section that largely duplicates schema information. Could be more front-loaded and remove redundancy to improve efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema or annotations, description lacks information on return value (e.g., boolean, list of errors), error handling, or prerequisites. A validation tool should clarify what the output represents.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It adds meaningful context: scad_code is 'OpenSCAD source code string' and material is 'Optional material ID (e.g., pla, petg)'. However, it could specify allowed material IDs or format more precisely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states validation of OpenSCAD parameters against material design limits and gives specific examples. It distinguishes from siblings like validate_openscad_code (which likely checks syntax) by focusing on parameter values vs material limits, but could explicitly name the sibling for clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage before compilation/printing ('Catches issues before compilation and printing'), but does not explicitly state when to avoid or mention alternative tools. With many sibling tools, more direct guidance would help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_shipping_addressA
Validate and normalize a shipping address for fulfillment orders.
Args:
street: Street address (e.g. "123 Main St").
city: City name.
country: ISO 3166-1 alpha-2 country code (e.g. "US", "GB", "DE").
state: State/province (recommended for US addresses).
postal_code: ZIP/postal code (validated per country format).
Checks required fields, validates postal codes per country (US ZIP,
Canadian postal, UK postcode), and returns warnings for missing optional
fields. Use the ``normalized`` address in the response when placing
fulfillment orders.
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | ||
| state | No | ||
| street | Yes | ||
| country | Yes | ||
| postal_code | No |
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 mentions checking required fields, validating postal codes, and returning warnings and a normalized address. However, it does not explicitly state if the tool has side effects (e.g., writes to a database) or if it is read-only, leaving some ambiguity.
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 reasonably concise with two short paragraphs. The 'Args:' section is useful but slightly redundant since the schema already lists parameters. It could be shorter, but it remains clear and organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately explains what the tool returns (warnings and normalized address). It covers the main behaviors like validation of postal codes and identification of missing optional fields. The context is sufficient for a validation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning to parameters beyond the input schema, which has 0% description coverage. For example, it specifies that country should be an ISO 3166-1 alpha-2 code and that state is recommended for US addresses. This compensates well for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it validates and normalizes a shipping address for fulfillment orders. The verb 'validate and normalize' combined with the resource 'shipping address' gives a specific and actionable purpose. It distinguishes from sibling tools like 'fulfillment_order' which creates orders, making this tool's role unique.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context by instructing to use the returned normalized address when placing fulfillment orders. It does not explicitly state when not to use or suggest alternatives, but the context is sufficient for most use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_audit_integrityA
Verify HMAC signatures on all safety audit log entries.
Checks each audit log row against its stored HMAC signature to detect tampering. Returns counts of valid, invalid, and total entries along with an overall integrity status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It correctly states the tool checks HMAC signatures and returns counts and status, implying a read-only operation. However, it does not explicitly confirm it is non-destructive or mention any prerequisites (e.g., access to audit logs). Some ambiguity remains about whether it modifies any state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two short sentences that immediately convey the purpose ('Verify HMAC signatures') and the outcome ('Returns counts...'). Every sentence adds value, and there is no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema), the description covers the essential aspects: what it does and what it returns. It lacks details on error handling, prerequisites, or how the integrity status is determined (e.g., boolean or string), but these are minor omissions for a straightforward verification tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, and schema coverage is 100% (since no parameters exist). According to the rubric, with 0 parameters the baseline is 4. The description does not need to add parameter information, and it correctly focuses on the tool's action and output.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Verify' and specifies the resource ('HMAC signatures on all safety audit log entries'). It distinguishes the tool as a security-focused audit verification, which is unique among many sibling tools that are about printing, design, and management.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives is provided. Given the large list of siblings, including tools like 'safety_audit' and 'export_audit_trail', the description should clarify that this tool specifically checks integrity via HMAC, not general auditing or export. The absence of such guidance reduces its helpfulness.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
visualize_modelA
Primary 3D preview tool — renders high-quality PNGs from multiple camera angles via OpenSCAD.
Universal visualization tool that works with ANY 3D file — STL, 3MF,
OBJ, or SCAD. Returns PNG images from 6 angles: isometric, front,
right, top, bottom, and back.
**Colored 3MF support:** Multicolor 3MF files (with per-face color
groups from BambuStudio, PrusaSlicer, or procedural textures) are
automatically rendered with per-face colors — no slicer needed to
see what the multicolor print will look like. Colorless 3MF and
STL/OBJ files render in uniform color via OpenSCAD as before.
Dark models get an adaptive lighter background for visibility.
Each view includes a ``quality_score`` and ``dark_material`` flag.
Use this BEFORE printing to verify the model looks correct from all
sides. Both agents and humans should review the output.
**When to use this vs other preview tools:**
- ``visualize_model`` — any file, 6 angles, universal (USE THIS ONE)
- ``preview_generated_model`` — after AI generation, includes bottom check
- ``render_model_preview`` — single angle, quick check
Args:
file_path: Path to an STL, 3MF, OBJ, or SCAD file.
angles: Optional subset of angles to render. Valid values:
``isometric``, ``front``, ``right``, ``top``, ``bottom``, ``back``.
Defaults to all 6.
width: Image width in pixels (default 800).
height: Image height in pixels (default 600).
color: Hex color for the model (e.g. ``"#F72323"`` for red).
Defaults to neutral grey. Pass the filament color to see
a realistic preview matching the printed result.
Ignored for colored 3MF files (per-face colors used instead).
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | ||
| width | No | ||
| angles | No | ||
| height | No | ||
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is highly transparent, detailing supported file types, the 6 camera angles, colored 3MF handling with per-face colors, adaptive background for dark models, and the inclusion of quality_score and dark_material flag in each view. It also explains that the color parameter is ignored for colored 3MF files.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with a summary, but it is relatively long. However, every sentence adds value, and markdown formatting improves readability. A slightly more compact version could be possible, but it is not overly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations or output schema, the description covers essential aspects: purpose, parameters, return information (quality_score, dark_material flag), and usage guidance. It lacks some details like performance characteristics or concurrency, but is complete enough for a preview tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Since the input schema has 0% description coverage, the description fully compensates by explaining each parameter: file_path (allowed formats), angles (valid values and default), width/height (defaults and units), and color (default, purpose, and behavior with colored 3MF).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Primary 3D preview tool — renders high-quality PNGs from multiple camera angles via OpenSCAD.' It also distinguishes itself from siblings by listing alternative tools and their specific use cases.
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 includes a dedicated 'When to use this vs other preview tools' section that explicitly compares visualize_model, preview_generated_model, and render_model_preview, providing clear guidance on when to use each tool. It also advises using it before printing to verify the model.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watch_printA
Start background monitoring of an in-progress print.
Launches a background thread that polls the printer state every
*poll_interval* seconds and captures webcam snapshots every
*snapshot_interval* seconds. Returns immediately with a
``watch_id`` that can be used with ``watch_print_status`` and
``stop_watch_print``.
The watcher finishes automatically when:
1. **Print terminal state** -- completed, failed, cancelled, or offline.
2. **Snapshot batch ready** -- *max_snapshots* images collected.
3. **Timeout** -- the print has not finished within *timeout* seconds.
4. **cancel_at_percent** -- if set (> 0), auto-cancels when completion
reaches or exceeds this percentage. Use this for test prints,
calibration runs, or any case where you want to stop at a specific
progress point without writing a polling script.
**Camera ground-truth**: each captured snapshot is hashed and compared to
the previous frame. If the camera shows the print bed changing but
telemetry reports zero progress, the snapshot is flagged with
``telemetry_mismatch: true`` so agents can detect broken monitoring
scripts and fall back to visual inspection.
Args:
printer_name: Target printer. Omit for the default printer.
snapshot_interval: Seconds between snapshot captures (default 60).
max_snapshots: Return after this many snapshots (default 5).
timeout: Maximum seconds to monitor (default 7200 = 2 hours).
poll_interval: Seconds between state polls (default 15).
stall_timeout: Seconds of zero progress before declaring stall
(default 600 = 10 min). Set to 0 to disable stall detection.
save_to_disk: Save snapshots as JPEG files to
``~/.kiln/timelapses/<watch_id>/`` and persist metadata to the
database. Use ``list_snapshots`` to query saved frames after
the print completes (default False).
cancel_at_percent: Auto-cancel when completion >= this value.
Set to 0 (default) to disable. Example: ``cancel_at_percent=50``
cancels the print as soon as it reaches 50%.
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No | ||
| printer_name | No | ||
| save_to_disk | No | ||
| max_snapshots | No | ||
| poll_interval | No | ||
| stall_timeout | No | ||
| cancel_at_percent | No | ||
| snapshot_interval | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and excels by detailing the background thread behavior, polling and snapshot intervals, termination conditions, and telemetry mismatch detection. All behavioral traits are clearly disclosed.
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 well-structured with a clear opening sentence, bullet-pointed termination conditions, and a detailed Args list. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, background monitoring, multiple termination scenarios, telemetry mismatch), the description covers all necessary aspects. It mentions the return value (watch_id) and companion tools, making it self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, but the description provides rich explanations for all 8 parameters, including defaults, effects, and examples (e.g., cancel_at_percent). This adds critical meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Start background monitoring of an in-progress print,' providing a specific verb and resource. It clearly distinguishes the tool from siblings like watch_print_status and stop_watch_print by mentioning them as complementary and detailing the monitoring lifecycle.
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 explains when to use this tool (monitoring a print in progress) and lists termination conditions including a use case for cancel_at_percent (test prints, calibration). However, it lacks explicit 'when not to use' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watch_print_statusA
Check the current status of a background print watcher.
Returns progress, collected snapshots, and whether the watcher
has finished.
By default returns immediately with the current state. Set
``block_until_event=True`` to wait server-side until a new
event fires on the bus matching this watcher's printer (or
``timeout`` seconds elapse). Loop a single blocking call
instead of polling every N seconds — roughly 50× fewer tool
invocations on a multi-hour print.
Args:
watch_id: The watcher ID returned by ``watch_print``.
block_until_event: If True, block until a matching event
arrives on the event bus or ``timeout`` is reached.
Default False (return immediately, current behaviour).
timeout: Maximum seconds to block when
``block_until_event=True``. Default 60. MCP clients
should set their tool-call timeout comfortably above
this (e.g. 120s) so the call returns cleanly instead
of being killed mid-wait.
event_types: Optional list of event-type strings to wait
on. Defaults to
``["vision.alert", "print.terminal", "recovery.completed"]``
— failure alerts, print completion, and recovery
terminal state (so a recovered-and-resumed print
doesn't leave the watcher hanging if no
``print.terminal`` fires for the failed attempt).
Pass a custom list to wait on different events
(e.g. ``["vision.frame_captured"]`` to wake on
every snapshot).
When ``block_until_event=True`` and an event arrives, the
return payload includes ``events_received`` (list of events)
alongside the watcher's current status. On timeout the
payload includes ``timed_out: True``. If the watcher has
already finished before subscription, the call returns
immediately with ``watcher_already_finished: True``.
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No | ||
| watch_id | Yes | ||
| event_types | No | ||
| block_until_event | No |
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 thoroughly discloses blocking behavior, timeout, event types, and return payload variations (events_received, timed_out, watcher_already_finished). It also explains default event types and their significance.
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 well-structured with a summary line, followed by parameter descriptions, then behavioral details. It is thorough but could be slightly more concise; however, every sentence adds value, and the structure aids readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description thoroughly explains return values and special cases (events_received, timed_out, watcher_already_finished). With 4 parameters, all are explained in detail. The description is complete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description extensively documents each parameter: 'watch_id' is linked to 'watch_print', 'block_until_event' is explained with default and effect, 'timeout' includes MCP client timeout suggestion, and 'event_types' lists defaults and gives example usage. It adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Check the current status of a background print watcher.' It also specifies the outputs (progress, collected snapshots, finished status) and distinguishes it from sibling tools like 'watch_print' which starts the watcher, and 'stop_watch_print' which stops it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use blocking vs polling: 'Loop a single blocking call instead of polling every N seconds — roughly 50× fewer tool invocations on a multi-hour print.' It explains default behavior and the effect of 'block_until_event', but does not explicitly state when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webcam_streamB
Control the MJPEG webcam streaming proxy.
Args:
printer_name: Target printer. Omit for the default printer.
action: One of ``"start"``, ``"stop"``, or ``"status"``.
port: Local port for the stream server (default 8081).
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | ||
| action | No | status | |
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description offers minimal behavioral insight. It does not disclose side effects, permissions needed, or whether operations are destructive (e.g., stopping a stream).
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 brief and front-loaded with purpose, followed by a clear argument list. Every sentence adds value, 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?
Without an output schema, the description does not explain what the tool returns (e.g., status info, success/failure). It also omits prerequisites or side effects, leaving the agent uncertain about the tool's full behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries full burden. It explains printer_name (target printer, omit for default), action (one of start/stop/status), and port (default 8081), adding meaningful context beyond types and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool controls an MJPEG webcam streaming proxy, with explicit actions (start, stop, status). This distinguishes it from sibling tools, none of which relate to webcam streaming.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, nor when not to use it. The description implies it's for controlling streaming, but does not explicitly state prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wrap_gcode_as_3mfA
Wrap raw PrusaSlicer G-code in a Bambu-compatible 3MF (Bambu Lab only).
Bambu printers require the proprietary BambuStudio start/end sequences
(motor enable, AMS load, extrusion calibration) to function correctly.
This tool takes PrusaSlicer G-code output and packages it into a 3MF
that the printer will accept.
Args:
gcode_path: Absolute path to a PrusaSlicer ``.gcode`` file on the
local filesystem. The file must have been sliced with
``--use-relative-e-distances`` and empty start/end G-code.
hotend_temp: Hotend temperature in °C (default 220 for PLA).
bed_temp: Bed temperature in °C (default 65 for PLA).
filament_type: Filament type string — ``"PLA"``, ``"PETG"``,
``"ABS"``, etc.
source_3mf_path: Optional path to a source 3MF to copy
thumbnails and geometry from.
num_filaments: Number of filaments (>1 for multi-color prints).
filament_colors: List of hex color strings per filament
(e.g. ``["#898989FF", "#161616FF"]``).
filament_types: List of filament type strings per filament
(e.g. ``["PLA", "PLA"]``).
thumbnail_path: Optional path to a PNG image to embed as the
3MF thumbnail (shown on the printer's display).
stl_path: Optional path to the source STL file. When provided,
a thumbnail is auto-generated from the model geometry via
OpenSCAD (512x512, shown on the Bambu printer screen).
Returns a dict with ``output_path`` pointing to the generated 3MF.
Use ``upload_file()`` to send it to the printer, then ``start_print()``
to begin printing.
| Name | Required | Description | Default |
|---|---|---|---|
| bed_temp | No | ||
| stl_path | No | ||
| gcode_path | Yes | ||
| hotend_temp | No | ||
| resume_mode | No | ||
| filament_type | No | PLA | |
| num_filaments | No | ||
| filament_types | No | ||
| thumbnail_path | No | ||
| filament_colors | No | ||
| source_3mf_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that the tool adds proprietary BambuStudio start/end sequences, and mentions the return value (dict with output_path). It does not explicitly mention file creation or potential side effects, but the core behavior is transparently described.
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 moderately concise. It front-loads the purpose and prerequisites, then lists parameters in a structured way. A few sentences could be trimmed, but it is well-organized and each parameter gets a clear line. No wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (11 params, no output schema, no annotations), the description covers prerequisites, parameter details, return value, and post-usage steps. It lacks information on error handling, validation, or file size limits, but it provides enough for an agent to use the tool correctly in most cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides docstring-style explanations for 10 of the 11 parameters, including defaults and examples for some. The missing param is 'resume_mode' (a boolean). Overall, it adds significant value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Wrap raw PrusaSlicer G-code in a Bambu-compatible 3MF (Bambu Lab only).' It specifies the verb (wrap), resource (raw PrusaSlicer G-code), and target (Bambu-compatible 3MF), distinguishing it from all sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use this tool (for PrusaSlicer G-code intended for Bambu printers) and prerequisites (file must have -use-relative-e-distances and empty start/end G-code). It also provides next steps (upload_file() and start_print()). However, it does not explicitly state when not to use or mention alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
34 tool updates
v1.3.1- Removed
cancel_job - Changed
cancel_print1 field changed- added
Input schema / properties / printer_nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Printer Name" +}
- Added
cancel_queued_job - Added
clear_printer_error - Changed
contribute_community_print1 field changed- added
Input schema / properties / geometric_signature_v2Added value: +{ + "default": "", + "title": "Geometric Signature V2", + "type": "string" +}
- Changed
estimate_print_time1 field changed- added
Input schema / properties / materialAdded value: +{ + "default": "", + "title": "Material", + "type": "string" +}
- Changed
find_similar_prints1 field changed- added
Input schema / properties / geometric_signature_v2Added value: +{ + "default": "", + "title": "Geometric Signature V2", + "type": "string" +}
- Changed
fleet_submit_job1 field changed- added
Input schema / properties / idempotency_keyAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Idempotency Key" +}
- Changed
get_community_insight1 field changed- added
Input schema / properties / geometric_signature_v2Added value: +{ + "default": "", + "title": "Geometric Signature V2", + "type": "string" +}
- Changed
get_joint_recommendation1 field changed- added
Input schema / properties / matingAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Mating" +}
- Changed
get_model_print_history5 fields changed- added
Input schema / properties / file_hash / defaultAdded value: +"" - added
Input schema / properties / geometric_signatureAdded value: +{ + "default": "", + "title": "Geometric Signature", + "type": "string" +} - added
Input schema / properties / geometric_signature_v2Added value: +{ + "default": "", + "title": "Geometric Signature V2", + "type": "string" +} - added
Input schema / properties / model_pathAdded value: +{ + "default": "", + "title": "Model Path", + "type": "string" +} - removed
Input schema / requiredRemoved value: -[ - "file_hash" -]
- Added
hand_back_printer - Added
list_printer_variants - Changed
pause_print1 field changed- added
Input schema / properties / printer_nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Printer Name" +}
- Changed
predict_print_settings1 field changed- added
Input schema / properties / geometric_signature_v2Added value: +{ + "default": "", + "title": "Geometric Signature V2", + "type": "string" +}
- Changed
preflight_check1 field changed- added
Input schema / properties / printer_nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Printer Name" +}
- Changed
print_plate_object1 field changed- added
Input schema / properties / printer_nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Printer Name" +}
- Changed
printer_status2 fields changed- added
Input schema / properties / detailAdded value: +{ + "default": "full", + "title": "Detail", + "type": "string" +} - added
Input schema / properties / printer_nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Printer Name" +}
- Added
publish_print_twin - Added
rebuild_design - Changed
record_print_dna1 field changed- added
Input schema / properties / geometric_signature_v2Added value: +{ + "default": "", + "title": "Geometric Signature V2", + "type": "string" +}
- Changed
record_print_outcome1 field changed- added
Input schema / properties / print_errorAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Print Error" +}
- Changed
repair_mesh1 field changed- added
Input schema / properties / weld_toleranceAdded value: +{ + "default": "", + "title": "Weld Tolerance", + "type": "string" +}
- Changed
repair_mesh_advanced1 field changed- added
Input schema / properties / weld_toleranceAdded value: +{ + "default": "", + "title": "Weld Tolerance", + "type": "string" +}
- Changed
resume_print2 fields changed- added
Input schema / properties / forceAdded value: +{ + "default": false, + "title": "Force", + "type": "boolean" +} - added
Input schema / properties / printer_nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Printer Name" +}
- Changed
retry_print_with_fix1 field changed- added
Input schema / properties / preview_tokenAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Preview Token" +}
- Changed
route_print_job4 fields changed- removed
Input schema / properties / material / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / material / defaultRemoved value: -null - added
Input schema / properties / material / typeAdded value: +"string" - changed
Input schema / requiredPrevious value: -[ - "file_path" -]New value: +[ + "file_path", + "material" +]
- Added
select_printer_variant - Changed
set_temperature1 field changed- added
Input schema / properties / printer_nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Printer Name" +}
- Changed
slice_and_print1 field changed- added
Input schema / properties / preview_tokenAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Preview Token" +}
- Changed
start_monitored_print1 field changed- added
Input schema / properties / preview_tokenAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Preview Token" +}
- Changed
start_print1 field changed- added
Input schema / properties / printer_nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Printer Name" +}
- Changed
submit_job1 field changed- added
Input schema / properties / idempotency_keyAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Idempotency Key" +}
- Changed
upload_file1 field changed- added
Input schema / properties / printer_nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Printer Name" +}
25 tool updates
v1.3.0- Changed
analyze_printability2 fields changed- added
Input schema / properties / materialAdded value: +{ + "default": "pla", + "title": "Material", + "type": "string" +} - added
Input schema / properties / printer_idAdded value: +{ + "default": "", + "title": "Printer Id", + "type": "string" +}
- Changed
analyze_warping_risk1 field changed- added
Input schema / properties / printer_idAdded value: +{ + "default": "", + "title": "Printer Id", + "type": "string" +}
- Changed
check_printer_material_compatibility4 fields changed- removed
Input schema / properties / material / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / material / defaultRemoved value: -null - added
Input schema / properties / material / typeAdded value: +"string" - changed
Input schema / requiredPrevious value: -[ - "printer" -]New value: +[ + "printer", + "material" +]
- Changed
check_printer_material_support4 fields changed- removed
Input schema / properties / material_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / material_id / defaultRemoved value: -null - added
Input schema / properties / material_id / typeAdded value: +"string" - changed
Input schema / requiredPrevious value: -[ - "printer_id" -]New value: +[ + "printer_id", + "material_id" +]
- Changed
contribute_community_print1 field changed- added
Input schema / properties / job_idAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Job Id" +}
- Changed
design_advisor1 field changed- added
Input schema / properties / materialAdded value: +{ + "default": "", + "title": "Material", + "type": "string" +}
- Changed
generate_model1 field changed- added
Input schema / properties / materialAdded value: +{ + "default": "", + "title": "Material", + "type": "string" +}
- Removed
get_brand_filament_profile - Changed
get_model_print_history1 field changed- added
Input schema / properties / materialAdded value: +{ + "default": "", + "title": "Material", + "type": "string" +}
- Changed
get_post_processing_guide1 field changed- added
Input schema / properties / goalAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Goal" +}
- Changed
get_print_diagnostic4 fields changed- removed
Input schema / properties / symptom / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / symptom / defaultRemoved value: -null - added
Input schema / properties / symptom / typeAdded value: +"string" - changed
Input schema / requiredPrevious value: -[ - "material" -]New value: +[ + "material", + "symptom" +]
- Removed
get_printer_design_capabilities - Removed
get_printer_intelligence - Removed
get_upgrade_url - Changed
import_step_file1 field changed- changed
Input schema / properties / output_format / defaultPrevious value: -"stl"New value: +"auto"
- Removed
list_brand_filament_profiles - Removed
list_printer_design_profiles - Changed
prepare_ai_model_for_print1 field changed- changed
Output schema / (root)Previous value: -{ - "additionalProperties": true, - "title": "prepare_ai_model_for_printDictOutput", - "type": "object" -}New value: +null
- Changed
recommend_material2 fields changed- added
Input schema / properties / on_hand_onlyAdded value: +{ + "default": false, + "title": "On Hand Only", + "type": "boolean" +} - added
Input schema / properties / printer_idAdded value: +{ + "default": "", + "title": "Printer Id", + "type": "string" +}
- Changed
record_print_outcome1 field changed- added
Input schema / properties / determined_byAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Determined By" +}
- Changed
register_printer1 field changed- added
Input schema / properties / baudrateAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Baudrate" +}
- Changed
repair_mesh1 field changed- added
Input schema / properties / close_holesAdded value: +{ + "default": false, + "title": "Close Holes", + "type": "boolean" +}
- Changed
rotate_model1 field changed- changed
Output schema / (root)Previous value: -{ - "additionalProperties": true, - "title": "rotate_modelDictOutput", - "type": "object" -}New value: +null
- Added
trim_serve_processes - Changed
troubleshoot_print_issue4 fields changed- removed
Input schema / properties / symptom / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / symptom / defaultRemoved value: -null - added
Input schema / properties / symptom / typeAdded value: +"string" - changed
Input schema / requiredPrevious value: -[ - "material" -]New value: +[ + "material", + "symptom" +]
4 tool updates
v1.2.0- Added
kiln_signin - Added
kiln_signin_poll - Added
set_fan - Changed
troubleshoot_printer3 fields changed- added
Input schema / properties / hms_codeAdded value: +{ + "default": "", + "title": "Hms Code", + "type": "string" +} - added
Input schema / properties / symptom / defaultAdded value: +"" - changed
Input schema / requiredPrevious value: -[ - "printer_id", - "symptom" -]New value: +[ + "printer_id" +]
464 tool updates
v0.1.0- First observed
acquire_printer_lock - First observed
activate_license - First observed
add_assembly_interface - First observed
add_assembly_part - First observed
add_interception_rule - First observed
add_mesh_chamfer - First observed
add_mesh_fillet - First observed
add_safety_profile - First observed
add_spool - First observed
ams_status - First observed
analyze_design_requirements - First observed
analyze_generation_feedback - First observed
analyze_mesh_geometry - First observed
analyze_model_geometry - First observed
analyze_non_manifold_edges - First observed
analyze_print_failure - First observed
analyze_print_failure_smart - First observed
analyze_print_file - First observed
analyze_print_snapshot - First observed
analyze_printability - First observed
analyze_scad_code - First observed
analyze_structural_risks - First observed
analyze_warping_risk - First observed
annotate_print - First observed
apply_decoration - First observed
apply_design_reinforcements - First observed
arrange_parts_on_plate - First observed
assess_load_bearing - First observed
audit_original_design - First observed
auto_arrange_parts_on_plate - First observed
auto_color_by_height - First observed
auto_color_by_region - First observed
auto_orient_model - First observed
await_generation - First observed
await_print_completion - First observed
backup_database - First observed
bed_level_status - First observed
boolean_mesh_op - First observed
browse_models - First observed
build_generation_prompt - First observed
build_material_overrides - First observed
build_parametric_prompt - First observed
cache_design - First observed
cache_design_with_source - First observed
cache_model - First observed
calibrate_direct - First observed
cancel_job - First observed
cancel_print - First observed
cancel_print_recovery - First observed
cancel_print_service_order - First observed
cancel_queued_jobs - First observed
cancel_split_plan - First observed
center_model_on_bed - First observed
cfs_status - First observed
check_ambient_conditions - First observed
check_assembly_clearances - First observed
check_autonomy - First observed
check_firmware_status - First observed
check_material_environment - First observed
check_material_match - First observed
check_material_sufficiency - First observed
check_multi_material_pairing - First observed
check_my_tier - First observed
check_orientation - First observed
check_print_health - First observed
check_print_readiness - First observed
check_printer_health - First observed
check_printer_material_compatibility - First observed
check_printer_material_support - First observed
check_step_support - First observed
clean_agent_memory - First observed
clear_emergency_stop - First observed
client_cost_report - First observed
cloud_sync_configure - First observed
cloud_sync_now - First observed
cloud_sync_status - First observed
community_stats - First observed
compare_material_properties - First observed
compare_mesh_versions - First observed
compare_print_options - First observed
compare_renders - First observed
compile_scad - First observed
complete_print_recovery - First observed
compose_assembly_parts - First observed
compose_models - First observed
compose_multicolor_3mf - First observed
compose_part_from_primitives - First observed
configure_sso - First observed
confirm_action - First observed
confirm_print_recovery - First observed
connect_provider_account - First observed
consumer_onboarding - First observed
contribute_community_print - First observed
create_assembly - First observed
create_print_service_order - First observed
create_project - First observed
cross_section_view - First observed
database_status - First observed
decorate_surface - First observed
decoration_info - First observed
decoration_quota_status - First observed
delete_agent_note - First observed
delete_cached_model - First observed
delete_file - First observed
delete_shipping_profile - First observed
delete_webhook - First observed
design_advisor - First observed
design_improvement_plan - First observed
design_to_gcode_pipeline - First observed
detect_mesh_pockets - First observed
detect_print_failure - First observed
diagnose_mesh - First observed
diagnose_print_failure_live - First observed
diff_design_versions - First observed
discover_printers - First observed
donate_info - First observed
download_and_upload - First observed
download_generated_model - First observed
download_model - First observed
emergency_status - First observed
emergency_stop - First observed
emergency_trip_input - First observed
encryption_status - First observed
estimate_adaptive_time_savings - First observed
estimate_before_design - First observed
estimate_cost - First observed
estimate_material_cost - First observed
estimate_mesh_print_time - First observed
estimate_mesh_weight - First observed
estimate_price - First observed
estimate_print_cost_from_mesh - First observed
estimate_print_progress - First observed
estimate_print_time - First observed
estimate_structural_load - First observed
estimate_support_material - First observed
estimate_supports - First observed
estimate_timeline - First observed
export_adaptive_slicer_config - First observed
export_audit_trail - First observed
export_model_3mf - First observed
export_safety_profile - First observed
extract_file_metadata - First observed
extract_model_from_3mf - First observed
extract_plate_object - First observed
failure_history - First observed
find_design_templates - First observed
find_material_match - First observed
find_material_substitute - First observed
find_printers_with_material - First observed
find_provider_capacity - First observed
find_similar_prints - First observed
find_slicer - First observed
fingerprint_model - First observed
firmware_resume_print - First observed
firmware_status - First observed
first_layer_status - First observed
fleet_analytics - First observed
fleet_job_status - First observed
fleet_status - First observed
fleet_status_by_site - First observed
fleet_submit_job - First observed
fleet_utilization - First observed
force_print_oversize - First observed
forecast_material_consumption - First observed
fulfillment_alerts - First observed
fulfillment_cancel - First observed
fulfillment_materials - First observed
fulfillment_order - First observed
fulfillment_order_status - First observed
fulfillment_quote - First observed
generate_adaptive_slicing_plan - First observed
generate_and_print - First observed
generate_from_template - First observed
generate_model - First observed
generate_model_from_image - First observed
generate_model_with_provider - First observed
generate_print_certificate - First observed
generate_template_variations - First observed
generate_texture - First observed
generation_feedback_loop_status - First observed
generation_status - First observed
get_active_material - First observed
get_adaptive_plan_summary - First observed
get_agent_context - First observed
get_autonomy_level - First observed
get_bed_mesh - First observed
get_best_material_substitute - First observed
get_brand_filament_profile - First observed
get_cached_design - First observed
get_cached_model - First observed
get_community_insight - First observed
get_compatible_materials - First observed
get_design_source - First observed
get_design_template_info - First observed
get_design_version - First observed
get_feedback_loop_status - First observed
get_filament_status - First observed
get_fleet_material_summary - First observed
get_fulfillment_quote_cached - First observed
get_interception_history - First observed
get_interception_status - First observed
get_joint_recommendation - First observed
get_material - First observed
get_material_consumption_history - First observed
get_material_design_profile - First observed
get_material_info - First observed
get_material_properties - First observed
get_material_purchase_urls - First observed
get_material_recommendation - First observed
get_material_slicing_profile - First observed
get_model_print_history - First observed
get_post_processing_guide - First observed
get_print_diagnostic - First observed
get_printer_design_capabilities - First observed
get_printer_insights - First observed
get_printer_intelligence - First observed
get_recovery_gcode_steps - First observed
get_recovery_plan - First observed
get_recovery_session_status - First observed
get_recovery_statistics - First observed
get_restock_suggestions - First observed
get_safety_profile - First observed
get_session_log - First observed
get_skill_manifest - First observed
get_slicer_profile - First observed
get_speed_profile - First observed
get_started - First observed
get_tool_position - First observed
get_upgrade_url - First observed
health_check - First observed
hollow_mesh_model - First observed
import_step_file - First observed
improve_generation_prompt - First observed
infer_print_settings - First observed
insert_into_scad - First observed
intercept_gcode_command - First observed
issue_preview_token - First observed
issue_shipping_confirmation_token - First observed
iterate_design - First observed
job_history - First observed
job_status - First observed
kiln_health - First observed
license_status - First observed
list_available_materials - First observed
list_brand_filament_profiles - First observed
list_cached_designs - First observed
list_cached_models - First observed
list_credentials - First observed
list_decorations - First observed
list_design_components - First observed
list_design_materials - First observed
list_design_templates - First observed
list_design_templates_catalog - First observed
list_design_versions - First observed
list_fleet_sites - First observed
list_generation_providers - First observed
list_interception_sessions - First observed
list_material_catalog - First observed
list_materials - First observed
list_model_categories - First observed
list_multi_material_addons - First observed
list_plate_objects - First observed
list_plugins - First observed
list_print_pipelines - First observed
list_printer_design_profiles - First observed
list_provider_capacity - First observed
list_published_models - First observed
list_safety_profiles - First observed
list_shipping_profiles - First observed
list_slicer_profiles - First observed
list_snapshots - First observed
list_spools - First observed
list_supported_materials - First observed
list_trusted_printers - First observed
list_webhooks - First observed
load_safety_interception_rules - First observed
lock_safety_profile - First observed
log_project_cost - First observed
manage_team_member - First observed
marketplace_diagnostics - First observed
marketplace_info - First observed
marketplace_status - First observed
match_design_components - First observed
match_design_requirements - First observed
merge_mesh_files - First observed
merge_multicolor_gcode - First observed
merge_stl - First observed
mesh_quality_scorecard - First observed
mirror_mesh_model - First observed
model_details - First observed
model_files - First observed
model_revenue - First observed
modify_scad_module - First observed
monitor_print - First observed
monitor_print_vision - First observed
multi_color_copies - First observed
multi_copy_print - First observed
multi_material_print - First observed
optimize_fleet_assignment - First observed
optimize_print_orientation - First observed
optimize_template_params - First observed
parse_scad_parameters - First observed
pause_print - First observed
pipeline_abort - First observed
pipeline_pause - First observed
pipeline_resume - First observed
pipeline_retry_step - First observed
pipeline_status - First observed
plan_assembly_split - First observed
plan_failure_recovery - First observed
plan_multi_copy_split - First observed
plan_print_recovery - First observed
plugin_info - First observed
predict_print_failure - First observed
predict_print_settings - First observed
preflight_check - First observed
prepare_ai_model_for_print - First observed
preview_generated_model - First observed
print_history - First observed
print_plate_object - First observed
print_service_quote - First observed
print_service_status - First observed
print_status_lite - First observed
printer_files - First observed
printer_snapshot - First observed
printer_stats - First observed
printer_status - First observed
printer_trend_analysis - First observed
printer_usage_summary - First observed
project_cost_summary - First observed
provider_job_status - First observed
publish_model - First observed
queue_summary - First observed
quick_adaptive_plan - First observed
recent_events - First observed
recommend_adhesion_settings - First observed
recommend_design_material - First observed
recommend_design_reinforcements - First observed
recommend_material - First observed
recommend_settings - First observed
record_print_dna - First observed
record_print_outcome - First observed
record_recovery_check - First observed
record_revenue - First observed
register_printer - First observed
register_webhook - First observed
release_printer_lock - First observed
remove_interception_rule - First observed
remove_mesh_floating_regions - First observed
remove_spool - First observed
render_model_preview - First observed
repair_mesh - First observed
repair_mesh_advanced - First observed
report_printer_overage - First observed
reprint_with_material - First observed
rescale_model - First observed
reslice_with_overrides - First observed
resolve_filament_profile - First observed
resolve_model_source - First observed
restart_server - First observed
resume_print - First observed
retrieve_credential - First observed
retry_print_with_fix - First observed
revenue_dashboard - First observed
rollback_design_version - First observed
rollback_firmware - First observed
rollback_printer_firmware - First observed
rotate_encryption_key - First observed
rotate_model - First observed
route_print_job - First observed
run_benchmark - First observed
run_calibrate - First observed
run_quick_print - First observed
run_reslice_and_print - First observed
safety_audit - First observed
safety_settings - First observed
safety_status - First observed
save_agent_note - First observed
save_decoration - First observed
save_design_version - First observed
save_print_checkpoint - First observed
save_shipping_profile - First observed
scale_mesh_to_fit - First observed
search_all_models - First observed
search_cached_models - First observed
search_design_templates - First observed
search_design_versions - First observed
search_material_catalog - First observed
search_models - First observed
send_gcode - First observed
set_autonomy_level - First observed
set_leveling_policy - First observed
set_material - First observed
set_printer_light - First observed
set_speed_profile - First observed
set_temperature - First observed
simplify_mesh_model - First observed
skip_print_objects - First observed
slice_and_estimate - First observed
slice_and_print - First observed
slice_model - First observed
smart_generate_from_template - First observed
smart_reprint - First observed
solve_template_constraints - First observed
splice_mesh_at_z - First observed
split_mesh_by_component - First observed
split_plan_status - First observed
sso_exchange_code - First observed
sso_login_url - First observed
sso_status - First observed
start_gcode_interception - First observed
start_monitored_print - First observed
start_print - First observed
start_print_recovery - First observed
start_printer_health_monitoring - First observed
step_file_info - First observed
stop_gcode_interception - First observed
stop_printer_health_monitoring - First observed
stop_watch_print - First observed
store_credential - First observed
submit_job - First observed
submit_provider_job - First observed
suggest_material_for_order - First observed
suggest_printer_for_job - First observed
suggest_spool_swaps - First observed
supported_shipping_countries - First observed
sync_provider_capacity - First observed
tax_estimate - First observed
tax_jurisdiction_lookup - First observed
tax_jurisdictions - First observed
thicken_mesh_walls - First observed
trigger_bed_level - First observed
troubleshoot_print_issue - First observed
troubleshoot_printer - First observed
trust_printer - First observed
tweak_and_compile_scad - First observed
unlock_safety_profile - First observed
untrust_printer - First observed
update_firmware - First observed
update_interception_telemetry - First observed
update_printer_firmware - First observed
update_printer_site - First observed
update_scad_parameter - First observed
upgrade_kiln - First observed
upload_file - First observed
upload_file_confirm - First observed
uptime_report - First observed
validate_and_prepare - First observed
validate_and_prepare_mesh - First observed
validate_assembly - First observed
validate_design_for_requirements - First observed
validate_gcode - First observed
validate_gcode_safe - First observed
validate_generated_mesh - First observed
validate_openscad_code - First observed
validate_print_quality - First observed
validate_scad_parameters - First observed
validate_shipping_address - First observed
verify_audit_integrity - First observed
visualize_model - First observed
watch_print - First observed
watch_print_status - First observed
webcam_stream - First observed
wrap_gcode_as_3mf
TDQS
Dozens of tools overlap so heavily that selection is genuinely ambiguous: run_quick_print/slice_and_print/run_reslice_and_print/print_plate_object all slice+print, eight-plus estimate_* variants split near-identical estimates, and families like validate_*/monitor_*/analyze_* each contain 5-10 near-synonyms. The many cross-referencing docstrings admit the problem rather than solve it, and kept deprecated aliases (print_status_lite, render_model_preview, repair_mesh_advanced) add further confusion. Even knowing the domain, an agent will routinely pick the wrong tool.
Mostly snake_case verb_noun style is used consistently (start_print, pause_print, list_webhooks, get_material, set_fan), and compound pipeline tools share understandable prefixes like run_/slice_/generate_. But the pattern is diluted by informal outliers (check_my_tier, hand_back_printer), near-duplicate ordering (firmware_status vs check_firmware_status), plural/singular variations (cancel_queued_job vs cancel_queued_jobs), and retained deprecated names. Recognizably the same language throughout, but with enough drift that a strict pattern can't be assumed.
468 tools is an overwhelming, unmanageable surface — roughly nine times the 50+ threshold that already indicates extreme excess. No single-purpose server can justify this many entry points; the real value is concentrated in the core print/slice/monitor/design workflows that would be well-served by 30-50 tools at most. This is the definition of a shotgun approach to tool surface.
The print → monitor → slice → design → order lifecycle is exhaustively (often redundantly) covered with almost no dead ends: every operation exists in at least one form and cross-references abound (submit_job → job_status → queue_summary is a complete example). However, this is completeness through accumulation rather than coherence, and huge swaths of the surface are effectively gated behind paywalls (Pro/Business/Enterprise), so the claimed coverage is often aspirational. The surface area is so broad that 'coverage' stops meaningful as a differentiator.
Maintenance
Related MCP Connectors
A registry of AI agent tools — MCP servers, APIs, CLIs, SDKs — kept current by automated ingestion.
3D print farm management for AI. Monitor, queue, and control prints on your SimplyPrint account.
One AI endpoint to search and call 22k+ MCP servers; 50+ hosted tools work instantly, no key.
31Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables interaction with 3D printer management systems through an MCP server, supporting STL file manipulation, slicing, and control of printers like OctoPrint, Klipper, Duet, and more.112230GPL 2.0
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that allows AI assistants to search for, explore, and retrieve 3D printable models from Thingiverse.6MIT
- AlicenseNot gradedqualityFmaintenance3D Printing MCP By OctoEverywhere36Apache 2.0
- 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.19-
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/codeofaxel/kiln'
If you have feedback or need assistance with the MCP directory API, please join our Discord server